A binding list or execution environment is an association list in which each element is a cons of a variable name and its value: ((x . 3) (y . 4) ...)
(define (m-value var env)
(let ((pair (assoc var env)))
(if pair
(cdr pair)
(m-error "Unbound variable " var)) ))
(define (m-bind formalargs actualargs alist)
(if (null? formalargs)
(if (null? actualargs)
alist
(m-error "Too many args " actualargs) )
(if (null? actualargs)
(m-error "Not enough args " actualargs)
(m-bind
(cdr formalargs)
(cdr actualargs)
(cons (cons (car formalargs)
(car actualargs))
alist)) ) ))
Contents    Page-10    Prev    Next    Page+10    Index