9

こんなもの欲しい

splitBy pred list = ( filter pred list, filter (not . pred) list )

しかし、1回のパスで。

4

1 に答える 1

15

partitionあなたはからの関数を探していますData.List

partition :: (a -> Bool) -> [a] -> ([a], [a])

foldを使用してうまく実装できます。

splitBy pred = foldr f ([], []) 
    where f x ~(yes, no) = if pred x then (x : yes, no) 
                                    else (yes, x : no)
于 2013-02-19T23:52:59.300 に答える