乐正

Actions speak louder than words.

Sicp-ex3-31

问题

make-wire里定义的内部过程accept-action-procedure!描述的是,当一个新的动作过程加入线路时,这一过程应立即运行。请解释为什么需要这种初始动作。特别是,请追踪上面段落里的半加器例子,看看如果我们不这样做,而是将accept-action-procedure!定义为下面形式,那么会出现什么情况:

1
2
(define (accept-action-procedure! proc)
  (set! action-producres (cons proc action-procedures)))

解答

因为第一次不初始化动作的话,那么半加器第一次的值便没有办法获得。只有当半加器的一条线路的值再次改变的时候,才能获取到值。

draft

« sicp-ex3-30 sicp-ex3-32 »

Comments