考虑:
ghci> :t 'a'
'a' :: Char
ghci> :t "a"
"a" :: [Char]
为什么不同地处理单引号和双引号,这是否重要?
答案 0 :(得分: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]
这很重要,因为必须区分单个元素和元素列表。您可以对简单元素执行不同的操作,也可以对列表执行不同的操作。
答案 1 :(得分:1)
它们的解释不同,因为它们只是(这就是语言的定义)。这很重要,因为Char
和[Char]
不是一回事。除此之外,我不确定你在这里要问的是什么。