1
我必须写计划与计划..安静有趣,但这就是这种情况。 任何方式,下面是一个例子,试图用我可能使用的所有proucedors来编写“lambda”表达式,并且我还需要编写“Let”表达式。我如何使用类似的方式将“Let”表达式转换为lambda表达式? 谢谢。metacircular评估者
(define (lambda? exp) (tag-check exp 'lambda))
(define (eval exp env)
(cond ((number? exp) exp)
((symbol? exp) (lookup exp env))
((define? exp) (eval-define exp env))
((if? exp) (eval-if exp env))
((lambda? exp) (eval-lambda exp env))
((application? exp) (apply (eval (car exp) env)
(map (lambda (e) (eval e env))
(cdr exp))))
(else (error "unknown expression " exp))))
(define (eval-lambda exp env)
(make-procedure (lambda-parameters exp)
(lambda-body exp)
env))
(define (lambda-parameters exp) (cadr exp))
(define (lambda-body exp) (cddr exp))
(define (make-procedure parameters body env)
(list 'procedure parameters body env))
你可能会[SICP,4.1自循环直译器(http://mitpress.mit.edu/sicp/full-text/book/book-找到有用的练习4.6 ZH-26.html#%_ sec_4.1) – 2011-02-16 10:06:20