; Evaluation of IF special form
(define (m-if ifform env)
(if (m-eval (cadr ifform) env)
(m-eval (caddr ifform) env)
(m-eval (cadddr ifform) env)))
; Evaluation of SET! special form:
; change the value in the environment
(define (m-set! form env)
(let ((pair (assoc (cadr form) env)))
(if pair
(set-cdr! pair
(m-eval (caddr form) env))
(m-error "Unbound variable " (cadr form))) ) )
; Evaluation of BEGIN special form
(define (m-begin statements env lastval)
(if (null? statements)
lastval
(m-begin (cdr statements)
env
(m-eval (car statements) env)) ) )
Contents    Page-10    Prev    Next    Page+10    Index