On Fri, 7 Jan 2011, Brandon S Allbery KF8NH wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 1/7/11 21:56 , Tony Morris wrote:
I am wondering if it possible to generalise catMaybes:
(Something f, SomethingElse t) => t (f a) -> t a
I have being doing some gymnastics with Traversable and Foldable and a
couple of other things from category-extras to no avail. Perhaps
someone else's brain is molded into an appropriate shape to reveal an
answer!
Looks to me like you want something like:
mtraverse :: (Traversable t, Monoid m) => t m -> m
mtraverse xs = traverse mappend (mempty:xs)
or possibly the same kind of thing using MonadPlus instead of Monoid.
This is not type-correct, isn't it?
Foldable.fold has the type, that you propose.
For me, the solutions of Dave Menendez make most sense: Generalize Maybe
to Foldable and List to MonadPlus.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe