On Sat, 8 Jan 2011, Conor McBride wrote:

Of course, there is an alternative generalisation.

[] and Maybe are both Foldable, hence so is their composition.

There's got to be a thing of type

collapse :: (Foldable f, Alternative a) => f x -> a x

which would do the job.

Nice! It would be

 collapse = Data.Foldable.foldr (\a b -> pure a <|> b) empty

and with transformers:Data.Functor.Compose (or the one from TypeCompose) we get

 catMaybes = collapse . Compose


Of course, anything which is both foldable and alternative
certainly has a function with the type of join.

 join = collapse . Compose

:-)

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to