上次匿名函数的用法没理解透,弄2个例子复习下
元组传参会这样
map (\(a,b) -> a * b) [(1,2),(3,5),(6,3),(2,6),(2,5)]
和下面这种是等价的,区别是传参的方式不同
zipWith (\a,b -> a * b) [1,3,6,2,2] [2,5,3,6,5]
还有一个左折叠foldl 和 右折叠foldr,其实可以把map理解对列表的循环,而把fold理解成对列表的递归,结果是15
foldl (\acc x -> acc + x) 0 [1,2,3,4,5]
foldl (+) 0 [1,2,3,4,5]
$ 这个符号是什么? 由于这个符号在Haskell里面是运算最低优先级别,所以用来做函数调用符,其实就是可以省括号
f $ x = f x
** .是什么,Haskell里面这么多新运算符!! 其实是函数组合符号**
f . g = \x -> f (g x)
今天理解到这里吧,有时间再继续~~
网友评论