Common Lisp has declared safety levels, so implementations can provide diagnostics about types at safety level 3, letting you roast in the flame of your undefined behavior only at lower safety levels.

I can't remember what the exact requirements are; I'd have to go back and re-read that.

Anyway, whether required by ANSI CL or not, implementations are good about protecting you from yourself unless you declare type AND request high speed and low safety.

Looking at the spec now, I don't see where it specifies that code is safe by default (safety 3) if no declarations are specified in the global or lexical environment. I see the requirement that implementations must not ignore safety deeclarations that raise the level of safety (unless they treat all code as safe and don't implement those declarations).