anchor.diff:             (case (car exp)
                ((quote) (cadr exp))
                ((lambda) `(&proc ,env ,(cadr exp) ,(caddr exp)))
  +             ((let) (force
  +                     (rl-eval (car (last exp))
  +                              (let-bind (droplast 1 (cdr exp)) env))))
                (t (let ((exp1 (normalize-call exp)))
                     (rl-apply (rl-eval (car exp1) env)
                               (rl-eval (cadr exp1) env)))))))))
  
positive.code:                                 (force fl))))
              (error . ,(lambda (x) (error (force x)))))))
  
  
negative.code:       nil
        (cons (car lst) (take (1- n) (cdr lst)))))
  
  (defun drop (n lst)
    (if (= n 0)
        lst
        (drop (1- n) (cdr lst))))
  
  (defun droplast (n lst)
    (take (- (length lst) n) lst))
  
  (defun index-list (n f)
    (if (= n 0)
        nil
        (cons (funcall f n) (index-list (1- n) f))))
  
  (defun group (n lst)
    (cond ((null lst) nil)
          ((null (nth n lst))
           (list lst))
          (t (cons (take n lst)
                   (group n (drop n lst))))))
  
  (defun break-at (v)
    (break)
    v)
  
  ;; impl
  ;;; (lambda arg body)
  ;;; (let var1 val1 var2 val2 body)
  (defun rl-eval (exp env)
    (thunk
      (cond ((symbolp exp) (force (lookup exp env)))
  