2017-02-21 98 views

回答

3

这是模式匹配和HOF的可爱组合。

ltos :: [String] -> String 
ltos [] = "" 
ltos (m:n) = foldl' (\a b -> a ++ "|" ++ b) m n 

可以使用列表作为起始串的第一元件,然后折叠在剩余的元素(添加它们中的每之间|)。

(我假设你错误签署了ltos)。

3

这里有一个办法:

foldl' (\acc x -> if (null acc) then acC++ x else acC++ "|" ++ x) [] ["a", "b", "c"] 

第一次累加器是空的,所以只是追加了第一个字符串从列表中。之后,在变量前追加分隔符。如果您运行scanl,你可以看到字符串正在修建如下:

["","a","a|b","a|b|c"]