Haskell中[[Char]]和[Char]有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]是一个字符列表,也像[Char] = String一样也称为字符串(请注意['A','$','3'] = "A$3"
  • [[Char]]是字符列表的列表(也为[[Char]] = [String])。这实际上是一个字符串列表,例如["Hello", "World"]

[revStr反转提供的列表中的所有字符串(或[Char]),因此其类型为字符串列表

以上是关于Haskell中[[Char]]和[Char]有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章