List of Operators

left top right

(define (expression expr)
  (define operators
    (list (cons '+ +)
          (cons '* *)))
  (cond ...
    ((binop? expr)
     (let ((op (binop.op expr)) ...)
       (let ((procedure (assq op operators)))
         (if procedure
             ((cdr procedure) rand-1 rand-2)
             (error "Bad operator" expr)))))
    ...))

Jim Miller W3C