anchor.diff:             :do-sequence-iterators
              :do-sequence-iterators*
              :dosequences*
  -           :dosequence))
  +           :dosequence
  +           :list-to-alist))
   
   (in-package :cl-iterators)
   
  
positive.code: 
  (defmacro make-iterator (&key (start 0) (length -1) (inc 1) (id #'identity) (cyclic nil)
                             (initial-contents ()) (from-end nil) (initial-element nil))
    `(let ((tmp (make-instance 'iterator :start ,start
                               :length (if (null ,initial-contents)
                                           ,length
                                           (1- (length ,initial-contents)))
  
negative.code: 
  (defmacro dosequences* (((var sequence &key result start end from-end)
                           &rest more-clauses) &body body)
    (let* ((all-args (cons (list var sequence :start start :length end
                                 :from-end from-end :result result) more-clauses))
           (key-args '(:start :length :from-end :result))
           (tmp-clauses (mapcar #'(lambda(x) (resolve-key-args x key-args nil)) all-args))
           (all-clauses (loop for (var sequence start end from-end result) in tmp-clauses
                           collect `(,var (make-iterator :start ,start :initial-contents ,sequence
                                                         :length ,end :from-end ,from-end) ,result))))
      `(do-sequence-iterators* ,all-clauses
         ,@body)))
  
  (defmacro dosequence ((var sequence &key result start end from-end) &body body)
    `(dosequences* ((,var ,sequence :result ,result :start ,start :length ,end :from-end ,from-end))
       ,@body))
  