Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 是否有一个简单的函数来生成字符列表的字符串?_String_List_Haskell_Char - Fatal编程技术网

String 是否有一个简单的函数来生成字符列表的字符串?

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

我想从字符列表中生成一个字符串[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 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] ++ ")"