Common Lisp supports gradual typing and will (from my experience) do a much better job of analyzing code and pointing out errors than your typical scripting language.
The reason I switched from Scheme to Common Lisp was because I could say...
(defun foo (x)
(declare (type (Integer 0 100) x))
(* x
(get-some-value-from-somewhere-else)))
And then do a (describe 'foo) in the REPL to get Lisp to tell me that it wants an integer from 0 to 100.
No thanks