Good post, one small issue though, "type inference, which you can do in any language", is not really true. Once you get dynamic enough type inference becomes nearly impossible (Cannon, 2005: http://www.google.com/url?sa=t&source=web&cd=4&v...)
The article is talking about partial type inference, and most implementations of type inference I've seen do partial type inference.
Take a look at "Declarations as Assertions" section in SBCL manual as well.