Why is partition no good list producer?

Jan Scheffczyk jan at informatik.unibw-muenchen.de
Wed Feb 25 13:52:05 EST 2004


> what you observe is possibly related to this:
>
> http://www.mail-archive.com/haskell@haskell.org/msg07508.html

Although I'm adressing purely the problem of runtime, you are probably 
right.
At least the implementation of partition is still defined in terms of 
foldr (from Data.List in ghc 6.2):

-- > partition p xs == (filter p xs, filter (not . p) xs)

partition               :: (a -> Bool) -> [a] -> ([a],[a])
{-# INLINE partition #-}
partition p xs = foldr (select p) ([],[]) xs

select p x (ts,fs) | p x       = (x:ts,fs)
                   | otherwise = (ts, x:fs)

Is the above strict version of partition more suitable for other 
optimizations than my partition/foldr case??

Cheers,
Jan



More information about the Glasgow-haskell-users mailing list