On Mon, May 3, 2010 at 5:54 PM, mathieu.suen <mathieu.s...@easyflirt.com> wrote: > >> I think you actually misunderstand the difference in >> >> http://en.wikipedia.org/wiki/Closure_%28computer_science%29#Differences_in_semantics >> >> The way I read if the difference is wether it returns from the closure >> function or the surrounding function *calling* it. Not the *defining* >> scope. >> >> And no, it doesn't make sense in the PHP context IMHO. >> >> - Chris >> >> > > "returns from the closure function" > To go were? > > I had maintain a smalltalk compiler. > I did not misunderstand the difference. > > The Common Lisp implementation is the more explicit one. > For exemple: > > (defun eval-l1 (fct) (funcall fct)) > (defun bar (x) (eval-l1 #'(lambda () (return-from bar 45))) > x) > > (bar 23) -> 45 > > When funcall is apply you do not return from eval-l1. You return from bar. > Which is the defining scope of the lanbda.
So <?php $a = function() { return; } $a(); echo "end"; ?> would it be an infinite loop? would it print end? what about: <?php function foo($c) { bar($c); echo "f"; } function bar($c) { $c(); echo "b"; } $c = function() { return; } foo($c); what would it print? "f"? "fb" ? nothing? Please, if you want to propose design changes, make a decent proposal first, add some examples, not simply "what if PHP did <vague>". Best, > > > -- Mathieu Suen > > > -- Etienne Kneuss http://www.colder.ch -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php