What Lisp are you developing with? Mature "industrial strength" Lisp compilers do perform type checks prior to run time.
Dynamic typing isn't optimization; dynamic typing without any static analysis is the utter lack of optimization.
Dynamic typing isn't optimization; dynamic typing without any static analysis is the utter lack of optimization.
It's fine to have some kind of option for data whose type isn't known until runtime. This stuff happens, and languages that insist there's no such thing make dealing with it more difficult. But this is the rarer case! Why optimise for it rather than for the more common one?