为CLR实现功能语言(或者,关于F#实现的论文)

Nec*_*tem 3 compiler-construction clr lambda f# functional-programming

有谁知道关于F#编译器实现的任何好文章?我正在尝试为针对CLR的简单函数语言生成CIL代码,但我正在努力解决几个方面问题.

功能语言和CIL之间的差异使得很难生成良好类型的CIL代码.我有通过类型擦除工作的解决方案,但我更愿意找到一种方法来生成CIL代码,该代码反映(至少在某种程度上)我的源语言的Hindley-Milner类型系统(例如,通过生成泛型类).根据MS和Mono F#编译器生成的代码判断,他们设法实现了这一目标!

Tom*_*cek 9

关于F#实现的学术论文不多 - 虽然编译器是开源的,但如果你想了解一些具体的细节,你可以探索源代码.(顺便说一下:Mono中提供的F#编译器基于开源版本,因此它与Visual Studio中提供的F#编译器基本相同).

唯一相关的学术出版物是Don Syme的论文ILX:扩展.NET Common IL for Functional Language Interoperability.阅读非常有趣 - 它讨论了如何扩展IL以便更容易地编译函数式语言.在封面下,F#编译器的初始版本编译为此扩展IL(ILX),然后将其转换为普通IL.从那时起,细节可能已经发生了变化,但核心原则将是相同的.

  • 对于一般的函数式语言,我还建议Simon Peyton-Jones"实现功能语言":http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/ (4认同)