[Hat] defaulting (was: Program Compiles With GHC 6.6 but not Hat)

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Sat Nov 18 05:31:14 EST 2006


Thomas Davie <tatd2 at kent.ac.uk> writes:

>    This brings up something that's been niggling me for a while.  Why  
> can Hat not deal with defaulting?  Surely it could be handled by the  
> first stage of hat-trans being inserting explicit type signatures  
> based on the standard defaulting rules?

We made a deliberate design decision that hat-trans should be entirely
syntax-directed - it does not do type inference.  There are good reasons
for this decision.

  * In a well-designed language, you would not need type information for
    the tracing transformation.  And indeed, Haskell is so well designed
    that you do not, except for this one very small (but very annoying)
    instance.
  * Implementing type inference is difficult enough that we did not
    consider the effort worthwhile for the tiny benefit of being able to
    handle defaulting.
  * In order to be able to handle all the many experimental type-system
    extensions accepted by a compiler like ghc, hat-trans would need to
    replicate ghc's type inference as exactly as possible.  Given the
    number of papers written about this very topic, that would not be an
    easy task!  But in fact, apart from defaulting, it is only necessary
    to _syntactically_ transform type signatures (where they are used),
    and the ghc type system can infer the rest.

Regards,
    Malcolm


More information about the Hat mailing list