On Thu, 01 Oct 2015 13:48:52 +0300, Rowan Collins <rowan.coll...@gmail.com> wrote:

Levi Morrison wrote on 01/10/2015 04:06:
I'm going to ask everyone to stop saying that auto-closing is bad
unless they also provide a demonstration of why it was bad.

Please see my e-mail from last night, or Rasmus's in the original thread. It is "bad" (or, controversial) because it is a fundamental change to PHP's scoping rules, which currently treat all variables denoted by "$foo" as local to the current function, without exception.

And yet we have super-globals. You can also access variables of one script's global scope from another script's global scope without importing or anything like that. I wouldn't say that PHP has or follows any idiomatic "way" of how scopes should work, it's just evolutionary.


I'm also going to ask everyone to stop suggesting new syntax for
importing variables. If use() is a pain then auto-importing the used
variables is a good solution. If it's not a pain why are you
suggesting new syntax?

Because the feature is being described as "short closures", or as a new syntax, so people are looking for ways to make closures shorter without changing the functionality.

If auto-capture is the main feature you are interested in, and syntax just a by-product, then it might be sensible to make that clear. As a straw man, it would be possible to have auto-capture closures with no new syntax at all, e.g. function($x) use(*) { return $x * $y; }

I believe Levi's and Bob's intentions are not to introduce auto-capture but to add short closures, auto-capture being a tool that works best to help in achieving this. `use(*)` just as long as `use($y)`, and the shorter version where you need to separate args from uses with semicolon will be harder to read (ex.: `fn($x; $y) => $x * $y` vs `fn($x) => $x * $y` - it's not obvious at all what semicolon does. Whereas with auto capture you can at least guess that this variable will be captured from defining scope, if you don't know how this feature works).

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

Reply via email to