Haskell中的单引号与双引号

Haskell中的单引号与双引号,haskell,Haskell,考虑: ghci> :t 'a' 'a' :: Char ghci> :t "a" "a" :: [Char] 为什么对单引号和双引号的处理不同,这很重要吗?它们的解释不同,因为它们就是这样(这就是语言的定义)。这很重要,因为Char和[Char]不是一回事。除此之外,我不知道你想问什么。这就像C/C++/C#/Java和其他编程语言一样。单引号表示单字符,双引号表示字符数组(字符串) 在Haskell中,'c'是单个字符(Char),而“c”是字符列表([Char]) 您可以将其

考虑:

ghci> :t 'a'
'a' :: Char
ghci> :t "a"
"a" :: [Char]

为什么对单引号和双引号的处理不同,这很重要吗?

它们的解释不同,因为它们就是这样(这就是语言的定义)。这很重要,因为
Char
[Char]
不是一回事。除此之外,我不知道你想问什么。

这就像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]

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

可能需要注意的是
:info String
打印出
类型String=[Char]
,这样您就可以清楚地看到
字符串
类型是如何定义的。