Haskell中的[[char]]和[char]之间有什么区别



为什么我需要在此功能中使用[[]]?

描述:函数反向字符串上的所有元素。

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]),因此其类型是字符串列表

最新更新