String 是否有一个简单的函数来生成字符列表的字符串?
我想从字符列表中生成一个字符串[Lettre] 比如说,, ['1','2','3','W','5','5','W','3'] 应打印为1、2、3、W、5、5、W、3 现在,我使用String 是否有一个简单的函数来生成字符列表的字符串?,string,list,haskell,char,String,List,Haskell,Char,我想从字符列表中生成一个字符串[Lettre] 比如说,, ['1','2','3','W','5','5','W','3'] 应打印为1、2、3、W、5、5、W、3 现在,我使用 data Lettre = Steen Char makeString :: [Lettre] -> String makeString [] = "" makeString [Steen(x)] = x:[] makeString (Steen(x):xs) = (x:", ") ++ makeString
data Lettre = Steen Char
makeString :: [Lettre] -> String
makeString [] = ""
makeString [Steen(x)] = x:[]
makeString (Steen(x):xs) = (x:", ") ++ makeString xs
但我觉得这可能更容易
有没有一个简单的函数,比如toString?我尝试使用一些我知道的函数,但在我的代码中似乎不起作用,所以我一直使用makeString
非常感谢所有能够帮助我的人:给定一个字符列表,您可以使用intersperse,但它只允许使用单个字符分隔符
> "(" ++ intersperse ',' "123W55W3" ++ ")"
"(1,2,3,W,5,5,W,3)"
对于多字符分隔符,如,可以使用插入,但需要的是字符串列表,而不是字符列表
解决方案是将每个字符提升为一个字符串,然后使用插入
我假设输入是一个实际的[Char]/String值;如果你有更复杂的字符包装器,比如
newtype Lettre = Steen Char
从您的尝试中可以推断,请使用
makeString :: [Lettre] -> String
makeString xs = "(" ++ intercalate ", " [[x] | Steen x <- xs] ++ ")"
字符串已经是Haskell中的字符列表。这只是一个类型别名。别担心,我看我误解了你的问题。是否要以特定方式格式化字符串,在每个字符和周围的括号之间使用逗号?但是我不知道Steen是什么,或者Lettre它是Char的类型别名吗?嘿,谢谢你的回答,但是当Char在列表中时我该怎么做呢?type String=[Char];foo只是['f','o','o']的语法糖。事实上,intersperse::a->[a]->[a]和interlate::[a]->[[a]]->[a]是在Data.List中定义的,并且处理字符串,因为字符串只是一个字符列表。嘿,谢谢你的回答。遗憾的是,代码告诉我,它无法将预期的类型“[Char]”与实际的类型“Char”匹配。这里的困难之处在于,字符在列表中。那部分只是给了我一个错误
makeString :: [Lettre] -> String
makeString xs = "(" ++ intercalate ", " [[x] | Steen x <- xs] ++ ")"