2017-02-21 97 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"]