能否有人将这段(plt)Scheme代码改写成Clojure?
(define (f n)
(printf "(f ~a)~n" n)
(g n))
(define (g n)
(printf "(g ~a)~n" n)
(h n))
(define (h n)
(printf "(h ~a)~n" n)
(f (+ n 1)))
如何才能避免合并过程f、g和h,并使代码无限运行而不崩溃?
能否有人将这段(plt)Scheme代码改写成Clojure?
(define (f n)
(printf "(f ~a)~n" n)
(g n))
(define (g n)
(printf "(g ~a)~n" n)
(h n))
(define (h n)
(printf "(h ~a)~n" n)
(f (+ n 1)))
如何才能避免合并过程f、g和h,并使代码无限运行而不崩溃?
使用跳板函数:
(declare f)
(defn h [n]
(println "(h " n ")")
#(f (+ n 1)))
(defn g [n]
(println "(g " n ")")
#(h n))
(defn f [n]
(println "(f " n ")")
#(g n))
开始:
(trampoline f 0)
我已将这段代码在我的电脑后台运行了约5个小时,内存使用量保持不变。