(chibi loop)

The loop API is mostly compatible with Taylor Campbell's foof-loop, but the iterator API is different and subject to change.

(loop [name] (vars ...) [=> result] body ...)

(for ((vars ...) ...) body ...)
(for lp ((vars ...) ...) body ...)

Utility syntax for the common case of a loop which has only for clauses.

Iterators

(for var [pair] (in-list ls [cdr]))

Basic list iterator.

(for elts [pairs] (in-lists lol [cdr [done?]]))

Iterator from Taylor R. Campbell. If you know the number of lists ahead of time it's much more efficient to iterate over each one separately.

(define-in-indexed in-type in-type-reverse length ref)

(for var [index] (in-vector vec))

(for var [index] (in-vector-reverse vec))

(for ch [cursor] (in-string str))

(for ch [cursor] (in-string-reverse str))

(for substr (in-substrings k str))

(in-substrings ((ch) (k str)) next . rest)

(for ch (in-port [input-port [reader [eof?]]]))

(for ch (in-file [input-port [reader [eof?]]]))

(for x (up-from [start] [(to limit)] [(by step)]))

(for x (down-from [start] [(to limit)] [(by step)]))

(for x [pair] (listing expr))

(for x [pair] (listing-reverse expr))

(for x [pair] (appending expr))

(for x [pair] (appending-reverse expr))

(for x (summing expr))

(for x (multiplying expr))