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.

  • AmOS - AmOS (Ambient Object System) is an object-based computation model aimed at supporting highly dynamic behaviour adaptation to changing contexts
  • CAPTURED-STREAM - CAPTURED-STREAM is a small Common Lisp library for viewing streams as sequences
  • CL Enumerations - CL-ENUMERATIONS package is 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-annot - cl-annot adds Python-like decorators (or Java-like annotations) to Common Lisp
  • cl-cmp - cl-cmp provides an object-equals generic function, an object-less-than generic function, and methods that do The Appropriate Thing for the default classes in 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-hooks - cl-hooks allows the description of extension points in software using a concept of hooks (borrowed from Emacs)
  • cl-op - cl-op is a partial application library inspired by Goo's op function and SRFI 26
  • cl-package-aliases - 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-pdf.arglists - cl-pdf.arglists improves the argument lists of CL-PDF and cl-typesetting, for easier interactive development
  • cl-read-macro-tokens - Modify lisp reader, so that it cound 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-splicing-macro - Define macros, that splice multiple forms directly into body of enclosing macro, without any PROGN's left
  • CLLIB - CLLIB is a varied collection of Common lisp tools and routines in CLOCC
  • Clon - There are three packages by the name of "CLON", although the third one doesn't actually introduce any conflict because the package is named com.dvlsoft.clon
  • COLLECTING - LOOP has a COLLECT clause which is nice and handy
  • 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 is a language extension providing some enhancements to Common Lisp's package system
  • Conduits - Conduits allows the creation of extended packages that may dynamically share symbols with other packages, thus extending them
  • ContextL - ContextL is a language extension for Context-oriented Programming
  • 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
  • doplus - doplus is a high-level, lispy, extensible iteration construct for Common Lisp
  • dynamic-classes - Dynamic-Classes lets you specify CLOS classes (for example, as arguments to make-instance) using parameters at run-time, letting you use mixins more conveniently
  • fare-matcher-docs - Fare-matcher adds constructs for Lisp2 pattern matching or destructuring
  • Filtered Functions - Filtered functions provide an extension of generic function invocation that add a simple preprocessing step before the actual method dispatch is performed and thus enable the use of arbitrary predicates for selecting and applying methods
  • 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-purpose, extensible value accumulator library
  • generators - Generators is a library that provides python style generators in common lisp, by using cl-cont delimited continuations
  • 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
  • iterate - iterate is a lispy and extensible replacement for the LOOP macro
  • KR - Knowledge Representation is a highly flexible and dynamic prototype-based object system for Common Lisp
  • memoize - Memoize is a small library for performing memoization
  • memoize-form - A simpler need than memoizing the results of a function with arguments is that of memoizing the results of a form
  • metacopy - This system is no longer being maintained (at least not by Gary King)
  • 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
  • place-modifiers - place-modifiers essentially gives access to hundreds of modify-macros through one single macro: MODIFY
  • pygen - pygen - Python-style generators library
  • 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 s-expression reader, for improved readability; it supports infix, optional standard function call notation, and optional indentation
  • screamer - Screamer is a language extension that adds support for nondeterministic programming, including backtracking and undoable side-effects, and includes a constraint programming language
  • Series - Series is a library for operating on series, a data structure similar to a sequence
  • Sheeple - Sheeple is a delegative prototype-based object system inspired by CLOS
  • SRFI - Scheme Requests for Implementation (SRFI) are proposed language extensions to Scheme, but that doesn't stop people from implementing them for Common Lisp
  • sw-mvc - sw-mvc provides dataflow paradigm support for Common Lisp as a language extension
  • xarray - xarray is a generalized interface for array-like objects with views
Pattern matching: (main topic: pattern matching) Metaprogramming: (main topic: metaprogramming)
  • 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-indeterminism - Find and manipulate undefined variables and functions in forms
  • cl-walker - cl-walker (home page) implements an sexp => CLOS AST tree transformation (and vice versa)
  • de.setf.utility - de setf utility is a collection of Common Lisp utilities functions and several purpose-specific libraries
  • 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: from, to, limit-kind (:inclusive, :exclusive or nil if unbounded), by (step) and direction (+ or -))
  • symbol-namespaces - symbol-namespaces defines a new kind of package that's named by a symbol rather than a string and that maps from existing symbols to their respective "implicitly managed" counterparts