2017-05-02 148 views
-3

以下是haskell的理解,我不明白的是管道符號。這是什麼意思?它在這個功能中的作用是什麼?管道符號是什麼意思?

boomBangs xs = [ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x] 

ghci> let xxs = [[1,3,5,2,3,1,2,4,5],[1,2,3,4,5,6,7,8,9],[1,2,4,2,1,6,3,1,3,2,3,6]] 

ghci> [ [ x | x <- xs, even x ] | xs <- xxs] 

[[2,2,4],[2,4,6,8],[2,4,2,6,2,6]] 
+4

你的意思是「管道」?你有沒有閱讀關於理解的教程?任何體面的指南肯定會涵蓋這一點。 – Carcigenicate

回答

1

其列表解析的表達/語法。一個簡單的例子如下,

import Data.Char (toUpper) 
[toUpper c | c <- s] 

你傳遞一個字符串(字符列表),[S],「你好」,到發電機[C < - S],這饋送給S的每個字符左手錶達[toUpper c],建立一個新的列表。這個列表理解的結果將是「你好」。

+0

這個表示法很受數學集合表示法的啓發,參見https://wikimedia.org/api/rest_v1/media/math/render/svg/19e5efdbd0e7c51808d2a463128b2cdf2afb8ff4(圓環的定義)。 – epsilonhalbe