λ [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]
這個代碼其實也沒啥,只不過就是多了一個元素