是否可以使用foldl而不是foldr来实现过滤器?

Mic*_*ent 3 haskell functional-programming

是否可以使用foldl而不是foldr来实现过滤器?如果是这样,请轻轻解释您的实施.

ham*_*mar 9

使用差异列表:

filter' :: (a -> Bool) -> [a] -> [a]
filter' p xs = foldl (\k x -> if p x then k . (x:) else k) id xs []
Run Code Online (Sandbox Code Playgroud)

  • `filter'甚至[1 ..]`.`foldl` _never_可以在输入无限列表时产生任何东西. (3认同)