Haskell中单引号和双引号的区别

10

请考虑以下内容:

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

为什么它会对单引号和双引号有不同的处理方式,这是否重要?
2个回答

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

这很重要,因为单个元素和元素列表之间必须有区别。您可以对简单元素执行不同的操作,并对列表执行不同的操作。


2
也许需要注意的重要事项是 :info String 会打印出 type String = [Char],这样你就可以明确地看到 String 类型是如何定义的。 - bheklilr

1
它们被解释为不同的东西,因为它们本来就是这样定义的(这就是语言的定义方式)。这很重要,因为 Char[Char] 不是同一件事。除此之外,我不确定你在问什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接