anchor.diff:                          ,env
                           ,k)))
         (dolist* ((var . value) evaluated-bindings
  -                (evaluate/cps-progn body env k))
  +                (evaluate-progn/cc body env k))
           (setf env (register env :let var value)))))
   
  -(defmethod evaluate/cps ((let* let*-form) env k)
  -  (evaluate/cps-let* (binds let*) (body let*) env k))
  -
  -(defk k-for-evaluate/cps-let* (var bindings body env k)
  -    (value)
  -  (evaluate/cps-let* bindings body
  +(defmethod evaluate/cc ((let* let*-form) env k)
  +  (evaluate-let*/cc (binds let*) (body let*) env k))
  +
  +(defk k-for-evaluate-let*/cc (var bindings body env k)
  +    (value)
  +  (evaluate-let*/cc bindings body
                        (register env :let var value) k))
   
  -(defun evaluate/cps-let* (bindings body env k)
  +(defun evaluate-let*/cc (bindings body env k)
     (if bindings
         (destructuring-bind (var . initial-value)
             (car bindings)
  -        (evaluate/cps initial-value env
  -                      `(k-for-evaluate/cps-let* ,var ,(cdr bindings) ,body ,env ,k)))
  -      (evaluate/cps-progn body env k)))
  +        (evaluate/cc initial-value env
  +                      `(k-for-evaluate-let*/cc ,var ,(cdr bindings) ,body ,env ,k)))
  +      (evaluate-progn/cc body env k)))
   
   ;;;; IF
   
  -(defk k-for-evaluate/cps-if (then else env k)
  +(defk k-for-evaluate-if/cc (then else env k)
       (value)
     (if value
  -      (evaluate/cps then env k)
  -      (evaluate/cps else env k)))
  -
  -(defmethod evaluate/cps ((if if-form) env k)
  -  (evaluate/cps (consequent if) env
  -                `(k-for-evaluate/cps-if ,(then if) ,(else if) ,env ,k )))
  +      (evaluate/cc then env k)
  +      (evaluate/cc else env k)))
  +
  +(defmethod evaluate/cc ((if if-form) env k)
  +  (evaluate/cc (consequent if) env
  +                `(k-for-evaluate-if/cc ,(then if) ,(else if) ,env ,k )))
   
   ;;;; LOCALLY
   
  -(defmethod evaluate/cps ((locally locally-form) env k)
  -  (evaluate/cps-progn (body locally) env k))
  +(defmethod evaluate/cc ((locally locally-form) env k)
  +  (evaluate-progn/cc (body locally) env k))
   
   ;;;; MACROLET
   
  -(defmethod evaluate/cps ((macrolet macrolet-form) env k)
  -  (evaluate/cps-progn (body macrolet) env k))
  +(defmethod evaluate/cc ((macrolet macrolet-form) env k)
  +  (evaluate-progn/cc (body macrolet) env k))
   
   ;;;; multiple-value-call
   
  
positive.code:       env))
      
      ((eql 'funcall (operator func))
       (evaluate/cps-funcall (arguments func) env k))
      
      ((eql 'apply (operator func))
       (evaluate/cps-apply   (arguments func) '() env k))
      
      ((and (symbolp (operator func))
            (get (operator func) 'defun/cc))
       (evaluate-arguments-then-apply
        (lambda (arguments)
          (apply-cps-lambda (get (operator func) 'defun/cc) arguments k))
        (arguments func) '()
        env))
  
  
negative.code:                (setf env (register env :let (name parameter) (pop remaining-arguments)))
                 (when (supplied-p-parameter parameter)
                   (setf env (register env :let (supplied-p-parameter parameter) t))))
               (return-from apply-lambda/cc
                 ;; we need to evaluate a default-value, since this may
                 ;; contain call/cc we need to setup the continuation
                 ;; and let things go from there (hence the return-from)
                 (evaluate/cc (default-value parameter) env
                              `(k-for-apply/cc/optional-argument-default-value
                                ;; remaining-arguments is, by
                                ;; definition, NIL so we needn't pass
                                ;; it here.
                                ,operator ,remaining-parameters ,env ,k)))))))
      
      (evaluate-progn/cc (body (code operator)) env k)))
  
  (defk k-for-apply-cc/optional-argument-default-value
      (operator remaining-parameters env k)
      (value)
    (apply-lambda/cc/optional-default-value
     operator (cdr remaining-parameters)
     (register env :let (name (first remaining-parameters)) value) k))
  
  (defun apply-lambda/cc/optional-default-value (operator remaining-parameters env k)
    (if remaining-parameters
        (dolist (parameter remaining-parameters)
          (typecase parameter
            (optional-function-argument-form
             (return-from apply-lambda/cc/optional-default-value
               (evaluate/cc (default-value parameter) env
                            `(k-for-apply/cc-optional-argument-default-value
                              ,operator ,(cdr remaining-parameters) ,env ,k))))
            (t (error "Sorry, only required and optional arguments for now."))))
        (evaluate-progn/cc (body (code operator)) env k)))
  
  (defmethod apply-lambda/cc ((operator function) effective-arguments k)
    (apply #'kontinue k (multiple-value-list (apply operator effective-arguments))))
  
  (defk k-for-evaluate-arguments-then-apply (handler remaining-arguments evaluated-arguments env)
  