列出基礎知識

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)

請注意,可以用於構建列表的 (++) 是以 (:)[] 的形式遞迴定義的。