01:48
ilbot3 joined
06:37
leedo joined
07:48
zakharyas joined
12:51
zakharyas joined
|
|||
dalek | arVM/wrong_run_merge: 2f6a057 | timotimo++ | src/io/procops. (2 files): wrong attempt to make :merge work properly. |
16:34 | |
timotimo | i didn't realize i hadn't pushed that WIP stuff | ||
(it also doesn't compile, i don't think) | 16:35 | ||
18:28
FROGGS joined
20:20
zakharyas joined
|
|||
timotimo | i believe .VAR is only an actual operation if you directly call a method on the result, right? | 20:52 | |
moritz | m: say (my $x).VAR ~~ Scalar | 20:53 | |
camelia | rakudo-moar 02fdcf: OUTPUT«True» | ||
moritz | m: say (my $x) ~~ Scalar | ||
camelia | rakudo-moar 02fdcf: OUTPUT«False» | ||
moritz | disproven by example | ||
timotimo | ah, hmm. | ||
zefram is giving me a hard time; i think i should explain to him that assignment will automatically decont the RHS | 20:54 | ||
but maybe $a = $b.VAR should be a special case that doesn't decont before assigning? | |||
moritz | and what would the semantics be? | 20:56 | |
binding? | |||
timotimo | nah | 20:57 | |
put a scalar in your scalar | |||
zefram seems to want that for some reason | |||
moritz | that sounds like a Bad Idea | 20:58 | |
because automatic decont only goes one level deep | |||
timotimo | m: my $a = 3; sub ss1($s, $nv) { say $s.VAR.DUMP }; ss1($a.VAR, 7) | ||
camelia | rakudo-moar 02fdcf: OUTPUT«▶▶3» | ||
moritz | and so decont stops being idempotent with such values | 20:59 | |
geekosaur | zefram is looking for perl 5's $y = \$x; $$y = 4 | ||
moritz | $y := $x; $y = 4 | ||
geekosaur | this does not strike me as the right way to do that | ||
timotimo | feel free to contribute to the discussion, please | 21:05 | |
#128842 is the ticket this is being discussed under | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128842 | ||
geekosaur | my problem with that one, btw, is it feels a lot like the old perl 4 hack for "references" where you assigned a glob to a `local` | 21:06 | |
and, more generally, Scalar seems to be a second class citizen of sorts, or maybe an implementation detail that should not be exposed because it's not complete enough to be used outside of the implementation | 21:07 | ||
see also recent discussion of how you "undo" a bind, which would be easy if you could bind to a new Scalar, but creating a new Scalar requires delving into NQP-land | |||
(also it strikes me this doesn't really belong in #moarvm...) | 21:08 | ||
timotimo | you undo a bind by doing <>, don't you? | 21:10 | |
sorry, i mis-channed this here | |||
geekosaur | no, I mean once you have done my $a := $b; how do you make $a refer to an independent Scalar later | 21:11 | |
timotimo | oh | 21:12 | |
$a := Scalar.new() | |||
or $a := (my $) | |||
geekosaur | the latter was the hack I came up with. the former throws; Scalar.new is not designed to be used from Perl 6 | 21:13 | |
timotimo | hm | ||
Proxy is, though. interestingly. | |||
geekosaur | you need to set a bunchg of bootattrs in NQP | ||
timotimo | oh, huh. | ||
jnthn | The answer really is "we'd really rather you don't meddle with that, and it's no accident we're not nailed it down very strongly in 6.c" | ||
*we've | |||
geekosaur | or rather, ise NQP to create the attrs and they are then mandatory parameters to Scalar.new | ||
jnthn | We currently implement .VAR by just wrapping the thing in an extra layer of Scalar-ness | 21:18 | |
geekosaur | yes, that's hat Zefram spotted | ||
*what | |||
jnthn | And that means that anything that decontainerizes twice will get you back to the value. | ||
Yes. Zefram loves details. :) | 21:19 | ||
I don't know that this approach will survive for the long run. For now, it's "good enough". | |||
And so far as I know we've not spectested ourselves into a corner on the issue. | 21:20 | ||
geekosaur | no, and I get the impression Zefram's trying to force it to be nailed down | ||
jnthn | Then he's going to have to wait. :) | ||
I don't disagree it wants to be, but you can't prioritize everything at the same time. | 21:21 | ||
And the trick will be figuring out a solution that doesn't just involve sticking more flags to check on every code path that touches an item. | 21:25 | ||
Or at least, only doing that once we're really happy we can get rid of the checks again later. | |||
It may be that we instead want to solve it by wrapping it up in some object with an interesting meta-object. | 21:26 | ||
But that'd get a tad interesting once we start hitting .WHAT | 21:27 | ||
m: my $a := 42; $a := my $; $a = 100; say $a | 21:29 | ||
camelia | rakudo-moar 02fdcf: OUTPUT«100» | ||
jnthn | That's how you can easily get a fresh Scalar btw. No Scalar.new required. | ||
lizmat | github.com/rakudo/rakudo/commit/552d9cb6b6 | 21:49 | |
good night, #moarvm :-) | |||
jnthn | :) | 21:50 | |
'night |