Compiling GHC disabling the type checker

Josef Svenningsson josef.svenningsson at
Mon Oct 16 08:34:06 EDT 2006

FWIW, Lennart Augustsson's Cayenne compiler can compile to GHC
nowadays. It uses exactly this method of sprinkling coerce all over
the place to make GHC's typechecker happy.



On 10/16/06, Simon Marlow <simonmarhaskell at> wrote:
> Neil Mitchell wrote:
> > I would like to write a translator which takes a Haskell-like language
> > to GHC compilable Haskell. This Haskell-like language is not
> > explicitly typed, and cannot have types inferred for it (rank 2 types
> > may exist etc), however it is known that the program will not crash
> > with a type error. All case statements are well typed, i.e. case x of
> > {1 -> ..; True -> ...} will not happen, although types cannot be given
> > to the whole program.
> >
> > How does GHC react to a really large number of unsafeCoerce's? Is this
> > likely to destroy performance? Has anything like this been done
> > before? I know that LML was able to "turn off" the type checker, but I
> > guess GHC doesn't have such an option, because of its typed Core
> > language.
> There's one restriction that I know of: you should be careful not to cast a
> function value to a non-function type (except a polymorphic type), because the
> two have incompatible representations when it comes to seq and case.   And of
> course, you should never cast an unboxed value to a boxed type or vice versa.
> Apart from these, I think you should be fine to unsafeCoerce# away.
> Cheers,
>         Simon
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at

More information about the Glasgow-haskell-users mailing list