Haskell中的单引号和双引号

Mar*_*ace 7 haskell

考虑:

ghci> :t 'a'
'a' :: Char
ghci> :t "a"
"a" :: [Char]
Run Code Online (Sandbox Code Playgroud)

为什么不同地处理单引号和双引号,这是否重要?

Ove*_*Ove 16

这就像C/C++/C#/ Java和其他编程语言.单引号表示单个字符,双引号表示字符数组(字符串).

在Haskell中,'c'是一个单个字符(Char),"c"是一个字符列表([Char]).

您可以将其与整数和整数列表进行比较:

ghci> let a = 1
ghci> let b = [1,2,3]
ghci> :t a
a :: Integer
ghci> :t b
b :: [Integer]
Run Code Online (Sandbox Code Playgroud)

这很重要,因为必须区分单个元素和元素列表.您可以对简单元素执行不同的操作,也可以对列表执行不同的操作.

  • 也许需要注意的重要事项是`:info String`打印出`type String = [Char]`,这样就可以明确地看到`String`类型是如何定义的. (2认同)