String 字符串并从Haskell中的列表中添加特殊字符

String 字符串并从Haskell中的列表中添加特殊字符,string,list,haskell,String,List,Haskell,在Haskell中,我使用过滤器从列表中删除一组数字。然而,我无法使它与这个特殊的情况下工作 我有一个字符串列表,如下所示: ["A","B","C","D","E","F","A","B","N"] 我想将[]和“串起来,因此最后一个字符串是(带空格): 像打印过滤器([)[“a”、“B”、“C”、“D”、“E”、“F”、“a”、“B”、“N”)这样的简单过滤器不应该删除[ 更新: 我仔细阅读后得出以下结果: let example = (concat (intersperse " " ["

在Haskell中,我使用过滤器从列表中删除一组数字。然而,我无法使它与这个特殊的情况下工作

我有一个字符串列表,如下所示:

["A","B","C","D","E","F","A","B","N"]
我想将
[]
串起来,因此最后一个字符串是(带空格):

像打印过滤器([)[“a”、“B”、“C”、“D”、“E”、“F”、“a”、“B”、“N”)这样的简单过滤器不应该删除
[

更新:

我仔细阅读后得出以下结果:

let example = (concat (intersperse " " ["A","B","C","D","E","F","A","B","N"]))
print example
-- this prints "A B C D E F A B N"
但是,当我使用此选项时:

-- where createalphs create a list of strings
-- and userinput is a string entered by the user 

let setofalph = ($ createalphs $ words userinput)
let example = (concat (intersperse " " setofalph))
print example
我得到这个错误

Couldn't match expected type `[[Char]]'
In the second argument of `intersperse', namely `setofalph'
In the first argument of `concat', namely
  `(intersperse " " setofalph)'
In the expression: (concat (intersperse " " setofalph))

UNOWDS
工作正常:

λ> unwords ["A","B","C","D","E","F","A","B","N"]
"A B C D E F A B N"
此外,
Data.List.intersperse
以及
concat
也会有所帮助

import Data.List

solution :: [String] -> String
solution =  concat . intersperse " "
这样做的目的是用
分隔列表中的每个值,然后将列表连接在一起

如果要使用“
”、“
”分隔,可以轻松更改上述功能:

solution :: [String] -> String
solution =  concat . intersperse ", "
以便:

λ> solution ["A","B","C","D","E","F","A","B","N"]
"A, B, C, D, E, F, A, B, N"
λ> putStrLn $ solution ["A","B","C","D","E","F","A","B","N"]
A, B, C, D, E, F, A, B, N
要将其置于IO的上下文中,请执行以下操作:

main = do
  x <- getLine
  putStrLn $ solution $ createalphs $ words x
main=do

x是
[“A”、“B”、“C”、“D”、“E”、“F”、“A”、“B”、“N”]
您的字符串,即
“[“A”、“B”、“C”、“D”、“E”、“F”、“A”、“B”、“N”]”
,还是字符串列表?您很不清楚。@gspr抱歉,这是一个字符串列表,所以“删除[]”没有任何意义!这只是列表的符号。您想将字符串列表转换为所有元素都以逗号分隔的字符串吗?您的
setofalph
接受这样的函数调用
let example=setofalph unwords
,您可能希望
let setofalph=createalphs$words userinput
而不是
let setofalph=($createalphs$words userinput)
问题是我从用户那里得到一个字符串,并将它传递给一个函数。例如,
print$createalphs$words userinput
将打印
[“a”、“B”、“C”、“D”、“E”、“F”、“a”、“B”、“N”]
。现在我想删除
“[]
@RainMan我已经做到了。为了让它更清楚,我在最后添加了IO函数。太好了,谢谢。一个简单的问题,是否可以像
让示例=($solution$createalphs$words x)putStrLn=“String is”++example
?执行此操作时,我收到一个错误为什么第一个
$
?您知道该函数的功能吗?如果不知道,我建议您查看一些介绍性材料(抱歉,没有链接,在电话上)。只需注意:
concat.intersperse x
=
插入x
main = do
  x <- getLine
  putStrLn $ solution $ createalphs $ words x