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]有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

Haskell 对字符串中的字符进行递归

如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?

在Haskell中查找Char的Unicode脚本

haskell中的Double for循环

Haskell如何强制在haskell中评估Data.Map?

Haskell:如何将秒数漂亮地打印为日期和时间?