anchor.diff:    (make-instance 'pfunc
                    :func func))
   
  -(defmethod next ((pattern pfunc))
  +(defmethod next ((pattern pfunc-pstream))
     (funcall (slot-value pattern 'func)))
   
   ;;; pr
  -
  -;; (defclass pr (pattern)
  -;;   ((pattern :initarg :pattern :accessor :pattern)
  -;;    (repeats :initarg :repeats :accessor :repeats :initarg :inf)
  -;;    (cv :initform nil) ;; current value
  -;;    (crr :initform nil) ;; current repeats remaining
  -;;    )
  -;;   (:documentation "A pr repeats a value from PATTERN REPEATS times before moving on to the next value from PATTERN."))
   
   (defpattern pr (pattern)
     ((pattern :initarg :pattern :accessor :pattern)
      (repeats :initarg :repeats :accessor :repeats :initarg :inf)
  -   (cv :initform nil) ;; current value
  -   (crr :initform nil) ;; current repeats remaining
  +   (cv :initarg :cv :initform nil) ;; current value
  +   (crr :initarg :crr :initform nil) ;; current repeats remaining
      )
     "A pr repeats a value from PATTERN REPEATS times before moving on to the next value from PATTERN.")
   
  
positive.code:                  :repeats repeats
                   :crr repeats))
  
  (defmethod next ((pattern plazyn))
    (labels ((maybe-funcall ()
               (when (or (eq :inf (slot-value pattern 'crr))
                         (> (slot-value pattern 'crr) 0))
  
negative.code:                  :pattern pattern
                   :repeats repeats))
  
  (defmethod next ((pattern pr-pstream))
    (if (or (null (slot-value pattern 'cv))
            (<= (slot-value pattern 'crr) 0))
        (progn
  