【发布时间】:2015-07-29 14:58:34
【问题描述】:
所以我试图理解这段代码,在盯着它看了太久之后,我决定在这里问是否有人可以帮助我理解它的工作原理和原因
(define knock-knock
(letrec ([dig (lambda (i)
(cons (* i (list-ref knock-knock (- i 1)))
(dig (+ i 1))))])
(cons 1 (dig 1))))
然后按名称调用该函数,其值为:
(list-ref knock-knock 5)
所以我的主要问题是我看不到letrec 的结束位置。另一件事是我没有得到一个列表,那么我应该在第 3 行引用的列表中的第 4 个元素是什么?
【问题讨论】:
-
knock-knock不是函数。它是一个值,由(cons 1 (dig 1))在letrec中产生。
标签: scheme evaluation evaluation-strategy