anchor.diff:    (%promise-wait promise :done)
     (values-list (promise-%values promise)))
   
  -(defmacro plet ((&rest bindings) &body body)
  +(defmacro parallel:let ((&rest bindings) &body body)
     (let ((temporaries (loop for (name value) in bindings
                              collect `(,(gensym "PROMISE") (promise (lambda ()
                                                                       ,value))))))
  
positive.code:   (future:wait future :done)
    (values-list (future-%values future)))
  
  (defmacro future-bind ((&rest bindings)
                         &body body)
    (let ((wait nil))
      (when (eql :wait (car body))
        (setf wait t)
  
negative.code:                              (funcall aggregate-function begin end)))
                           cleanup)))))
  
  (defmacro parallel:dotimes ((var count &optional result) &body body)
    (let ((begin (gensym "BEGIN"))
          (end   (gensym "END"))
          (i     (gensym "I"))
  