anchor.diff:  
   ;; Since this is CL version and not Java,
   ;; we have to define different bijection between the types
  -;; We cannot treat Lox's nil the same as the CL's nil because
  -;; Lox's nil does not imply false, whereas CL's does.
  +;; We will treat Lox's nil the same as the CL's nil because
  +;; Lox's nil does imply false, same as  CL's.
   ;; Lox type - CL type
   ;; nil - null (equivalent to nil)
   ;; boolean - Boolean (T + NIL)
  
positive.code: (defmethod add ((left number) (right number))
    (+ left right))
  
  ;; Purely cosmetic for now
  ;; Will hold environment in the future
  (defclass interpreter () ())
  
negative.code:   (value expression))
  
  (defmethod evaluate ((expression unary-expr))
    (let* ((right (evaluate (right expression)))
           (operator (operator expression))
           (operator-type (token-type operator)))
      (case operator-type
        (:minus
         (check-number-operand operator right)
         (- right))
        (:bang (not (is-truthy right))))))
  
  (defmethod evaluate ((expression binary-expr))
    (let* ((left (evaluate (left expression)))
           (right (evaluate (right expression)))
           (operator (operator expression))
           (operator-type (token-type operator)))
      (or
       (typed-binary-expression-case operator left right
         (:minus -)
         (:plus add)
         (:slash /)
         (:star *)
         (:greater >)
         (:greater-equal >=)
         (:less <)
         (:less-equal <=))
       (ecase operator-type
         (:bang-equal (not-equal left right))
         (:equal-equal (equal left right))))))
  