On 31-May-2002, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
General remarks about targetting .NET from GHC.
* There is no reason in principle why one can't write a back end for GHC to generate .NET IL.
* Generating *verifiable* IL is noticeably harder: you have to take much more care; to deal with parametric polymorphism you need Generic IL, which isn't "out" yet;
You don't _need_ Generic IL. You can deal with parametric polymorphism by translating polymorphic types to "System.Object".
and even then, higher kinded type variables are a serious problem.
I think System.Object helps here too.
Being verifiable almost certainly requires some runtime checked type casts, which hurt performance -- and reducing them to a minimum complicates the compiler.
It's certainly true that being verifiable is likely to cost some performance. But I don't think it would be difficult to implement. For the Mercury compiler's .Net back-end, there's a --verifiable option which controls whether the generated IL code is verifiable or not. -- Fergus Henderson <fjh@cs.mu.oz.au> | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.