[Haskell] Re: Boxing (Day) Question

Ashley Yakeley ashley at semantic.org
Mon Dec 26 18:46:11 EST 2005

In article <155148271993.20051226161427 at HotPOP.com>,
 Bulat Ziganshin <bulatz at HotPOP.com> wrote:

> it's unserious :)  overloading of unboxed types must be resolved at
> compile time, as in C++ templates.

Why can't (->) that's been specialised to #4 -> #4 -> * just generate a 
function that takes an anonymous 4-byte quantity and returns an 
anonymous 4-byte quantity?

> Haskell polymorhism, based on using
> of type classes, oriented to run-time resolving of polymorphic usage,
> although SPECIALIZE/INLINE/RULES pragmas can optimize code, the
> program must remain correct without these pragmas and therefore
> overloading is limited to boxed types. aside of different sizes, boxed
> values carry dictionaries used to run-time resolving of overloaded
> functions. where unboxed value must hide this dictionary? :)

I thought functions receive dictionaries, rather than dictionaries being 
stored inside values? For instance:

  class C (x :: #4) where ...

  foo :: (C x) => x -> Bool
  foo x = ...

might be generate something like this:

  HsBool foo (CDict dict,int32 x) { ... }

> but i'm totally agree that we must have C++-like compile-time
> overloading in order to create fast programs

Ashley Yakeley, Seattle WA

More information about the Haskell mailing list