LIL: CLOS reaches higher-order, sheds identity, and has a transformative experience
Venue
Proceedings of the International Lisp Conference 2012 (to appear)
Publication Year
2012
Authors
BibTeX
Abstract
LIL, the Lisp Interface Library, is a data structure library based on
Interface-Passing Style. This programming style was designed to allow for
parametric polymorphism (abstracting over types, classes, functions, data) as well
as ad-hoc polymorphism (incremental development with inheritance and mixins). It
consists in isolating algorithmic information into first-class interfaces,
explicitly passed around as arguments dispatched upon by generic functions. As
compared to traditional objects, these interfaces typically lack identity and
state, while they manipulate data structures without intrinsic behavior. This style
makes it just as easy to use pure functional persistent data structures without
identity or state as to use stateful imperative ephemeral data structures.
Judicious Lisp macros allow developers to avoid boilerplate and to abstract away
interface objects to expose classic-looking Lisp APIs. Using on a very simple
linear type system to model the side-effects of methods, it is even possible to
transform pure interfaces into stateful interfaces or the other way around, or to
transform a stateful interface into a traditional object-oriented API.
