2012-03-22 15 views

Odpowiedz

33

najpierw spojrzeć na tego typu, że trzeba:

Prelude> :t \p xs -> (filter p xs, filter (not . p) xs) 
\p xs -> (filter p xs, filter (not . p) xs) 
    :: (a -> Bool) -> [a] -> ([a], [a]) 

Hoogle is your friend:

Prelude> :hoogle (a -> Bool) -> [a] -> ([a], [a]) 
Prelude break :: (a -> Bool) -> [a] -> ([a], [a]) 
Prelude span :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List break :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List partition :: (a -> Bool) -> [a] -> ([a], [a]) 
Data.List span :: (a -> Bool) -> [a] -> ([a], [a]) 

teraz wypróbować funkcje:

Prelude> break odd [1..10] 
([],[1,2,3,4,5,6,7,8,9,10]) 
Prelude> span odd [1..10] 
([1],[2,3,4,5,6,7,8,9,10]) 
Prelude> import Data.List 
Prelude Data.List> partition odd [1..10] 
([1,3,5,7,9],[2,4,6,8,10]) 
+3

+1 za pokazanie, jak znaleźć to samemu. –

+2

Kto przygotuje stronę "Pozwól mi to zrobić dla Ciebie"? –

+2

Oto jak uzyskać komendę ': hoogle' w ghci: http://www.haskell.org/haskellwiki/Hoogle#GHCi_Integration – amindfv

0

Myślę, że chcesz Data.List.partition np.

partition (>2) [1,2,3,4,5] 

skutkuje ([3,4,5], [1,2])