如何将新的字符串元素添加到字符串列表?

时间:2019-11-12 17:01:19

标签: string list haskell

在我的作业中,我想编写一个将字符串添加到字符串列表中的函数,但是我不知道该怎么做。

我认为应该是这样的:

AddToLS :: [String] -> String -> [String]
AddToLS ls s = (ls : s)

但是此代码甚至无法编译。

它应该像这样工作:

AddToLS [] "one" =["one"]
AddToLS ["one"] "two" =["one","two"]
AddToLS ["one","two"] "there" =["one","two","there"]

1 个答案:

答案 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]