Lisp

Programs

Information about this code

Small

hacks

Conduits a souped-up package system for CL
Collecting macros to collect lists forwards
Memoize Memoizing functions, including local functions
Applicative iteration Scheme-style named let
HTML generation the WITH-HTML-OUTPUT macro
Abstract classes non-instantiable classes for CLOS, also final, non-subclassable, classes
Singleton classes Classes which can have only a single instance in CLOS.
Dynamic state structured access to special variables for CL
Wrapping-standard method combination with "wrapping" methods which are like around methods but called in most-specific-last order and outside all other methods
Read-time packages Support for selecting the package on a per-form basis in CL.
Hierarchical packages Support for hierarchical package names in CL. This is not entirely portable code as it needs to be glued into the package system. Works for LispWorks and CMUCL (ACL does not need it).

Implementation-specific

hacks

Colon commands
for LispWorks
Support for defining new top-level `colon commands' in LispWorks.

Larger

programs

CLC The Common/CORBA Lisp Client. Allows simple access to a Lisp server program from the command line in Unix and other similar systems. Mostly an exercise in learning CORBA. Requires LispWorks+CORBA but much of the code should work in other Lisps which have CORBA bindings. The client could be in any language which has CORBA bindings.
DSSV DSSV - DEFSTRUCT SLOT-VALUE - provides a portable way of getting at the slots and slot names of structure objects. It doesn't use a MOP and thus relies on a special version of DEFSTRUCT. Requires conduits to define the mutant CL package. Not heavily tested - known to work in CMUCL and LispWorks.

Toy

Programs

Subject-verb-object or: Look, Lisp is Object Oriented!
Global lexicals faked using symbol macros
A macro which is like CASE but can use a jump-table
Iterators in the style of Python and other fashionable languages
[TFEB]