Type-checking is really where the trench is dug between Lisp and ML. The prescence of type-checking in ML (and its absence even in recent implementations of Lisp) is reflective of two competing philosophies about programming. I shall state them in condensed form.

ML: Programming is a logical discipline akin to mathematics. Programs should be right and being right is more important than anything else.

Lisp: Programming is an art. Programmers are artists in the pursuit of ideas. Programs are often wrong, but that does not matter. Being free to do what you want is more important than anything else.

– from “A Rationalisation of Lisp” by Mark Tarver