为什么我需要在此功能中使用[[]]?
描述:函数反向字符串上的所有元素。
revStr :: [[Char]] -> [[Char]]
revStr ls = [reverse s | s <- ls]
'a'
是 Char
,一个字符。
['a','b','c']
是一个字符串,一个 Char
列表。此列表也可以使用双引号写为"abc"
。它的类型可以写为String
或[Char]
。
["abc", "de"]
是字符串列表。它的类型可以写为[String]
或[[Char]]
(Char
的名单)。
我们可以继续,说[["abc","de"], ["ef", "abc"]]
是[[String]]
(列表的列表)或[[[Char]]]
。
您的revStr
将输入不是单个字符串,而是字符串列表,因此[[Char]]
类型。它的输出再次是字符串列表。
-
Char
是一个角色,意思是一个符号,例如'A'
,'$'
或'3'
-
[Char]
是字符列表,也称为字符串(Note[Char] = String
),例如['A','$','3'] = "A$3"
-
[[Char]]
是字符列表的列表(也是[[Char]] = [String]
)。这本质上是诸如["Hello", "World"]
之类的字符串列表
revStr
在提供的列表中逆转所有字符串(或[Char]
),因此其类型是字符串列表