anchor.diff:  (defpackage "PARALLEL"
  +  (:use)
  +  (:export "PROMISE" "PROMISE-VALUE" "LET"
  +           "FUTURE" "FUTURE-VALUE" "BIND"
  +           "DOTIMES" "MAP" "REDUCE"))
  +
  +(defpackage "PARALLEL-IMPL"
     (:use "CL")
  -  (:export "PROMISE" "PROMISE-VALUE" "PLET"
  -           "FUTURE" "FUTURE-VALUE" "FUTURE-BIND"
  -           "PDOTIMES" "PMAP" "PREDUCE"))
  -
  -(in-package "PARALLEL")
  +  (:import-from "PARALLEL" "PROMISE" "PROMISE-VALUE"
  +                "FUTURE" "FUTURE-VALUE"))
  +
  +(in-package "PARALLEL-IMPL")
   
   (deftype status ()
     `(member :waiting :done))
  
positive.code:                              (funcall aggregate-function begin end)))
                           cleanup)))))
  
  (defmacro pdotimes ((var count &optional result) &body body)
    (let ((begin (gensym "BEGIN"))
          (end   (gensym "END"))
          (i     (gensym "I"))
  
negative.code:   (future:wait future :done)
    (values-list (future-%values future)))
  
  (defmacro parallel:bind ((&rest bindings)
                           &body body)
    (let ((wait nil))
      (when (eql :wait (car body))
        (setf wait t)
  