But it actually has some truth in programming.<p>There is little possibility of thinking with programming techniques that require closures until you are thinking <i>in</i> a programming language that <i>has</i> closures.  Learning the language does not cause the thoughts, but you cannot think through the thoughts effectively until you've developed a language that can express them.<p>Of course once you have learned to think those thoughts then you can figure out how to do those things in languages that don't have closures.<p>This raises, obviously, the question of how the idea of closures was ever first established.  And the answer to that is kind of interesting.  The history as I understand it is that they were invented by accident as a side effect of other decisions in ALGOL and Pascal.  But weren't extensively used there.  Then Sussman noticed that they worked extremely well when combined with the idea of functions as data that was already popular in Lisp, and co-wrote Scheme, the first Lisp with closures.  The adoption of closures in other variants of Lisp was usually quick (eLisp stands out as a glaring exception).  From there they got carried to other languages.  The adoption of closures in scripting languages, particularly JavaScript, brought them to a much wider audience, and now they are becoming pretty mainstream.<p>So nobody really thought up the first programming techniques involving closures from scratch.  Instead those techniques were invented in a bad form using other forms of scope, then closures were noticed as a solution for the shortcomings of those scoping problems and things cascaded from there.