
Choosing the name `size` isn't free.
If we chose `length` then the existing code continues to work, code that
was hiding it on import continues to hide it and you don't get conflicts.
Picking 'size' is compatible with common practice, but means a ton of
modules would break.
Given the two solutions, one that doesn't break anything and one that does,
with negligible differences between them otherwise, I'd prefer the one that
causes the least amount of pain.
-Edward
On Thu, Sep 18, 2014 at 5:37 PM, David Feuer
To go along with Herbert Valerio Riedel's moving functions from Foldable and Traversable to Prelude, I realized that `null` and `size` make sense for all Foldables; Reid W. Barton noted that these can have optimized implementations for many containers. He also noted that scanl1 and scanr1 make sense for general Traversables. I therefore propose:
Add `null` and `size` to the Foldable class. Default implementations:
null = foldr (\_ _ -> False) True
size = foldl' (\acc _ -> acc+1) 0
Add `scanl1` and `scanr1` to the Traversable class. Default implementations are a little less simple.
David
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries