实例方法中的 CIL (MSIL) 尾调用递归
背景:我正在为一个学校项目编写 .NET 编译器(与 C# 非常相似)。我当前尝试添加的功能之一是方法内的尾调用递归。 更多信息:在 CIL 中,“this”被…
是否可以使用序列尾部调用优化 f# 中的分组函数?
这是我的尝试,它没有优化尾部调用,因为我需要处理枚举器: let Group func seed (items : seq) = let rec some (i : IEnumerator) state = seq { tr…
是否可以使用延续来使 FoldRight 尾部递归?
以下博客文章展示了如何在 F# foldBack 中 可以使用连续传递风格进行尾递归。 在 Scala 中,这意味着: def foldBack[T,U](l: List[T], acc: U)(f: (T…
我的 scala 代码虽然通过了 @tailrec,但却没有获得 TCO 认证
我正在研究 scala TCO 并编写了以下代码, import scala.annotation.tailrec final def tailReccursionEx(str:String):List[String]={ @tailrec def d…
我如何转换这个 scala 函数以进行优化
使用模式匹配确定列表的 lat 元素的代码: @tailrec def last_rec[A](list : List[A]) : A = { list match { case (x :: Nil) => x case (_ :: xs) =>…
C# 不发出“尾部”是否存在技术原因? CIL指令?
可能的重复: 为什么.net/C#不消除尾递归? 以下 C# 代码: using System; namespace TailTest { class MainClass { public static void Main (strin…
为什么这个 F# 序列函数不是尾递归?
披露:这个问题出现在 FsCheck 中,FsCheck 是我维护的一个 F# 随机测试框架。我有一个解决方案,但我不喜欢它。此外,我不明白这个问题 - 它只是被规…
为什么这个 F# 内部函数不是尾递归的?
如果我使用非常高的初始 currentReflection 值调用此函数,则会出现堆栈溢出异常,这表明该函数不是尾递归的(正确吗?)。我的理解是,只要递归调用…
vs2010 c++尾调用优化
考虑以下代码: int fac_aux( int x, int res ) { if( x == 1 ) return res; else return fac_aux( x - 1, res * x ); } int fac( int x ) { return f…
选择加入 JVM 中基于每种语言的尾部调用支持?
虽然尾部调用优化看起来不会被添加为常见的优化技术,特别是在 Sun 被收购之后,但从技术上来说,让在 VM 上运行的语言自行决定编译器是否发出 是不可…
Scheme 中的递归函数总是尾部调用优化吗?
我读过一些关于Scheme 中的尾部调用优化的内容。但我不确定我是否理解尾调用的概念。如果我有这样的代码: (define (fac n) (if (= n 0) 1 (* n (fac …