Data Abstraction: Bane or Boon? |
|
(define make-var cons)
(define var.name car)
(define var.value cdr)
(define (variable.value var)
(define (loop vars)
(if (null? vars)
(error "Undefined variable" var)
(let ((first-var (first vars)))
(if (eq? var (var.name first-var))
(var.value first-var)
(loop (cdr vars))))))
(loop variables))
(define (variable.value name)
(let ((entry (assq name variables)))
(if entry
(cdr entry)
(error "No such variable" name))))
| Jim Miller |