Preliminary report on a practical type inference system for common Lisp

While the combination of dynamic typing and generic functions in Lisp have always presented a challenge to optimizing Lisp compilers for stock hardware, the situation has never been more difficult than in Common Lisp [7]. For example, one may add any of eight distinct primitive types of numbers in any combination using the single function+. While the overhead of sorting this type information out at run-time may be largely alleviated by the use of special-purpose hardware or microcode, the problem remains critical for implementations running on conventional general-purpose computers. Indeed, this situation played a crucial role in at least one wide-ranging critique of Common Lisp [2].