<div dir="ltr"><div>From my moving-target understanding of closures, I'm guessing this has a closure</div><br><div><font face="monospace">let succ = add 1<br>    add x = xadder<br>      where xadder y = x + y<br>in succ 3</font><br></div><div><br></div><div>Now, can someone explain in words how the closure system is at work here? I see that the <font face="monospace">add 1</font> is being "baked in". Do we say this is a closure on <font face="monospace">add 1</font>? (Closure wording is confusing.) The enclosing scope of <font face="monospace">add</font> contains <font face="monospace">1</font>; however, <font face="monospace">xadder</font> is what <font face="monospace">succ</font> ultimately becomes, which has <font face="monospace">1</font> in its scope in that when <font face="monospace">xadder</font> is defined, the <font face="monospace">x</font> argument will be the <font face="monospace">1</font> of <font face="monospace">add 1</font>. Or am I missing something?</div><div><br></div><div>Researching closures vis-a-vis Haskell, I've seen the argument that,</div><div><br></div><div><ul><li>no, Haskell doesn't have closures,</li><li>yes, Haskell is lazy, <i>everything</i> can be seen as a closure, as even a value can be seen as a function without argument waiting to be evaluated (and so capturing its environment until it gets evaluated). </li></ul></div><div>This was taken from an older Haskell textbook (<i>Introduction to Functional Programming Systems Using Haskell </i>by Davie).<br></div><div><br></div><div>LB</div></div>