patty
Patty is a library that facilitates working with functional data structures on top of CLOS. It consists of a few macros and metaclasses that integrate nicely with CLOS. Code using patty is similar in style to Haskell code using algebraic data types, primitive pattern matching and type classes.

The project home page is at http://common-lisp.net/project/patty