On Fri, 19 Sep 2014, Joachim Breitner wrote:
Slightly off topic: Wouldn’t it be nice if we would not have to have to
add these methods to provide optimized behavior, but rather have the
user write "sum . toList" or some other idiomatic code (maybe suggested
in the docs), and RULES provided by the container implementer would
reliable replace this with the optimized version. Wouldn’t help in
polymorphic code, but I doubt that much performance critical code is
polymorphic in the container.
But then he could simply provide a sumTree or sumSet or something
else... I should stop mumbling in circles.
I am also worried about extending the classes more and more. Where to stop? At which point the API will be stable? A way to optimize non-methods for certain instances would be nice. Unfortunately, it is not only hard to predict when RULES fire, a RULES based solution is also dangerous. If a default method implementation and an actual instance implementation do different things, that's ok. In contrast, if a function is replaced by different functionality via RULES, that's very bad.
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries