darcs patch: Make toList a member of Foldable
Ross Paterson
ross at soi.city.ac.uk
Tue Apr 27 19:30:15 EDT 2010
On Wed, Apr 28, 2010 at 12:21:58AM +0100, Ross Paterson wrote:
> On Wed, Apr 28, 2010 at 12:53:27AM +0200, Eelis van der Weegen wrote:
> > Even with such an optimal foldr, the generic toList would still
> > reconstruct the whole list, which would still be O(n) instead of O(1), no?
>
> The definition in Data.Foldable is
>
> toList :: Foldable t => t a -> [a]
> toList t = build (\ c n -> foldr c n t)
>
> For lists, this Data.Foldable.foldr should be inlined to Data.List.foldr.
For NonEmptyList this should become
toList t = build (\ c n -> c h (Data.List.foldr c n t))
I'd expect the rest of the steps to still apply, but these RULES are tricky.
More information about the Libraries
mailing list