anchor.diff:    (:use)
     (:export "PROMISE" "PROMISE-VALUE" "LET"
              "FUTURE" "FUTURE-VALUE" "FUTURE-VALUE*" "BIND"
  -           "STREAM" "HEAD" "TAIL" "UNFOLD" "SCAN" "SCAN*" "FOREACH" "FOLD"
  +           "STREAM" "HEAD" "TAIL" "TAIL!" "TAIL-PREFETCH" "UNFOLD" "SCAN" "SCAN*" "FOREACH" "FOLD"
              "DOTIMES" "MAP" "REDUCE"
              "MAP-GROUP-REDUCE"))
   
  
positive.code:              (setf (stream-%next stream)
                     (future-value (stream-next stream)))))))
  
  
  (declaim (maybe-inline parallel:unfold
                         parallel:scan* parallel:scan parallel:foreach
  
negative.code: (defstruct (parallel:stream
              (:constructor %make-stream))
    (index   0 :type (mod #.+chunk-size+))
    (chunk nil :type simple-vector :read-only t)
    (%next nil :type (or null function parallel:stream parallel:future)))
  
  (defun make-stream (index chunk %next)
  