为什么JVM还不支持尾部调用优化?
两年后 does-the-jvm-prevent-tail-call-optimizations,似乎有一个 原型 实施和MLVM 将该功能列为“proto 80%”已有一段时间了。 Sun/Oracle 方面是…
生成 .tail IL 指令的简单 F# 代码是什么?
我希望看到 .tail IL 指令,但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环。我实际上是在猜测这一点,因为我不完全确定反射器中的循环…
Clojure 中的尾调用消除?
有人可以将这个 (plt) 方案代码重写为 Clojure 吗? (define (f n) (printf "(f ~a)~n" n) (g n)) (define (g n) (printf "(g ~a)~n" n) (h n)) (defi…
gcc -fPIC 似乎与优化标志混在一起
从这个问题开始: how-do- i-check-if-gcc-is-performing-tail-recursion-optimization,我注意到将 gcc 与 -fPIC 一起使用似乎会破坏这种优化。我正…
为什么 Clojure 在递归添加函数上比 Scala 快得多?
一位朋友给了我这个 Clojure 代码片段 (defn sum [coll acc] (if (empty? coll) acc (recur (rest coll) (+ (first coll) acc)))) (time (sum (range …
为了实现尾调用优化,jvm 必须牺牲什么?
人们说,除了没有尾部调用优化的限制之外,clojure 实现非常出色——这是 jvm 的限制,而不是 clojure 实现的限制。 http://lambda-the-ultimate.org/…
尾部调用优化有什么大不了的,为什么 Python 需要它?
显然,对于 Python 是否需要尾部调用优化 (TCO) 一直存在很大争议。 当有人向 Guido 发送了一份 SICP 副本时,事情就达到了紧要关头,因为他没有“明…
F# 中如何知道函数是否尾递归
我编写了以下函数: let str2lst str = let rec f s acc = match s with | "" -> acc | _ -> f (s.Substring 1) (s.[0]::acc) f str [] 如何知道 F# …