天天看点

SICP Exercise 4.2

SICP Exercise 4.2

a)由于eval中把过程应用放在最后面检查,就可以简单的认为到达此处的任意复合表达式就是过程应用:

(define (application? exp) (pair? exp))

所以如果把过程应用放到赋值前面之后,所有的赋值等语句将被认为是过程应用。

b)为了是Louis的计划能够工作,我们可以改变被求值语言的语法形式(过程应用的语法形式),即每个过程应用都以call开始,此时我们的过程应用的封装程序变为:

(define (application? exp) (tagged-list? exp 'call))
(define (operator exp) (cadr exp))
(define (operands exp) (cddr exp))
           

继续阅读