【发布时间】:2015-10-13 22:24:49
【问题描述】:
我有一个简单的问题,虽然Chars 的列表似乎等同于Strings,但它们的功能并不相同。如果我有一个Chars 的嵌套列表,类型为[[Char]],我想将其转换为[String],我该怎么做?
当我尝试在 [[Char]] 上执行函数并将其视为字符串时,我得到:
Couldn't match expected type `([String] -> (Int, Int, Board)) -> t'
with actual type `[[Char]]'
当我尝试声明 type String = [[Char]] 我得到:
Ambiguous occurrence `String'
It could refer to either `Main.String', defined at Testing.hs:19:1
or `Prelude.String',
imported from `Prelude' at Testing.hs:16:1-14
(and originally defined in `GHC.Base')
【问题讨论】:
-
在功能上是一样的。
-
我试过这个,它返回
String是Ambiguous -
@anon
String已经在标准库中定义了,所以当你定义另一个String时,GHC 不确定要使用哪个(这就是这里的错误的意思)。 -
啊,那我该如何向编译器澄清我的意思是
String? -
@anon 定义
String并没有什么意义。字符串在概念上是字符列表,而不是字符列表列表。这也不符合您问题的第一部分(如果String是[[Char]]的同义词,那么[String]将不是[[Char]])。在普通的标准库版本中,[String]和[[Char]]已经是相同的并且可以相互互换。