我知道在Haskell中,有intercalate
函数可以连接两个列表。
intercalate ", " ["Hello", "world"]
会给:"Hello, world"
我正在尝试使用foldr
连接两个列表。
但由于我是Haskell的新手,我不确定如何做到这一点。
我相信这个函数应该是这样的:
inters n xs = foldr (\x acc -> x ++ str ++ acc) "" xs
这会得到结果:"Hello, world, "
最后还添加了逗号和空格。
如何使该功能只添加列表元素之间而不是末尾?
非常感谢任何帮助。
答案 0 :(得分:4)
您可以使用函数foldl1
和foldr1
:
foldl1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]
foldr1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]