Cost of Overloading vs. HOFs

John Meacham john at
Fri May 4 20:21:33 EDT 2007

On Fri, May 04, 2007 at 05:06:10PM -0700, Conal Elliott wrote:
> Cool.  You know which types to consider because jhc is a whole-program
> compiler?

Yes. though, i have since redone the back end so there is no technical
reason for it to be whole program any more, you can just benefit from
more optimizations that way. The old backend required global knowledge
to compile at all.

> Given the whole program, why not monomorphize, and inline away all of the
> dictionaries?

Well that is the thing, there are no dictionaries at all, the only extra
arguments passed in are the types so,

f :: forall a . (Foo a, Baz a, Bar a Int, Bred a) => a -> a

still is only passed the single hidden argument of 'a' since a case on
it will determine what method to use.

(+) a x y = case a of
        Int -> plusInt x y
        Float -> plusFloat x y

and so forth. a here is a type, of kind '*'.

since the method lookup is done explicitly via the case statement, it
can be optimized via standard transformations in nice ways.


> - Conal
> On 5/4/07, John Meacham <john at> wrote:
> >
> >On Fri, May 04, 2007 at 03:07:41PM -0700, Conal Elliott wrote:
> >> Does anyone know what became of Dictionary-free Overloading by Partial
> >> Evaluation <>?  Is it
> >> impractical for some reason?
> >
> >jhc also uses a dictionary free approach, doing a case directly on the
> >type parameter.
> >
> >The nice thing about this is that _all_ methods can be determined by a
> >single case evaluation, because finding out the right instance for any
> >method will determine the right instance for all other methods too for a
> >given type. The standard case-of-known-value optimization takes care of
> >later scrutinizations (method lookups) on the same type.
> >
> >        John
> >
> >
> >--
> >John Meacham - ⑆⑆john⑈
> >_______________________________________________
> >Glasgow-haskell-users mailing list
> >Glasgow-haskell-users at
> >
> >

> -- 
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at

John Meacham - ⑆⑆john⑈

More information about the Glasgow-haskell-users mailing list