Re: [PATCH] [RFC] Closures and lambda functions in PHP
| From: | Edward Z. Yang | Date: | Tue, 17 Jun 2008 11:48:27 +0000 |
| Subject: | Re: [PATCH] [RFC] Closures and lambda functions in PHP | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-38322@lists.php.net to get a copy of this message | ||
Larry Garfield wrote:
> $e = new Example();
> $lambda = $e->myMethod();
> $e->$lambda(5);
>
> That doesn't seem right at all, but that's how I interpret "Essentially,
> closures inside methods are added as public methods to the class that
> contains the original method." Can you give an example of what that actually
> means?
At first blush, this sets off warning bells in my head, I suppose
because my notion of a lambda says that the lambda should not carry any
baggage about the context it was created in.
However, with further thought, I believe that binding the lambda's
lexical scope to the place it was defined is:
* Conducive to good coding (you will always be able to look outside the
lambda to find out where the lexical variables are coming form)
* Adds functionality, since anything you want to pass to the function
via the callee's context can be passed via a parameter
What would be neat, however, is the ability to rebind the lambda to
another context. Also, I don't know how other languages do it (Python?
Lisp?).
--
Edward Z. Yang GnuPG: 0x869C48DA
HTML Purifier <http://htmlpurifier.org> Anti-XSS Filter
[[ 3FA8 E9A9 7385 B691 A6FC B3CB A933 BE7D 869C 48DA ]]