The Problem with Lisp
I don&#x27;t understand the author.<p>The evaluation order in Lisp is not &quot;highly unpredictable&quot;, it is dependent on the form.<p>I don&#x27;t understand why he even constructs this strawman of &quot;you must start in the innermost sub-form&quot;.<p>That&#x27;s not a rule that anyone ever made. That&#x27;s the rule for arithmetic expressions, sure, but what does that have to do with Lisp?<p>The rule in Lisp – as he later admits – is &quot;look at the first symbol in the (outer) form&quot;.<p>And the whole point of special forms is to make your own rules about evaluations. In order to <i>help the programmer</i>.<p>Can you obfuscate the meaning? Hell, yes! Is that a reason not to allow it and to force obfuscated code by using unsuitable evaluation orders everywhere? Hell, no!<p>And even in this bad example Lisp is certainly not more unpredictable than any other language.<p>Let&#x27;s take C:<p><pre><code>  int func(int a, int b)
  {
    return a + b;
  }
</code></pre>
If you start at the innermost point &quot;a + b&quot; you get exactly the same questions: &quot;Oh gosh, what is the + operator?&quot;, &quot;How do I apply + to a number?&quot; (really?) and &quot;where do I store the result?&quot;<p>I think the author has misled himself into some extreme notion of the divine simplicity and purity of Lisp that nobody ever claimed to exist.