【发布时间】:2011-04-23 15:18:08
【问题描述】:
我看到之前有人问过类似的问题,但我不明白这里的另一个问题。
这里有两个函数:
(define x 2)
(define a 2)
(define goo
(lambda (x)
(display x)
(lambda (y) (/ x y))))
(define foo
(let ((f (goo a)))
(lambda (x)
(if (= x 0)
x
(f x)))))
(foo (foo 0)) 的返回值是多少?什么会打印到屏幕上?
据我了解,当我一开始运行(foo 0)时,会打印出2(我们将输入函数goo),返回值为0。然后,我们将再次使用(foo (foo 0)) => (foo 0) 输入函数foo。我们再次输入函数goo 和2 将打印出来。但是当我运行它时,2 只打印一次。我想我错过了一个关于let 及其与lambda 的联系的关键问题。
【问题讨论】:
标签: scheme