language extension
Language extensions are libraries that are not domain-specific (that is, just concern themselves with "programming" as opposed to "implementing algorithm/datastructure/service x"), widely usable, and could potentially be candidates for Proposed Extensions To ANSI, but are wider in scope than utilities. Examples would be new object systems, CPS-transformers, etc.

Since Common Lisp is the "programmable programming language," many of these extensions are quite far-reaching.

  • ap5 - A mature, embedded, in-memory Relational ObjectStore and a high-level/declarative/specification language
  • CAPTURED-STREAM - captured-stream is a small Common Lisp library for viewing streams as sequences
  • CL Enumerations - A package; an implementation of java.util.Enumeration and java.util.Iterator for Common Lisp
  • cl-2dsyntax - cl-2dsyntax is an indentation-sensitive syntax system like Python (the programming language, not the CMUCL/SBCL compiler) does
  • cl-ana - cl-ana aims to provide the basic tools necessary to analyze large/medium-large datasets
  • cl-annot - cl-annot adds Python-like decorators (or Java-like annotations) to Common Lisp
  • cl-cont - cl-cont is a delimited continuations library for Common Lisp
  • cl-dsl - Define your Domain Specific Languages in a user-friendly way
  • cl-events - Composable events system for Common Lisp
  • cl-groupby - Short implementation of Scalas groupBy functionality for Common Lisp
  • cl-hooks - cl-hooks allows the description of extension points in software using a concept of hooks (borrowed from Emacs)
  • cl-itertools - Write iterators in CL in a way close to Python ones
  • cl-op - A partial application library inspired by Goo's op function and SRFI 26
  • cl-package-aliases - Extends the standard CL package system with the ability to define package-local aliases (nicknames) to other packages in a transparent way
  • CL-PACKAGE-LOCKS - A unified way of dealing with package locks on those implementations that support them (or that's the eventual goal anyways)
  • cl-parametric-types - [BETA] A tool to repeatedly compile the same source code with different types
  • cl-read-macro-tokens - Modify lisp reader, so that it could dispatch not only on characters, but also on arbitrary symbols in CAR
  • cl-rttemplate - cl-rttemplate is a quotation system which works in a similar way like the quasiquotation, but during the read-time
  • cl-secure-read - Define constrained versions of READ, READ-PRESERVING-WHITESPACE and READ-FROM-STRING
  • cl-semver - Semantic Versions handling in Common Lisp
  • cl-slice - This library was unmaintained for several years
  • cl-splicing-macro - Define macros, that splice multiple forms directly into body of enclosing macro, without any PROGN's left
  • cl-typed - ML-like syntax for ftypes with library-side type-checking
  • CLLIB - CLLIB is a varied collection of Common lisp tools and routines in CLOCC
  • COLLECTING - Common Lispy ways of collecting values during evaluation are diverse; here we discuss some well established and some proposed
  • collectors - collectors is a common lisp library that aims to ease accumulating values (similar to loop/iter's collecting / appending clauses)
  • Common Lisp Reasoner - Common Lisp meets AI problem-solving meets the semantic web
  • comparisons - Comparison is a simple library adding comparison functions similar to EQUAL and EQUALP, which handle multiple types gracefully
  • computed-class - A class metaobject for computed slot values and more
  • conduit-packages - conduit-packages provides some enhancements to Common Lisp's package system
  • Context Lite - Context Lite is a language extension for writing methods that specialize on the values of dynamic/special variables at runtime
  • ContextL - ContextL is a language extension for Context-oriented Programming
  • data-lens - This library provides a language for expressing data manipulations as the composition of more primitive operations
  • DBC - DBC is a library for doing Design by contract ala the Eiffel programming language in Common Lisp
  • defmacro-enhance - Extend DEFMACRO facility in spirit of Let Over Lambda
  • defpackage-plus - An extensible DEFPACKAGE variant with predictable cross-platform behavior and some utilities useful for versioning
  • doplus - doplus is a high-level, lispy, extensible iteration construct for Common Lisp
  • dynamic-classes - Lets you specify CLOS classes (e.g., as arguments to make-instance) using parameters at run-time, letting you use mixins more conveniently
  • fare-quasiquote - fare-quasiquote is a portable quasiquote implementation that plays well with pattern-matching
  • fast-generic-functions - Generic functions that can be sealed on certain domains for performance
  • Filtered Functions - filtered-functions implements arbitrary predicate dispatch for CLOS
  • function-cache - Function-cache is a Common Lisp function caching / memoization library
  • gecol - gecol provides bindings to GECODE in order to enjoy constraint programming in Lisp
  • General accumulator - General accumulator is a general-purpose, extensible value accumulator library
  • generators - Generators is a library that provides python style generators in common lisp, by using cl-cont delimited continuations
  • ia-hash-table - Indifferent access hash-tables for Common Lisp
  • incognito-keywords - incognito-keywords introduces a new kind of keyword that looks just like any non-keyword symbol and allows safe usage of convenient but clashy symbol names by multiple libraries without conflicts through sharing
  • Incongruent Methods - A library that provides methods with incongruent lambda lists
  • inlined-generic-function - A MOP-based implementation of fast inlined generic functions dispatched in compile-time
  • iterate - iterate is a lispy and extensible replacement for the LOOP macro
  • iterate-keywords - Lispy and extensible replacement for the LOOP macro, fork of iterate
  • lambda-reader - lambda-reader is a language extension that lets you use the Unicode character λ for LAMBDA in the Lisp reader and printer
  • LOOM - Lisp: Object-Oriented and Modular
  • macrodynamics - Macrodynamics is a language extension that broadens the notion of dynamic scope inside macroexpansion code
  • memoize - Memoize is a small library for performing memoization
  • metacopy - Metacopy is a library that makes it easy to specify how to make copies of an object
  • method-versions - A Common Lisp library for dispatching generic methods based on the value of a global parameter rather than on one of the required parameters
  • mexpr - mexpr is an Infix syntax library
  • modf - An immutable setf
  • Modularize - Modularize is an attempt at providing a common interface to segregate major application components
  • MW-EQUIV - mw-equiv provides one of many possible equivalence relations between Common Lisp objects, similar to the standard EQUAL function family, but extensible
  • named-readtables - Named-Readtables is a language extension library that provides a namespace for readtables akin to the
  • package-renaming - package-renaming is a library for locally renaming CL packages
  • place-modifiers - place-modifiers essentially gives access to hundreds of modify-macros through one single macro: modify
  • prompt-for - Prompt the user for input of a particular type, or satisfying some predicate
  • quid-pro-quo - A contract programming library for Common Lisp in the style of Eiffel’s Design by contract
  • readable - readable adds additional abbreviations in the sexp reader; supports infix, optional standard function call notation, optional indentation
  • sb-sequence - An SBCL implementation of the protocol for user defined sequences
  • schemeish - Scheme-ish syntax and namings for Common Lisp
  • screamer - Screamer adds support for nondeterministic and constraint programming, including backtracking and undoable side-effects
  • Series - A library providing data structure that combines aspects of sequences, (lazy) streams and loops, using a technique known as “fusion” or “deforestation”
  • Sheeple - Sheeple is a delegative prototype-based object system inspired by CLOS
  • snakes - Python style generators for Common Lisp
  • SRFI - Scheme Requests for Implementation (SRFI) are proposed language extensions to Scheme, but that doesn't stop people from implementing them for Common Lisp
  • syntax-case - SYNTAX-CASE is a system for macros proposed by R
  • trivial-package-locks - A standard interface to the various package lock implementations
  • with-c-syntax - C language syntax in Common Lisp
  • xarray - This package implements a generalized interface for array-like

Pattern matching: (main topic: pattern matching)

  • bind - Bind combines let*, destructuring-bind and multiple-value-bind into a single form
  • bpm2 - bpm2 is a pattern matching language originally designed for doing code transformation [ie, writing compilers]
  • cartesian-product-switch - cartesian-product-switch is a macro for choosing the appropriate form to execute according to the combined results of multiple tests
  • cl-unification - Provides unification (as used in Prolog) over fairly arbitrary Common Lisp objects
  • cl-xmlspam - XML Stream PAttern Matcher - concise, regexp-like pattern matching on streaming XML
  • let-plus - LET+ extends let* with destructuring forms, slot access, hash table elements and various other constructs with a consistent interface
  • screamer - Screamer adds support for nondeterministic and constraint programming, including backtracking and undoable side-effects
  • spath - SPath is a library for running search queries against s-expressions, intended to match parts of them that the user needs
  • Toadstool - Toadstool is a library for pattern matching
  • Trivia - Trivial pattern matching compiler
  • type-r - The complete collection of accessor functions and patterns to access the elements in a compound type specifier

Metaprogramming: (main topic: metaprogramming)

  • agnostic-lizard - An almost correct portable code walker for Common Lisp
  • arrow-macros - Clojure-like arrow macros in Common Lisp
  • bubble-operator-upwards - bubble-operator-upwards is a function that "bubbles an operator upwards" in a form, demultiplexing all alternative branches by way of cartesian product
  • cl-cont - cl-cont is a delimited continuations library for Common Lisp
  • cl-curlex - Leak *LEXENV*, which describes lexical environment, into the runtime
  • cl-environments - Implements the CLTL2 environment access API
  • cl-indeterminism - Find and manipulate undefined variables and functions in forms
  • cl-walker - cl-walker implements an sexp → CLOS AST tree transformation (and vice versa)
  • Concrete-Syntax-Tree - Concrete Syntax Trees represent s-expressions with source information
  • de.setf.utility - de setf utility is a collection of Common Lisp utilities functions and several purpose-specific libraries
  • deprecations - deprecations allows you to define functions, generic functions, macros and symbol macros as deprecated
  • lineva - Linear evaluation macro system for Common Lisp
  • linewise-template - A Common Lisp library for processing text files and streams as templates conforming to simple line-based hierarchical formats
  • macro-eval - A kind of eval for use at macro-expansion time (such as for constant-folding purposes)
  • macroexpand-dammit - macroexpand-dammit is a code walker by John Fremlin
  • parse-declarations - Parse-Declarations is a metaprogramming library to parse, filter, and build Common Lisp declarations (things like (inline foo))
  • parse-number-range - parse-number-range parses loop's convenient "for-as-arithmetic" syntax into 5 simple values
  • quasiquote-2.0 - An alternative quasiquote syntax aimed at being more suitable for macros that define other macros
  • reader-interception - reader-interception is a library for replacing the lisp reader with your own, so you can define your own syntax or compile other language through Lisp
  • symbol-namespaces - symbol-namespaces defines a new kind of package that's named by a symbol rather than a string