On Mon, May 3, 2010 at 5:54 PM, mathieu.suen <[email protected]> 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