Haskell:一串"a"的尾巴

sim*_*ems 1 string haskell tail

为什么String只有一个字母的尾部是空字符串而不是空列表?

例:

tail "a"
= ""
Run Code Online (Sandbox Code Playgroud)

但您可以创建一个String作为:

'a' : []
= "a"
Run Code Online (Sandbox Code Playgroud)

所以我认为尾巴应该是空列表[].

如果你这样做的话

tail ["x"]
Run Code Online (Sandbox Code Playgroud)

然后你得到空列表[].

这有点令人困惑.

Ale*_*nov 9

因为空字符串Char s 的空列表,所以它只是show不同的:

Prelude> [] :: String
""
Run Code Online (Sandbox Code Playgroud)