To a language implementor, these distinctions are not pedantic at all.  A declaration of an array is a thing with a type, a name, and a size, each of which we have to pay attention to.  It&#x27;s really nothing like a sequence of consecutive locations in memory.<p>To a language <i>user</i>, certainly, such distinctions usually don&#x27;t matter.  But conflating &quot;lambda expression&quot; and &quot;closure&quot; is particularly problematic.  On the one hand, as this article points out, not all lambda expressions are evaluated by constructing closures.  On the other, it&#x27;s certainly not the case that all closures come from lambda expressions -- in many languages (certainly Scheme, Common Lisp, JavaScript, and Python, and I think Ruby and PHP) you can perfectly well create a closure from a named function; it&#x27;s done all the time.  Here&#x27;s an example in Python:<p><pre><code>  def f(a):
      def g(b):
          return a + b
      return g
</code></pre>
See?  f returns a closure, but there&#x27;s no lambda expression in the code.<p>So given that lambda expressions and closures, though related, are not in 1-to-1 correspondence, I think it&#x27;s important to understand the distinction.