灰姑娘的功能在哪里?

时间:2013-11-20 16:13:11

标签: haskell

我刚写了一个小函数,因为我在Hackage上找不到它,但我很确定它必须在那里而我却找不到它。有人知道它是否存在于某个地方吗?

我告诉你:

cinderella :: (a -> Bool) -> [a] -> ([a], [a])
cinderella f = foldr (\x (a,b) -> if f x then (x:a,b) else (a,x:b)) ([],[])

相当于:

filterFilter f l = (filter f l, filter (not . f) l)

...但可能不会进行两次遍历。

1 个答案:

答案 0 :(得分:12)

您需要partition功能。