Re: Expression code blocks
| From: | Andreas Hennings | Date: | Thu, 22 Jun 2023 11:50:29 +0000 |
| Subject: | Re: Expression code blocks | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-120659@lists.php.net to get a copy of this message | ||
Hello Rowan, Ilja,
(sorry I did not see these replies sooner, I do some forwarding but it failed)
On Sat, 17 Jun 2023 at 16:59, Rowan Tommins <rowan.collins@gmail.com> wrote:
>
> On 17/06/2023 12:26, Ilija Tovilo wrote:
> > I don't believe blocks for general expressions are that useful in PHP
> > due to the lack of block scoping. Your suggestion to make the block a
> > separate closure could avoid that (as well as the optimizer issue
> > mentioned below) but comes with new issues, like making modification
> > of captured values impossible without by-ref capturing.
>
>
> I've been pondering various things in this space for a while,
> particularly since the last auto-capture closures RFC. I haven't quite
> coalesced on a coherent concept, but there are a few things that I think
> inter-relate:
>
> * Opting into block-scoped variables, while retaining full access to the
> outer scope, like JS "let"
> * Code blocks as some kind of first-class thing, distinct from closures
I think this would be my preferred option.
We would have to discuss how variables are scoped and captured, but I
could myself being happy with different options.
Currently variables from outside in short closures are auto-captured
by value, and nothing leaks outside:
https://3v4l.org/mdJvM
I would be happy if it works the same for expression code blocks.