On Thu, Aug 3, 2023 at 10:20 AM Bakul Shah <bakul@iitbombay.org> wrote:

I have not heard such horror stories about Common Lisp (or may be I have forgotten them!). 

Both Common Lisp and Python have optional static typing that is as rigorous as you might want.  In the case of Python it is an outboard tool that you put into your build file; Python itself ignores declarations.  (That means that the declarations are not used to optimize runtime performance.)  The mypy tool does extensive type inference; you can get a long way without ever writing a declaration.

For CL, type checking is part of the compiler; the interpreter generally ignores type declarations, although Steel Bank CL, the fastest existing implementation, uses the compiler even in the REPL.