列出基礎知識
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)
請注意,可以用於構建列表的 (++)
是以 (:)
和 []
的形式遞迴定義的。