繁体   English   中英

如何将字符的嵌套列表转换为字符串Haskell

[英]How to convert a nested list of Chars to a String Haskell

我有一个简单的问题,尽管Char的List似乎等效于String ,但它们在功能上并不相同。 如果我有一个嵌套列表Char S型, [[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[Char]的类型同义词。 String的定义是

type String = [Char]

type关键字表示它是类型的同义词。 类型同义词始终可以与定义为的类型互换。

您可以在GHCi中看到以下内容(请注意,Haskell不允许强制转换):

ghci> let test :: [Char];   test = "abc"
ghci> test :: String
"abc"
ghci> :t (test :: [Char]) :: String
(test :: [Char]) :: String :: String

当我尝试声明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定义与base已经定义并由Prelude导出的String定义冲突。 删除您的定义,并使用已经存在的定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM