Haskell使用foldr添加两个列表

时间:2018-06-09 04:10:26

标签: haskell functional-programming

我知道在Haskell中,有intercalate函数可以连接两个列表。

intercalate ", " ["Hello", "world"]

会给:"Hello, world"

我正在尝试使用foldr连接两个列表。

但由于我是Haskell的新手,我不确定如何做到这一点。

我相信这个函数应该是这样的:

inters n xs = foldr (\x acc -> x ++ str ++ acc) "" xs

这会得到结果:"Hello, world, " 最后还添加了逗号和空格。

如何使该功能只添加列表元素之间而不是末尾?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

您可以使用函数foldl1foldr1

foldl1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]
foldr1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]