title: Difference between LET and SETQ?
body: <p>I'm programming on Ubuntu using GCL.  From the documentation on Common Lisp from various sources, I understand that <code>let</code> creates <em>local</em> variables, and <code>setq</code> sets the values of <em>existing</em> variables. In cases below, I need to create two variables and sum their values.</p>
  <h3>Using <code>setq</code></h3>
  <pre><code>(defun add_using_setq ()
    (setq a 3)  ; a never existed before , but still I'm able to assign value, what is its scope?
    (setq b 4)  ; b never existed before, but still I'm able to assign value, what is its scope?
    (+ a b))
  </code></pre>
  <h3>Using <code>let</code></h3>
  <pre><code>(defun add_using_let ( )
    (let ((x 3) (y 4)) ; creating variables x and y
       (+ x y)))
  </code></pre>
  <p>In both the cases I seem to achieve the same result; what is the difference between using <code>setq</code> and <code>let</code> here?  Why can't I use <code>setq</code> (since it is syntactically easy) in all the places where I need to use <code>let</code>?</p>