title: Why do we need funcall in Lisp?
body: <p>Why do we have to use <code>funcall</code> to call higher order functions in Common Lisp? For example, why do we have to use:</p>
  
  <pre><code>(defun foo (test-func args)
    (funcall test-func args))
  </code></pre>
  
  <p>instead of the simpler:</p>
  
  <pre><code>(defun bar (test-func args)
    (test-func args))
  </code></pre>
  
  <p>Coming from a procedural background, I'm a bit surprised by that since the languages I'm more used to (e.g. Python, C#) don't need the distinction. In particular, on the source level at least, the C# compiler transforms it to something like <code>func.invoke()</code>.</p>
  
  <p>The only problem I see is that this would mean we couldn't call a global function <code>test-func</code> anymore because it'd be shadowed, but that's hardly a problem.</p>