2012-03-07 45 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