title: In Common Lisp, why do multi-expression bodies of (if) statements require (progn)?
body: <p>Is this just a bit of historical cruft left over from the 1950s or is there some reason syntactically why multi-expression bodies of (if) forms require (progn)? Why can't you wrap the multiple expressions in a set of parentheses like with (let):</p>
  
  <pre><code>   (if some-cond
       ((exp1) (exp2) (exp3)) ; multi exp "then"
       (exp4)) ; single exp "else"
  </code></pre>
  
  <p>It appears it would be trivial to write a macro to test each body to see first if it is a list and then if it is, if its first element is also a list (and thus not a function invocation) and then to wrap its subcomponents inside a (progn) accordingly.</p>