2017-04-03 60 views
2

我在做exercise 3.13 from SICP但我不确定我的答案。SICP练习3.13 - 制造循环

练习3.13:考虑下列使循环过程,它使用 在练习3.12所定义的最后一对程序:

(定义(使循环x)的(设定CDR(最后所对x)x)的x)的

绘制的箱和指针图,其示出了由

(定义Z(使循环(列表 'A' b“创建的结构z对于C)))

如果我们发生什么事尝试计算(最后一对z)?

我试图理解为什么

(last-pair z) 

成为无限循环。忽略盒和指针图,这里是我的理解是:

(set-cdr! (last-pair x) x) 

(last-pair x)将是对(cons 'c '()),那么当我们做set-cdr!一对将成为:

(cons 'c (cons 'a (cons 'b (cons 'c (cons 'a (cons 'b (cons 'c (cons 'a (cons 'b (cons 'c ...)))))))))) 

我的理解正确?

回答

2

你的回答似乎表明(last-pair x)是调用cons无限多次的结果。

并非如此。

x仍然仅有3利弊细胞,但最后一分,第一个,创建一个(蛇在咬尾本身)。