Lisp Corner Cases: Method Combinations
In the process of writing Declt, I had to deepen my knowledge of some Lisp corner cases, notably in the area of introspection. As you know, Common Lisp has more than 2 namespaces (calling it a “Lisp-2” is somewhat misleading). Sometimes, introspecting a potential symbol definition in one namespace is trivial (compiler-macro-function is one example). The “functional” namespace is heterogeneous but you can still make your way out of macros, regular or generic functions very easily. Distinguishing constants, special variables and symbol macros in the “variables” namespace is more complicated because there is no standard way to access that information, but with the help of some vendor-specific machinery (e.g. sb-int:info), it’s still doable.
Aug 16, 2013