【发布时间】:2017-10-01 23:44:15
【问题描述】:
我需要转换 Char 的列表 例如:["a","b","c"] 成一个字符串 例如:“abc”
我尝试过的方法不起作用 - 它返回“模式解析错误”。 这是我的代码:
listToString :: [Char] -> String
listToString [] = ""
listToString x:xs = x ++ listToString xs
感谢您的帮助!
【问题讨论】:
-
String是[Char]的类型别名。无需转换。listToString = id -
从技术上讲,'x:xs' 是一个复合模式,应该放在括号中:
listToString (x:xs) = ...。此外,在此等式的右侧,您尝试连接单个Char和String。更不用说您的listToString实际上是慢速id为字符串定义的。 -
如果你愿意,你可以使用 id
-
一些术语修复/建议可帮助您学习和搜索解决方案。 1. 你说的是“一个字符数组”,但列表不是数组。 2 您说“Char 的前任列表:
["a","b","c"],但这是Strings 的列表 - Char 的列表将是['a', 'b', 'c'],它与"abc"的值相同,因为字符串是字符列表。3. 你的解析器错误只是缺少括号,请尝试listToString (x:xs) = ...。 4. 如果要将字符串列表转换为单个字符串,请使用concat。 -
由于上述混淆,我将投票结束。随意编辑问题。也许澄清 1. 你在谈论列表而不是数组。 2.你说的是字符串列表还是字符列表?