LIL sports both pure (persistent, immutable) and
stateful (ephemeral, mutable) variants
of data structures in Interface-Passing Style.
This variants are in the respective packages PURE and STATEFUL;
a common core is shared in package INTERFACE, covering read-only operations;
automatic transforms allow bridging from stateful to pure and back.

LIL supports data structures in traditional Object-Oriented Style,
in both stateful (the usual Object-Oriented kind) and pure variants,
in the respective packages POSH and CLASSY.
There too, automatic transforms to go from Interface-Passing Style to
traditional Object-Oriented Style and back.

Building it

LIL was recently converted to use the asdf-package-system,
whereby instead of dependencies being listed in a central .asd file,
each source file has a defpackage form from which the dependencies are deduced.
While we think it's a good way to write Lisp code,
you don't have to use it in your own code to use LIL.
We're hoping that asdf-package-system will soon be part of ASDF itself,
but until an updated version of ASDF is universally available,
you can find it here: