2013-11-20 4 views
0

나는 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) 

을 ...하지만 아마 두 순회하지 않습니다.

+6

http://www.haskell.org/hoogle/?hoogle=(a+-%3E+Bool)+-%3E+%5Ba%5D+-%3E+(%5Ba%5D%2C+%5Ba%5D)' 파티션'기능? – dorchard

+0

'break'만이 가장 길게 매치되는 접두어로 나뉩니다. – fho

+0

@Florian 항목이 3 개 있으며, 모두 체크하십시오 (힌트 파티션은 3 번째입니다) – jozefg

답변

12

partition 기능을 원합니다.

+0

너무 빨라요. +1 그래도 – jozefg

+0

아아아 ... 너무 쉬웠다. 나는 Foldable을 사용하여 그것을 구현했고'Data.List'를 체크하지 않았다 ... – fho

관련 문제