Etienne Kneuss a écrit :
Hello,

On Mon, Nov 16, 2009 at 2:10 PM, Mathieu Suen <mathieu.s...@easyflirt.com>wrote:

Pierre Joye a écrit :

 On Mon, Nov 16, 2009 at 12:07 PM, Mathieu Suen
<mathieu.s...@easyflirt.com> wrote:

 • Pensez à l'environnement, n'imprimez cet e-mail qu'en cas de réelle
nécessité

Discussing endlessly an issue only because you do not understand it is
also an environmental problem, please consider to read the manual and
stop to use every single channel to ask the same questions again and
again.

Salutations,

That's not a question, look at what lisp dose and scheme.
Look at the lambda calculus etc.

The variable inside the foreach should not be captured outside.
Like function argument. And again and again you are doing the same
mistake:


Static scoping is closely related to variable declaration. In PHP, there is
no such thing as a variable declaration statement (apart from function
arguments or class members, which are correcly scoped).

I am pretty sure you can have static scoping without declaration statement.
Or you can consider "$a = 2" as a declaration statement.
Which imply that

if (..) { $a = 2; } else { $a = 3; }

Produce 2 bindings of $a or can be a free if you 'declare' it outside .
 As:

$a = null;
if (..) { $a = 2; } else { $a = 3; }

What's strange is that part of the language is statically scoped will the other part is dynamic.
See function vs. if, loop statement.

Even worst if you think of the $_GET variable which should have a special scope...

There is only an
assign statement, that may introduce a new variable, or not. Without such a
declaration statement, static scoping doesn't make much sense.

For example:

if (..) { $a = 2; } else { $a = 3; }

echo $a;

would either fail or require some branch analysis at compile time to work.
which we can't really afford.

Or:

$a = 2;

if (...) { $a = 3; }

There is no way of stating whether $a = 3; should be for a $a that is
unrelated to the outer $a.


In other words, the kind of scoping you want will most likely never be
implemented in PHP.

Best


"Dynamic scoping is primarily interesting as a historical mistake: it was
in the earliest versions of Lisp,
and persisted for well over a decade. Scheme was created as an experimental
language in part to experiment
with static scope. This was such a good idea that eventually, even Common
Lisp adopted static scope.
Most modern languages are statically scoped, but sometimes they make the
mistake of recapitulating this
phylogeny. So-called “scripting” languages, in particular, often make the
mistake of implementing dynamic
scope (or the lesser mistake of just failing to create closures), and must
go through multiple iterations before
they eventually implement static scope correctly."
- Shriram Krishnamurthi, "Programming Languages:
Application and Interpretation" section 6.5:

-- Mathieu Suen



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php






-- Mathieu Suen

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to