foldr の代わりに foldl を使用してフィルターを実装することは可能ですか? もしそうなら、あなたの実装を穏やかに説明してください。
質問する
649 次
3 に答える
9
差分リストの使用:
filter' :: (a -> Bool) -> [a] -> [a]
filter' p xs = foldl (\k x -> if p x then k . (x:) else k) id xs []
于 2012-11-23T19:34:37.643 に答える
2
これを思いついた:
myFilter p coll =
foldl step [] coll where
step acc e
| p e = acc ++ [e]
| otherwise = acc
リストの最後に 1 つの要素を挿入する必要があるため、あまり効率的ではありません。
于 2012-11-23T19:30:08.477 に答える