com.clearly-useful.iterate-plus

2012-10-13

No Description

Upstream URL

github.com/jaeschliman/com.clearly-useful.iterate-plus

Author

Jason Aeschliman <j.aeschliman@gmail.com>

License

revised BSD
README
iterate extensions for seqs and iterators in common lisp

1com.clearly-useful.iterate+

Overview: This package provides a new keyword for iterate, per, and four styles of iteration:

(iter (per x in y)) similar to doseq, binds x to each element of the result of calling seq on y.

(iter (per x on y)) similar to loop .. on, binds x to subsequent tails of the result of calling seq on y.

(iter (per x across y)) similar to loop .. across, calls indexable on y, and loops by index below count-elements binding x to subsequent values of element-at (iter (per x of y)) similar to do-iterator, calls iterator on y, and binds x to subsequent values it produces. ensures that iterator-finish! is called. since iterator provides a default implementation for seq, indexable, and associative, any of those may also be used in a per ... of clause.

Usage: This package is intended to be used with iterate. Since Iterate tests clauses on symbol-equality, this package will have no effect unless you explicitly :use it, e.g.

      (defpackage #:foo
        (:use #:cl
              #:iterate
              #:com.clearly-useful.iterate+))

2Exported symbols

this package exports two symbols.

2.1per

iterate driver

2.2of

iterate keyword

Dependencies (4)

  • com.clearly-useful.generic-collection-interface
  • com.clearly-useful.iterator-protocol
  • com.clearly-useful.protocols
  • iterate

Dependents (0)

    • GitHub
    • Quicklisp