Or, when lists had a decent eliminator defined in the Prelude (just like maybe for Maybe and either for Either):
list :: b -> (a -> [a] -> b) -> [a] -> b list d _ [] = d list _ f (x:xs) = f x xs fromList = list [] we could write the alternate function like this: alt :: [a] -> [a] alt = list [] $ \a -> (a:) . list [] (const alt) -- Sebastiaan On Jun 6, 2010, at 4:46 PM, R J wrote: > What's the cleanest definition for a function f :: [a] -> [a] that takes a > list and returns the same list, with alternate items removed? e.g., f [0, 1, > 2, 3, 4, 5] = [1,3,5]? > > > The New Busy is not the old busy. Search, chat and e-mail from your inbox. > Get started._______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe