Summary of containers patches
Simon Peyton-Jones
simonpj at microsoft.com
Fri Sep 24 07:35:19 EDT 2010
[beautiful quote marks, thank you]
| > Can you give some examples to back up this claim? I am skeptical
|
| I can look into it again after ICFP.
|
| I did spend some time trying to tease apart the performance
| improvements we got from inlining foldl'. From what I remember, the
| biggest gain from inlining is that the higher-order argument is known,
Ah yes! But that is *quite different* from specialising only on the *type*!
| foldl' :: (a -> b -> a) -> a -> [b] -> a
| foldl' = ...
| {-# SPECIALIZABLE foldl' #-}
|
| and then have foldl' be specialized in the client module at whatever
| type it's called at, but only once for each type (instead of once per
| call site).
For overloaded functions, that is precisely what I'm proposing.
For foldl' I think you will get no benefit from specialising on the type; only from specialising on the actual function passed. So in that case inlining probably really is the answer.
Simon
More information about the Libraries
mailing list