列出基础知识
Haskell Prelude 中列表的类型构造函数是 []
。包含 Int
类型值的列表的类型声明如下:
xs :: [Int] -- or equivalently, but less conveniently,
xs :: [] Int
Haskell 中的列表是同构序列 ,也就是说所有元素必须属于同一类型。与元组不同,列表类型不受长度影响:
[1,2,3] :: [Int]
[1,2,3,4] :: [Int]
列表使用两个构造函数构造 :
-
[]
构造一个空列表。 -
(:)
,发音为cons
,将元素添加到列表中。将x
(a
类型的值)汇总到xs
(相同类型a
的值列表)上创建一个新列表,其头部 (第一个元素)是x
,尾部 (其余元素)是xs
。
我们可以定义简单列表如下:
ys :: [a]
ys = []
xs :: [Int]
xs = 12 : (99 : (37 : []))
-- or = 12 : 99 : 37 : [] -- ((:) is right-associative)
-- or = [12, 99, 37] -- (syntactic sugar for lists)
请注意,可以用于构建列表的 (++)
是以 (:)
和 []
的形式递归定义的。