Any purporting-to-conform ANSI CL implementation will have CLOS built in. There are also "add-on" implementations from before it was part of standard CL: Closette is the code developed in the AMOP book and probably not practically useful, whereas PCL is fully-featured (if slower than a typical tuned commercial implementation might be) and has been used as the basis for the CLOS support in e.g. CMUCL and SBCL
Web pages:
- Marty Hall's Introduction to the Common Lisp Object System can be found here
- This page describes the bare essentials of CLOS. It's from James Arvo's Caltech CS class.
- A Brief Guide to CLOS by Jeff Dalton.
- Tae-Sun Chung's CLOS Overview
- CLOS overview and concept papers on Richard P. Gabriel's site.
- CLOS-DB is a database interface for the Common Lisp Object System.
Topic listing:
- change-class dangers - change-class changes the class of the CLOS object involved; in
- cl-mop - Basic tools to make dealing with CLOS easier and portable
- clos-diff - clos-diff is a library to create and apply diffs of CLOS objects in a compact representation
- Closer to MOP - Closer to MOP is a compatibility layer that rectifies many of the absent or incorrect MOP features as detected by MOP Feature Tests
- Closette - A working Closette package (with ASDF definitions) can be found on Github, it can be compiled and loaded in almost every CL implementation
- clutter - Annotations/decorators/attributes for CLOS classes and slots
- Filtered Functions - filtered-functions implements arbitrary predicate dispatch for CLOS
- 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
- MOP - Meta Object Protocol(MOP) is a protocol for describing CLOS itself as an extensible CLOS program
- MOP-standards-discussion - The MOP is great, but nothing is perfect
- Portable CommonLoops - Portable CommonLoops is a reference CLOS/MOP implementation originally developed by Xerox, deriving from the Loops Project
- wrapping-standard - Like the standard method combination but :wrapping methods get called in :most-specific-last order (and outside :around methods): wrapping-standard.lisp
See also
- defclass-std is a shortcut macro to write DEFCLASS forms quickly (in Quicklisp). For example, the following
(defclass/std example ()
((slot1 slot2 slot3)))
expands to
(DEFCLASS EXAMPLE ()
((SLOT1 :ACCESSOR SLOT1 :INITARG :SLOT1 :INITFORM NIL)
(SLOT2 :ACCESSOR SLOT2 :INITARG :SLOT2 :INITFORM NIL)
(SLOT3 :ACCESSOR SLOT3 :INITARG :SLOT3 :INITFORM NIL)))
It is very flexible. The repository contains examples from other projects (Clack, etc).