在我的作业中,我想编写一个将字符串添加到字符串列表中的函数,但是我不知道该怎么做。
我认为应该是这样的:
AddToLS :: [String] -> String -> [String]
AddToLS ls s = (ls : s)
但是此代码甚至无法编译。
它应该像这样工作:
AddToLS [] "one" =["one"]
AddToLS ["one"] "two" =["one","two"]
AddToLS ["one","two"] "there" =["one","two","there"]
答案 0 :(得分:5)
您想在最后添加一个字符串类型的元素,因此,您可以将该元素合并到一个列表中,并使用现有的(++)
函数:
(++) :: [a] -> [a] -> [a]
所以您必须将元素放入列表中,如下所示:
AddToLS ["one", "two"] "three"
将是:
["one", "two"] ++ ["three"]
但是您只能为字符串列表定义自己的concat
,如我所见,参数被翻转:
AddToLS :: [String] -> String -> [String]
addToLS = flip $ (++) . (:[])
等同于:
AddToLS :: [String] -> String -> [String]
addToLS ss s = ss ++ [s]