我有一个函数,旨在将字符串组合在一个列表中,在每个字符串之间添加一个分隔符,并使用 foldl 输出单个字符串。这是我所拥有的以及该功能的一些预期行为——它不起作用,我不确定为什么。
-- | `sepConcat sep [s1,...,sn]` returns `s1 ++ sep ++ s2 ++ ... ++ sep ++ sn`
--
-- >>> sepConcat "---" []
-- ""
--
-- >>> sepConcat ", " ["foo", "bar", "baz"]
-- "foo, bar, baz"
--
-- >>> sepConcat "#" ["a","b","c","d","e"]
-- "a#b#c#d#e"
sepConcat :: String -> [String] -> String
sepConcat sep [] = ""
sepConcat sep (x:xs) = foldLeft f base l
where
f a x = a ++ sep ++ x
base = ""
l = xs