【发布时间】:2015-02-17 20:59:53
【问题描述】:
我在将参数的顺序交换到 - 函数时发现了一个问题。
; source
(define (compose f g) (lambda (x) (f (g x))))
(define (repeated f n)
(if (= n 1)
f
(compose f (repeated f (- 1 n))) ; causes an out of memory error
(compose f (repeated f (- n 1))) ; runs without issue
))
(define (square n) (* n n))
((repeated square 2) 6) ; 1296
; REPL
> > Racket virtual machine has run out of memory; aborting
Aborted (core dumped)
如果我对值进行硬编码,问题就存在了。此外,如果我使用+ 增加n,则问题不适用。
【问题讨论】: