This implements and supersedes the Common Lisp Utilities, things that everybody writes since they're not part of the official standard. The code is stable and mature, tested on multiple Lisp implementations, and it has the kind of copious error checking that everyone wants but few ever have time to write.
What is included:
- SPLIT-SEQUENCE, SPLIT-SEQUENCE-IF, SPLIT-SEQUENCE-IF-NOT. Used for splitting sequences.
- EXTREMUM, EXTREMA, N-MOST-EXTREME: Finding extreme values in sequences based on user-defined criteria.
- READ-DELIMITED reads from a sequence delimited somehow, in a somewhat inconvenient but hopefully efficient way.
- EXPT-MOD, an interface for calculating (mod (expt n e) m) efficiently across implementations.
- WITH-UNIQUE-NAMES, née WITH-GENSYMS. A classic macro-writing macro for preventing variable capture.
- COLLECTING, WITH-COLLECTORS. Some macros for clearly and efficiently collecting items into lists.
- ONCE-ONLY, a classic macro-writing macro for preventing multiple evaluation.
- ROTATE-BYTE rotates bits in a byte
- COPY-ARRAY shallow copies arrays.
- COMPOSE. Composes functions.
License: Public Domain
Homepage: http://common-lisp.net/project/cl-utilities/
Manual: http://common-lisp.net/project/cl-utilities/doc/
Maintainer: Peter Scott