Various folds in the containers package

Duncan Coutts duncan.coutts at googlemail.com
Mon Jun 20 18:19:40 CEST 2011


On Thu, 2011-06-16 at 10:39 +0100, Jon Fairbairn wrote:
> Duncan Coutts <duncan.coutts at googlemail.com> writes:
> 
> > So I suggest all four folds. They are all useful and can all be
> > implemented efficiently.
> 
> For certain classes of operation ⓧ, a tree-fold
> 
> (( _ ⓧ _) ⓧ (_ ⓧ _))
> 
> gives better complexity. Is there room for that, or is it too
> difficult to decide what to do about the unbalanced parts?

That would be covered by the Foldable instance since Foldable provides 

fold :: (Data.Monoid.Monoid m) => t m -> m

which is exactly what you want. So we'd just want to provide a native
implementation of it (rather than getting the default defined in terms
of foldr).

Milan: so that's another good argument in favour of providing a Foldable
instance. (And also of having foldl' and foldr' as Foldable class
methods)

Duncan




More information about the Libraries mailing list