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

Reply via email to