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