.net - Mono 中的尾调用消除

标签 .net mono

我有一个大量使用尾递归(用 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/

相关文章:

c - 从另一个进程中加载​​的 dylib 读取数据字段

c# - 如何在 C# WebBrowser 上模拟 "open link on new window"?

c# - 在 .Net 中获取子字符串时,新字符串是引用相同的原始字符串数据还是复制数据?

c# - Xamarin TimeZoneInfo.GetUtcOffset 抛出 NotImplementedException

c# - 使用单一服务在 Linux 上测试 Windows DOTNET 服务

c# - XMLSerializer 正确序列化,但反序列化时抛出 TargetInitationException

f# - 使用自定义版本的 FSharp.Core.dll

c# - 仅显示基于配置的指定属性

c#检测文件是否写入完成

c# - 在 C#/.NET 中运行应用程序之前检查 DLL 是否真实/正确