-
StackOverflow 文件
-
Haskell Language 教程
-
清單
[a]
型別相當於 [] a
。
[]
構造空列表。
- 函式定義 LHS 中的
[]
,例如 f [] = ...
,是空列表模式。
x:xs
構造一個列表,其中元素 x
被新增到列表 xs
之前
f (x:xs) = ...
是非空列表的模式匹配,其中 x
是頭部,xs
是尾部。
f (a:b:cs) = ...
和 f (a:(b:cs)) = ...
是一樣的。它們是至少兩個元素列表的模式匹配,其中第一個元素是 a
,第二個元素是 b
,列表的其餘部分是 cs
。
f ((a:as):bs) = ...
與 f (a:(as:bs)) = ...
不同。前者是非空列表列表的模式匹配,其中 a
是頭部的頭部,as
是頭部的尾部,bs
是尾部。
f (x:[]) = ...
和 f [x] = ...
是一樣的。它們是恰好一個元素列表的模式匹配。
f (a:b:[]) = ...
和 f [a,b] = ...
是一樣的。它們是兩個元素列表的模式匹配。
f [a:b] = ...
是一個模式匹配,它只包含一個元素的列表,其中元素也是一個列表。a
是元素的頭部,b
是元素的尾部。
[a,b,c]
與 (a:b:c:[])
相同。標準列表表示法只是 (:)
和 []
建構函式的語法糖。
- 你可以使用
all@(x:y:ys)
將整個列表稱為 all
(或你選擇的任何其他名稱),而不是再次重複 (x:y:ys)
。