Nope. You have choices:<p><pre><code>  (defmethod quack ((foo string))
    ... ;; foo is never anything but a string here. 
    ... ;; definitely not nil!
    )

  (defmethod quack ((foo null))
    ... ;; foo is definitely nil here
    )
</code></pre>
Unlike in languages where you have a String reference that can be null, a CLOS method parameter specialized to a string cannot be NIL!<p>We can also have this piece of minimalism, quite often recurring in Lisp code:<p><pre><code>   ;; yield x if it is not nil, else yield y
   (or x y)
</code></pre>
Or play hardball:<p><pre><code>  ;; if calculation signals an error,
  ;; catch it and keep going
  (ignore-errors (calculation x))
</code></pre>
After programming in Lisp for a while you would never write:<p><pre><code>  (if (not (null x)) ...)
</code></pre>
because it is verbose way of expressing:<p><pre><code>  (if x ...)
</code></pre>
Every value is its own test for non-nullness, since every value is a generalized boolean which stands for falsehood if it is nil, and truth otherwise.