λ [x*2 | x<-[1..10]]
[2,4,6,8,10,12,14,16,18,20]:: (Enum t, Num t) => [t]
解释一下,首先从 1 到 10 取出每一个元素然后 x 2 得到新的数组
[x | x<-[1,2,3],x `mod` 2 == 0]
[2]:: Integral t => [t]
我们读一读,我们先看 | 右边的代码会先执行,分隔筛选条件,如果熟悉事件流或者rxjs
let boomBangs xs = [ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x]
let result = boomBangs [7..13]
print result
读一读上面的代码,
- 首先我们 xs 为一个数组,从这里取 x 放入返回数组里
- odd 方法过滤为奇数
- 进行一此 map x < 10 元素 map 为 "BOOM" 其他映射为 "BANG!"
[ x | x <- [10..20], x /= 13, x /= 15, x /= 19]
[10,11,12,14,16,17,18,20]
看一下有了,有了上面介绍,这一个应该不难理解,从 10 - 20 取数据然后依次进行筛选,不等于 13 、15 和 19
[ x*y | x <- [2,5,10], y <- [8,10,11]]
[16,20,22,40,50,55,80,100,110]
这个代码其实也没啥,只不过就是多了一个元素