title: How do I evaluate "&optional argument" in emacs lisp?
body: <p>I dont understand how to evaluate "&amp;optional argument" in emacs lisp.</p>
  
  <p>My code is:</p>
  
  <pre><code>(defun test-values (a &amp;optional b)
  
    "Function with an optional argument (default value: 56) that issues a 
  message indicating whether the argument, expected to be a
  number, is greater than, equal to, or less than the value of 
  fill-column."
  
  (interactive "p")
  
  (if (or (&gt; a b)(equal a b))
    (setq value a)
  (setq value fill-column)
  (message "The value of payina is %d" fill-column))
  
  **(if (equal b nil)
    (setq value 56)))**
  </code></pre>
  
  <p>In the first part, everything is perfect if I evaluate <code>(test-values 5 4)</code> or <code>(test-values 5 5)</code>.</p>
  
  <p>But, when I evaluate <code>(test-values 5 ())</code> or <code>(test-values 5 nil)</code>, I have the following error:</p>
  
  <pre><code>**Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
    &gt;(5 nil)
    (or (&gt; a b) (equal a b))
    (if (or (&gt; a b) (equal a b)) (setq value a) (setq value fill-column) 
  (message "The value of payina is %d" fill-column))
    test-values(5 nil)
    eval((test-values 5 nil) nil)
    eval-last-sexp-1(nil)
    eval-last-sexp(nil)
    call-interactively(eval-last-sexp nil nil)
    command-execute(eval-last-sexp)**
  </code></pre>
  
  <p>Can anyone help me, please? Thanks.</p>