Compiling GHC disabling the type checker

Josef Svenningsson josef.svenningsson at gmail.com
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.

http://www.augustsson.net/Darcs/Cayenne/

Cheers,

Josef

On 10/16/06, Simon Marlow <simonmarhaskell at gmail.com> 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 haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>


More information about the Glasgow-haskell-users mailing list