2011-11-03 27 views
3

有沒有人知道任何有關F#編譯器實現的優秀論文?我試圖爲CLR生成一個簡單的函數式語言的CIL代碼,但我正在努力處理幾個方面。爲CLR實現函數式語言(或者關於F#實現的論文)

函數式語言和CIL之間的差異使得很難生成良好類型的CIL代碼。我有通過類型擦除工作的解決方案,但我更願意找到一種生成CIL代碼的方法,它反映(至少在某種程度上)我的源語言的Hindley-Milner類型系統(例如,通過生成泛型類)。從MS和Mono F#編譯器生成的代碼判斷,它們設法實現了這一點!

+3

我不知道它是否足夠深入你,但[語言規範](http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html )解釋了翻譯了多少功能表單。 – Daniel

+3

也許實際的F#源代碼會有幫助嗎? http://blogs.msdn.com/b/dsyme/archive/2010/11/04/announcing-the-f-compiler-library-source-code-drop.aspx –

回答

9

關於F#實現的學術論文並不多 - 儘管編譯器是開源的,所以如果您想了解一些具體細節,您可以探索source code。 (順便說一句:Mono中提供的F#編譯器基於開源版本,因此它基本上與Visual Studio中提供的F#編譯器相同)。

唯一相關的學術刊物是唐Syme的論文ILX: Extending the .NET Common IL for Functional Language Interoperability。這是一本非常有趣的閱讀材料 - 它討論瞭如何擴展IL以使功能語言的編譯更容易。在封面之下,F#編譯器的初始版本被編譯爲這個擴展的IL(ILX),然後將其轉換爲普通的IL。從那時起,細節可能已經發生了變化,但核心原則將是一樣的。

+1

另請參閱http://fsharppowerpack.codeplex。 com/ – TrueWill

+4

對於一般的函數式語言,我也會推薦Simon Peyton-Jones的「Implementing Functional Languages」:http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/ –

+0

好的,所以我讀了Don Syme的論文,並且我把目標鎖定在了針對ILX的想法上。但是,我似乎無法找到下載/使用ILX彙編程序的任何資源。它包含在VS/Mono中嗎?它已被丟棄/是否有點腐爛? – Necrototem