清单

Erlang 中的列表是零个或多个 Erlang 项的序列,实现为单链表。列表中的每个元素可以是任何类型的术语(任何数据类型)。

1> [1,2,3].
[1,2,3]
2> [wow,1,{a,b}].     
[wow,1,{a,b}]

列表的头部是列表的第一个元素。

列表的尾部是列表的其余部分(没有头部)。它也是一个清单。
你可以使用 hd/1tl/1 或匹配 [H|T] 来获取列表的头部和尾部。

3> hd([1,2,3]).
1
4> tl([1,2,3]).
[2,3]
5> [H|T] = [1,2,3].
[1,2,3]
6> H.
1
7> T.
[2,3]

将元素添加到列表中

8> [new | [1,2,3]].
[new,1,2,3]

连接列表

9> [concat,this] ++ [to,this].
[concat,this,to,this]

字符串

在 Erlang 中,字符串不是单独的数据类型:它们只是表示 ASCII 或 Unicode 代码点的整数列表:

> [97,98,99].
"abc"
> [97,98,99] =:= "abc".
true
> hd("ABC").
65

当 Erlang shell 打印一个列表时,它会尝试猜测你是否真的认为它是一个字符串。你可以通过调用 shell:strings(false) 来关闭该行为:

> [8].
"\b"
> shell:strings(false).
true
> [8].
[8]

在上面的示例中,整数 8 被解释为退格的 ASCII 控制字符,shell 认为它是字符串中的有效字符。