2012-03-07 62 views
8

Mono(2.11)上尾部呼叫優化(TCO)實施的當前狀態是什麼?閱讀某處,需要修改所有代碼庫以使用callee-pops-arguments約定。這種變化的狀態是什麼? ARM/Linux端口在這個問題上是最新的嗎?單聲道(2.11)上F#尾呼優化的當前狀態是什麼?

謝謝!測試使用

let rec f a = f (a+1) 

它沒有崩潰 - -

+2

我想你可能想改變你的問題的標題 - 一般在Mono上工作的F#。你在問F#的一個特性 - 我授予的一個重要特性,但仍然只是F#的一部分。 – 2012-03-07 15:06:30

+0

我有一個解析器組合程序,可以在.NET上運行,但在Mono 2.10.8上失敗。將盡快在2.11上進行測試 – t0yv0 2012-11-30 17:10:55

回答

3

尾調用肯定對單的Linux上運行在Mono 2.10.2

UPDATE測試

測試與鏈接從布萊恩 - https://bugzilla.novell.com/show_bug.cgi?id=476785

儘管產生了.tail指令

它在單聲道2.10.2上崩潰
+1

F#編譯器將直接遞歸轉換爲循環。使用兩個相互遞歸的函數來測試。 – Brian 2012-03-07 07:54:07

+0

@布賴恩 - 檢查dissasembly - 你是正確的,你有沒有產生'.tail'指令 – 2012-03-07 08:43:30

+1

@JohnPalmer一個很好的例子程序:嘗試[這個例子](https://bugzilla.novell.com/show_bug.cgi? ID = 476785)。我認爲它在Mono 2.10中沒有被修復。 – pad 2012-03-07 09:26:46