列出基础知识

Haskell Prelude 中列表的类型构造函数是 []。包含 Int 类型值的列表的类型声明如下:

xs :: [Int]    -- or equivalently, but less conveniently,
xs :: [] Int

Haskell 中的列表是同构序列 ,也就是说所有元素必须属于同一类型。与元组不同,列表类型不受长度影响:

[1,2,3]   :: [Int]
[1,2,3,4] :: [Int]

列表使用两个构造函数构造

  • [] 构造一个空列表。

  • (:),发音为 cons,将元素添加到列表中。将 xa 类型的值)汇总到 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)

请注意,可以用于构建列表的 (++) 是以 (:)[] 的形式递归定义的。