Re: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
by Alexander Wagner other posts by this author
Jun 20 2008 9:58AM messages near this date
Re: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
|
Re: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
> I think allowing globals/lexicals to be passed by value doesn't make
> much sense, you could just use a regular parameter for that.
No, that is highly inconvenient when you're doing actual functional
programming with higher order functions and everything.
$i = 1;
$incrementor = lambda ($x) lexical ($i) { return $x + $i; }
...
$arr = array_map($incrementor,$arr);
How would you do this by passing in $i as a parameter without a closure?
And if you use references, this may break if $i is a loop variable (the
canonical example of closure-WTF).
> And that would bring another inconsistency to PHP, and would mean that PHP
> is discouraging the use of $_GLOBALS, that was created to discourage to use
> of 'global $var'.
All languages accumulate cruft as they evolve.
global behaves in a manner that is inconsistent with pretty much everything
else in PHP (referencing by default), and variables can be declared global in
the middle of a function, which makes no sense at all. It would be a mistake
to be consistent with something so badly broken.
By "long term replacement for global" I meant to imply that it would actually
be a good idea to remove the old global keyword from the language. Deprecate
it in PHP 6 and kill it in PHP 7, or maybe in PHP 7 and 8. Cruft gone.
$GLOBALS should be kept around because it is not a reference and allows
acutally unset()ing a global variable, for example.
Gesundheit
Wag
--
Da sa� ich nun, führte Krieg und hatte Geburtstag.
- Joschka Fischer
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
Thread:
Christian Seiler
Wez Furlong
Dmitry Stogov
Stanislav Malyshev
Alexander Wagner
Dmitry Stogov
Andi Gutmans
Christian Seiler
Lukas Kahwe Smith
Sebastian Bergmann
Marcus Boerger
Markus Fischer
Troels Knak-Nielsen
Christian Seiler
Dmitry Stogov
Larry Garfield
Christian Seiler
Dmitry Stogov
Christian Seiler
Lars Strojny
Stanislav Malyshev
Marcus Boerger
Lars Strojny
Troels Knak-Nielsen
Larry Garfield
Marcus Boerger
Dmitry Stogov
Andi Gutmans
Alexander Wagner
Andi Gutmans
Alexander Wagner
Alexander Wagner
Christian Seiler
Alexander Wagner
Lars Strojny
Dmitry Stogov
Marcus Boerger
Lars Strojny
Dmitry Stogov
Alexey Zakhlestin
Federico Lebron
Dmitry Stogov
Rodrigo Saboya
lenar
Larry Garfield
Stanislav Malyshev
Marcus Boerger
Alexander Wagner
Lars Strojny
Larry Garfield
Robert Cummings
Rodrigo Saboya
Alexander Wagner
Christian Seiler
Chris Stockton
Alexander Wagner
Troels Knak-Nielsen
Andi Gutmans
Marcus Boerger
Christian Seiler
Lukas Kahwe Smith
Gwynne Raskind
Andi Gutmans
Christian Seiler
Stanislav Malyshev
Kalle Sommer Nielsen
Troels Knak-Nielsen
Lars Strojny
Alexander Wagner
Stanislav Malyshev
Alexander Wagner
Andi Gutmans
Marcus Boerger
Kalle Sommer Nielsen
Troels Knak-Nielsen
Stanislav Malyshev
Alexey Zakhlestin
Chris Stockton
Alexey Zakhlestin
Gwynne Raskind
Stanislav Malyshev
Christian Seiler
Gwynne Raskind
Stanislav Malyshev
Richard Quadling
Christopher Jones
Marcus Boerger
Steph Fox
Christian Seiler
Marcus Boerger
Stanislav Malyshev
Lars Strojny
Christian Seiler
Stanislav Malyshev
Marcus Boerger
Marcus Boerger
Andrei Zmievski
Stanislav Malyshev
Stanislav Malyshev
Alexey Zakhlestin
Chris Stockton
Christian Seiler
Christian Seiler
Larry Garfield
Edward Z. Yang
Christian Seiler
Larry Garfield
Christian Seiler
Nathan Nobbe
Christian Seiler
Alexey Zakhlestin
Larry Garfield
Philip Olson
|