-- 定义列表
let list = [1, 2, 3, 4, 5]
-- 在列表末尾添加元素
1 : list
-- 拼接列表
[1, 2, 3] ++ [4, 5, 6]
-- 下标访问, 相当于C语言中的list[2]
list !! 2
-- 嵌套列表
let list2 = [[1, 2, 3], [4, 5, 6]]
[7, 8, 9] : list2
list2 ++ [[7, 8, 9]]
-- 列表比较, 逐个比较每一位的值
[1, 2, 3] > [1, 2, 4]
-- 列表第一个元素
head [1, 2, 3]
-- 去掉列表第一个元素
tail [1, 2, 3]
-- 列表最后一个元素
last [1, 2, 3]
-- 去掉最后一个元素
init [1, 2, 3]
-- 列表长度
length [1, 2, 3]
-- 是否为空
null [1, 2, 3]
-- 翻转列表
reverse [1, 2, 3]
-- 返回列表前两个元素
take 2 [1, 2, 3]
-- 删除前两个元素
drop 2 [1, 2, 3]
-- 最大值和最小值
maximum [1, 2, 3]
minimum [1, 2, 3]
-- 返回总和与乘积
sum [1, 2, 3]
product [1, 2, 3]
-- 是否包含元素
1 `elem` [1, 2, 3]'
elem 1 [1, 2, 3]
-- 枚举所有数
[1..20]
['a'..'b']
[2, 4..20] --限定步长, 为..前两个数字的差
-- 从无限长的列表中取前20个数
take 20 [13, 26..]
take 20 (cycle [1, 2, 3]) -- 循环列表 [1,2,3,1,2,3...]
take 20 (repeat 5) -- 重复列表 [5,5,5,5...]
-- 得到长度为3的重复列表
replicate 3 10
-- 每个元素乘以2
-- <-表示去类表中的每一个元素, |前面的部分表示类表推导式的输出
[x*2 | x <- [1..10]]
-- 乘以2后大于等于12的元素
-- 在推导式后面添加谓词, 用逗号隔开
[x*2 | x ,_ [1..10], x*2 >= 12]
元祖中可以包含多种类型的元素, 使用前必须明确其长度
-- 定义元祖
-- 在这里pair和triple不是同一类型, 因为其长度不一样
-- 同一类型的元祖其长度和对应位置的元素类型必须一致
let pair = (1, 2)
let triple = (1, 2, 3)
-- 去一个序对作为参数, 返回其首项或尾项
fst (8, 11)
snd (8, 11)
-- 讲两个列表中的元素分别配对生成一个序对列表
-- 结果为 [(1, 4), (2, 5), (3, 6)]
zip [1, 2, 3] [4, 5, 6]