anchor.diff:  (defun int-compositions (n &key (len) (parts-max n) (parts-min 1))
     (labels ((rec  (n max lst)
                (cond ((= n 0) lst)
  -                   ((= max 1) (mapcar (p #'cons n) lst))
  +                   ((= max 1) (mapcar (p (cons n)) lst))
                      (t (mapcan
  -                        (lambda (i) (rec (- n i) (1- max) (mapcar (p #'cons i) lst)))
  +                        (lambda (i) (rec (- n i) (1- max) (mapcar (p (cons i)) lst)))
                           (iota n :start 1))))))
       (let ((parts-max (if len len parts-max)) (parts-min (if len len parts-min)))
         (remove-if-not (lambda (x) (<= parts-min (length x)))
  
positive.code:   (let ((head-pos (position-list head-mark seq :key key :test test)))
      (values
        (mapcar
          (p #'subseq seq)
          (if mark-discard? (mapcar #'1+ head-pos) head-pos)
          (drop (append1 head-pos (length seq))))
        (subseq seq 0 (car head-pos)))))
  
negative.code:   (let ((tail-pos (position-list tail-mark seq :key key :test test)))
      (values
        (mapcar
          (p (subseq seq))
          (cons 0 (mapcar #'1+ tail-pos))
          (if mark-discard?  tail-pos (mapcar #'1+ tail-pos)))
        (if tail-pos (subseq seq (1+ (last1 tail-pos))) seq))))
  