首页 文章

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

提问于
浏览
3

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

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

1 回答

  • 9

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

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

相关问题