Exhaustiveness checking in Common Lisp, part 2: The Case of the Missing ADTs

The term exhaustiveness checking comes from functional languages, and programmers experienced with functional languages may feel confused — where are the algebraic data types? In, say, Ocaml, to get exhaustiveness checking, you first have to define an ADT: This superficially resembles the deftype form above, but what it does is very different. The Ocaml defines …

Exhaustiveness checking in Common Lisp, part 1: ecase-of

A frequently heard wish is that Common Lisp had better support for static types. I am skeptical. I like the idea, but Lispers are far from pushing the boundaries of what the type system of Common Lisp already offers. What does the type system of Common Lisp offer that Lispers don’t use? For me, the …