Erlang列表创建

Kem*_*lah 1 erlang list

为什么以下两个可以创建列表的表达式在Erlang中返回不同的结果?

> ["A" | []]
// returns ["A"]
> [[] | "A"]
// returns [[], 65]
Run Code Online (Sandbox Code Playgroud)

我期待第二个表达式返回与第一个表达式相同的结果.谁能解释为什么会这样?

jco*_*ado 8

要正确理解其工作原理,请记住所有这些表达式都遵循以下模式:

[head | tail]
Run Code Online (Sandbox Code Playgroud)

where head是单个元素,tail是另一个列表.

还要注意字符串是字符列表,即"A"实际上等于[65].

因此,在第一种情况下,创建一个头部"A"和尾部的列表[],并按预期转变为["A"].

然而,在第二种情况下,头部[]和尾部"A"是相等的[65].因此,结果是head element([])加上tail(65)中的所有元素.