为什么需要在此功能中使用[[]]?
描述:该函数反转字符串上的所有元素。
revStr :: [[Char]] -> [[Char]]
revStr ls = [reverse s | s <- ls]
答案 0 :(得分:6)
'a'
是Char
,一个字符。
['a','b','c']
是一个字符串,是Char
的列表。该列表也可以用双引号写成"abc"
。其类型可以写为String
或[Char]
。
["abc", "de"]
是一个字符串列表。可以将其类型写为[String]
或[[Char]]
(Char
的列表列表)。
我们可以继续说[["abc","de"], ["ef", "abc"]]
是[[String]]
(字符串列表)还是[[[Char]]]
。
您的revStr
的输入不是单个字符串,而是字符串列表,因此是[[Char]]
类型。它的输出还是一个字符串列表。
答案 1 :(得分:3)
Char
是一个字符,表示一个符号,例如'A'
,'$'
或'3'
[Char]
是一个字符列表,也称为[Char] = String
['A','$','3'] = "A$3"
)。
[[Char]]
是一个字符列表的列表(也[[Char]] = [String]
)。这实际上是["Hello", "World"]
revStr
反转提供的列表中的所有字符串(或[Char]
),因此其类型为字符串列表