On 01 Oct 2014, at 07:48, Father Chrysostomos <spr...@cpan.org> wrote: > Does ‘state’ govern ‘:=’ the way it governs ‘=’? In other words, just as > this: > > state $x = 1; > > only assigns to $x once (per closure), does the same apply to this? > > state $x := $y; > > I can’t find anything in the specs that implies that it does. > > The reason I ask is that I am currently implementing binding for Perl 5, but > the syntax is different— > > \$x = \$y; > > (The reason for the different syntax is that, when we tried to use :=, we > could not find a coherent way to handle edge cases [e.g., flattening vs not > flattening]. Reusing existing Perl 5 syntax seemed the most straightforward > and intuitive approach.) > > —and I am debating whether \state $x = \$y should bind only once or every > time the surrounding code is executed. I could argue it either way (though I > am leaning toward the latter), so I thought to find out what Perl 6 does.
It would seem that binding state variables will be something that will be prohibited in Perl 6, until such time we find a good use case for it. [15:55:36] <lizmat> well, all of this was because of a question of Father Chrysostomos (a very productive p5p contributor) on p6l [15:57:01] <jnthn> OK. Well, I'll leave it at, I'm happy enough with the current semantics, so unless TimToady++ feels they have to chnage, then I'm not inclined to do much about the status quo. [15:57:44] <jnthn> (Where by "the current semantics" I mean, what Moar does, and I'm about certain what we do on JVM. I don't actually know how things are on Parrot.) [15:57:59] <lizmat> eh, but the current semantics silently do the wrong thing, no ? [15:59:11] <jnthn> lizmat: Depends how you define the semantics of state. [15:59:44] <jnthn> lizmat: Note that if you go binding a temp or let var you are in equal trouble. [16:00:03] moritz wouldn't mind compile-time disallowing rebinding temp/let/state vars [16:00:05] <jnthn> 'cus those are certainly about value, not container [16:00:14] <lizmat> moritz +1 [16:00:18] <jnthn> I took state to be wanting the same semantics [16:00:31] <jnthn> Yeah, I could go with a conservative approach of "just disallow it" [16:00:53] <lizmat> I'll answer FC Hope this answer your question, Liz