
[英]Problem differentiating between [Char] and [[Char]] in Haskell
[英]What is the difference between [[Char]] and [Char] in Haskell?
为什么我需要在这个函数中使用 [[ ]] ?
描述:函数反转字符串上的所有元素。
revStr :: [[Char]] -> [[Char]]
revStr ls = [reverse s | s <- ls]
'a'
是一个Char
,一个单一的字符。
['a','b','c']
是一个字符串,一个Char
列表。 这个列表也可以写成"abc"
,使用双引号。 它的类型可以写成String
或[Char]
。
["abc", "de"]
是一个字符串列表。 它的类型可以写成[String]
或[[Char]]
(list-of-lists-of- Char
)。
我们可以继续说[["abc","de"], ["ef", "abc"]]
是一个[[String]]
(list-of-lists-of-strings) 或[[[Char]]]
。
您的revStr
不是将单个字符串作为输入,而是将字符串列表作为输入,因此是[[Char]]
类型。 它的输出又是一个字符串列表。
Char
是一个字符,表示单个符号,如'A'
、 '$'
或'3'
[Char]
是一个字符列表,也称为 String(注意[Char] = String
),如['A','$','3'] = "A$3"
[[Char]]
是一个[[Char]]
列表列表,(也是[[Char]] = [String]
)。 这本质上是一个像["Hello", "World"]
这样的字符串列表 revStr
反转提供的 List 中的所有字符串(或[Char]
),因此其类型是字符串列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.