;;;; srfi-42-sequences.scm - By Thomas Chust (module sequence-comprehensions (:seq) (import scheme (chicken base) srfi-42 (rename sequences (index iterator-index))) (define-syntax :seq (syntax-rules (index) [(:seq cc var (index idx) arg) (:do cc (let ([seq arg])) ([itr (iterator seq)]) (not (at-end? itr)) (let ([var (elt seq itr)] [idx (iterator-index itr)])) #t ((advance! itr)))] [(:seq cc var (index idx) arg ...) (:seq cc var (index idx) (append (coerce '() arg) ...))] [(:seq cc var arg) (:do cc (let ([seq arg])) ([itr (iterator seq)]) (not (at-end? itr)) (let ([var (elt seq itr)])) #t ((advance! itr)))] [(:seq cc var arg ...) (:seq cc var (append (coerce '() arg) ...))])) )