haskell如何遍历
- 顺序
- 判断
- 循环
- 异常
上述四个操作时流程控制的常见操作,然而在haskell中是没有循环for这个关键字的,那么haskell时如何实现循环的呢?
递归
循环的平替最常见莫过于递归了,如下是一个为数组的每个数字+1
1 | addOne :: [Int] -> [Int] |
高阶函数
所谓高阶函数就是函数的抽象,函数既可以作为参数,也可作为返回值。
高阶函数的底层也是通过递归实现,关于遍历的高阶函数通常都会附加一些通用操作,如
- filter过滤元素: for + if
- map转换元素: for + return
- traverse碰到异常停止操作: for + throw
map
map函数接收两个参数
- 操作,本例中就是
+1 - 被操作对象,本例就是数组
1
2
3
4
5
6
7-- 冗余的写法如下
addOne :: [Int] -> [Int]
addOne array = map (+1) array
-- 省略参数的写法
addOne :: [Int] -> [Int]
addOne = map (+1)
函子Functor
Functor的作用就是将一个操作作用于容器内的元素,这个容器不局限于数组,写法是操作<$>容器
1 | -- 冗余的写法如下 |