gpt4 book ai didi

f# - 什么推理导致 `Sequence expression containing recursive definition is compiled incorrectly`

转载 作者:行者123 更新时间:2023-12-01 10:35:43 25 4
gpt4 key购买 nike

问题Stack overflow despite tail call position but only in 64-bit导致发现一个bug在 F# 编译器中。

看完answer我很好奇导致发现错误的推理,因为我想更好地提高解决问题和理解 TCO 的技能。

最佳答案

我的推理是这样的:

在查看计算表达式时谈论“尾调用”可能会产生误导 - 一般来说,确实没有这样的事情(参见例如 this other answer 的一个相关讨论,尽管与序列 表达式)。

因此调用 gauss 本身不会溢出堆栈,只有迭代它的代码才能使其溢出。但是当我看到调用代码只是类似于 Seq.nth 时,这意味着几乎可以肯定存在编译器错误,因为“tail yield!ing”的模式"在序列表达式中应该得到优化(不确定这是否是规范的一部分,但我认为这是众所周知的)。因此,这只是一个查看初始复制的哪些部分是必要的情况。

用非递归定义替换原始代码中的循环使重现停止失败,删除模式匹配也是如此。我没有发现查看 IL 有帮助(在序列表达式的编译中涉及很多编译器生成的机制),我只是尝试在源代码级别最小化重现并根据经验测试行为。

关于f# - 什么推理导致 `Sequence expression containing recursive definition is compiled incorrectly`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com