【发布时间】:2013-11-01 21:39:04
【问题描述】:
我正在阅读The Little Schemer,对以下代码感到困惑:
((lambda (len)
(lambda (l)
(cond
((null? l) 0)
(else
(+ 1 (len (cdr l)))))))
eternity)
(define eternity
(lambda (x)
(eternity x)))
代码是判断空列表,否则永远不会停止。
为什么“len”不是递归的?
【问题讨论】:
-
"len" 不是递归,因为它是 lambda 表达式的参数。它的价值可以是任何东西。这里是
eternity。另请注意,第一个表达式不是定义。计算第一个表达式时,eternity仍未定义。 -
谢谢。我明白了。
标签: recursion scheme the-little-schemer anonymous-recursion