The SBCL Common Lisp compiler detects some of those type errors at compile time - especially for declared types:<p><pre><code>    ;     (&gt; SECRET GUESS)
    ;
    ; caught WARNING:
    ;   Derived type of GUESS is
    ;     (VALUES STRING &amp;OPTIONAL),
    ;   conflicting with its asserted type
    ;     REAL.
    ;   See also:
    ;     The SBCL Manual, Node &quot;Handling of Types&quot;
    ;
    ; compilation unit finished
    ;   caught 1 WARNING condition
    ;   printed 8 notes
</code></pre>
Common Lisp allows optional type declarations. SBCL (this feature it has inherited from CMUCL) uses those as compile time type assertions.