Static Type Checking in Common Lisp
Of course you can invoke a type checker inside a language with compile time macros. Did anyone ever doubt that?<p>The interesting question is: what does that type checker actually <i>check</i>? How does it deal with normal lisp functions? How is non-trivial data represented? And what happens when it stumbles upon a runtime macro?<p>And, on a more practical side, how does it access the environment?