[Melbourne-pm] Closures and scope warnings

Daniel Pittman daniel at rimspace.net
Wed Jul 28 22:41:00 PDT 2010


Toby Corkindale <toby.corkindale at strategicdata.com.au> writes:
> On 29/07/10 14:43, Daniel Pittman wrote:
>> Toby Corkindale<toby.corkindale at strategicdata.com.au>  writes:
>>
>> [...]
>>
>>> That's the "best practice" way to do transactions, I believe, but it does use
>>> a closure in a way that it wasn't really intended, I think?
>>
>> I have no opinion on the wider discussion, but damn, what are they teaching in
>> those schools these days?
>
> Search me, when I was at school they were still teaching ADA83 and COBOL! (I
> might even have the textbooks gathering dust in an attic somewhere)
> I don't think either language supported Closures?
>
>
>> This is exactly what closures are for, up and up. :)
>
> Hurrah! Good to know then :)

Their original design was, basically, that you attach the code you write to a
GUI button, not a database transaction, but that the ability to capture
variables was (one of) the mechanisms recommended for external communication.

> They do strange things to my understanding and concepts of scoping
> though. Imagine if you called a recursive function, passing a closure
> around!  Mmm, tastes obfuscatory! :)

Hah.  Yeah, they make it necessary to regard the language as a graph of
objects tied together by their references to each other, instantiated from the
linear structure described in the source code.[1]

For bonus fun, play around with implementations of the Y combinator:
http://en.wikipedia.org/wiki/Y_combinator

    "Although fixed point combinators are the standard solution for allowing a
     function not bound to an identifier to call itself, some languages like
     Javascript provide a syntactical construct which allows anonymous
     functions to refer to themselves."

        Daniel

Footnotes: 
[1]  ...or, at least, to have a mental model that is some approximation of
     that reality, even if you express it differently.

-- 
✣ Daniel Pittman            ✉ daniel at rimspace.net            ☎ +61 401 155 707
               ♽ made with 100 percent post-consumer electrons


More information about the Melbourne-pm mailing list