That bar will be particularly hard to exceed in the presence of toList.
The theory of mconcat is that it should handle monoids that need to be summed in some special way. I don't know if anyone actually uses it so, however. Still, Reid is right that the circular dependency sets a very high bar.
On Aug 31, 2015 2:47 PM, "Reid Barton" <rwbarton@gmail.com> wrote:On Mon, Aug 31, 2015 at 1:54 PM, Fermin Reig <ferminreig@fastmail.fm> wrote:We could generalise:
mconcat:: [a] -> a
mconcat = foldr mappend memtpy
to:
mconcat:: Foldable t => t a -> a
mconcat = foldr mappend memtpy
-- even
-- mconcat = foldI don't understand the appeal of generalizing the type of a function when the generalization already exists; but in this case it's not a viable option anyways because mconcat is a class method of Monoid, and the definition of the Foldable class already refers to Monoid. Creating a circular dependency of Monoid on Foldable would be a headache best avoided.Regards,Reid Barton
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries