【发布时间】:2017-12-20 14:32:03
【问题描述】:
这是通过foldl 连接的无用案例,纯属教育(对我而言):
foldl (\xs x -> xs ++ [x]) [1,2] [11,12,13]
[1,2,11,12,13]
有没有办法使用组合而不是 lambda 更紧密地打包它?
【问题讨论】:
-
foldl ((. return) . (++))。但最好使用flip (foldr (:))。 -
谢谢!那么多
foldr我已经想通了 :) 。我一直在摸索。 -
如果您关心性能,请知道
foldl通常效率很低。foldl'更好,但仅应在结果类型较小时使用(例如单个Int)。foldr也可以,前提是折叠函数是非严格的。 -
@WillemVanOnsem 如果我们仍然要使用
(++),我们可以将foldl (\xs x -> ...)替换为(++),避免折叠。 -
谢谢,但不,我不在乎效率。只是涂鸦,我正在学习。
标签: haskell function-composition