我有一个大量使用尾递归(用 F# 编程)的 .NET 4.0 应用程序。它在 .NET VM 上运行良好,但在 Mono-3.0.1 上用完堆栈。
我试过用 mono --optimize=tailc
运行但这似乎并没有改变任何东西。
有没有办法强制单声道消除尾音?
有没有办法增加单声道的最大堆栈大小?
最佳答案
最近有一个非常相似的问题,提供了有用的答案:Stack size under Mono
正如 Robert Harvey 在评论中已经指出的那样,Mono 对 F# (bug 476785: Tail call support in F#) 的尾调用支持已中断/不完整。解决此问题的方法是 on Mono's runtime ongoing projects list .
可以使用 System.Threading.Thread
增加堆栈大小构造函数或在 PE header 中。 System.Threading.Thread
方式does not work in Mono , 尽管。要更改 PE,您可能会 need MS Visual Studio ,因为它的 editbin.exe /stack
可能没有其他选择.
关于.net - Mono 中的尾调用消除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617071/