Should folds in containers package remain INLINE

Simon Peyton-Jones simonpj at
Fri May 4 11:01:57 CEST 2012

| I know one thing I run into a lot, especially with folds but also with
| other generic functions, is that what I really want is type class
| specialization. That is, at compile time inline the function enough to
| make the type class parameters static so that the methods can be inlined
| back into the generic function; and then at runtime do type-based
| dispatch to the specialized versions just like if you were looking up
| the instance record or doing SPECIALIZE lookup. The goal being to remove
| the indirect calls in inner loops, but in a particularly restricted way
| since instances are known at compile time and therefore code bloat will
| be limited (unlike, say, function or record arguments).

Can you give a concrete example.  It's hard to be certain but what you describe sounds like exactly what INLINABLE does.


More information about the Libraries mailing list