-
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)。