pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, elf: etc.) (or perl6: for all) | irclog: irc.pugscode.org/
Set by Tene on 29 July 2008.
00:00 kulp left 00:15 Aisling left 00:17 Aisling joined 00:21 mncharity joined 00:23 ashleyb joined 00:27 pochi left 00:46 wknight8111 joined 00:58 wolverian left 00:59 PerlJam left 01:01 dalek left, pmichaud left 01:02 Juerd left, eternaleye_ left 01:16 pugs_svnbot joined, dalek joined, Juerd joined
Juerd Blown fuse 01:17
I shouldn't have mentioned the high uptime earlier today 01:18
wknight8111 as soon as you say something like that, Murphy comes down from space to rub his law in your face 01:19
Juerd Wish he'd done that sooner than 3 am 01:20
01:24 justatheory left
mncharity lol 01:31
01:36 hercynium_ joined 01:39 kanru left
pugs_svn r22466 | putter++ | [elfish/on_sbcl] More box cleanup. Better Hash design. Added reordering of emitted CL code so a sub can be used above its decl. Var mangling improved. Misc. 01:45
pugs_svnbot r22466 | putter++ | [elfish/on_sbcl] More box cleanup. Better Hash design. Added reordering of emitted CL code so a sub can be used above its decl. Var mangling improved. Misc. 01:46
01:48 penk joined 01:49 eternaleye_ joined
pugs_svn r22467 | putter++ | [elf_h] IRx1_FromAST now uses the Match x.hash accessor, instead of p5-ish x{'hash'}. 01:54
r22467 | putter++ | The resulting performance hit has not yet been measured. If it's a problem, we'll revert, and add a kludge postcircumfix:<{ }> method to Match for on_sbcl..
r22467 | putter++ | More "missing last required arg" fixes.
pugs_svnbot r22467 | putter++ | [elf_h] IRx1_FromAST now uses the Match x.hash accessor, instead of p5-ish x{'hash'}.
r22467 | putter++ | The resulting performance hit has not yet been measured. If it's a problem, we'll revert, and add a kludge postcircumfix:<{ }> method to Match for on_sbcl..
r22467 | putter++ | More "missing last required arg" fixes.
mncharity nibbling away at it.
01:56 mncharity left 02:13 alester joined 02:14 meppl left 02:18 Ontolog left 02:23 jhorwitz left 02:24 ashleyb left 02:29 wknight8111 left 02:33 Ontolog joined 02:40 alanhaggai_ joined 02:44 justatheory joined 02:55 alanhaggai left 03:02 elmex_ joined 03:06 elmex left, elmex_ is now known as elmex 03:22 sail0r joined 03:23 hercynium_ left, kanru joined 03:27 pugs_svnbot left 03:29 alanhaggai__ joined 03:30 justatheory left, sail0r left
diakopter killed pugs_svnbot 03:32
03:33 drbean left 03:45 alanhaggai_ left 03:55 kanru left 03:57 kanru joined 04:05 sri_work left 04:13 Bzek joined 04:45 meppl joined 04:57 alanhaggai__ left 05:07 drbean joined 05:16 Awatto joined 05:17 Psyche^ joined 05:20 meppl left 05:31 Patterner left, Psyche^ is now known as Patterner 05:32 PerlJam joined 05:45 alester left, pugs_svn left 05:46 pugs_svn joined 05:54 azawawi joined
moritz_ diakopter++ # permantly killing stuff ;) 06:02
06:09 japhb joined 06:21 Ehtyar left 06:27 eternaleye_ left
pugs_svn r22468 | azawawi++ | [t/spec] Fudged S10-packages/import.t for rakudo 06:29
06:36 ashizawa joined 07:01 smtms left 07:02 drbean_ joined, broquaint left
pugs_svn r22469 | azawawi++ | [t/spec] Moved LoadCounter.pm to t/spec/packages since it is needed by 07:02
r22469 | azawawi++ | S10-packages/require_and_use.t
07:02 smg left 07:04 smg joined, rafl left 07:05 rafl joined 07:07 drbean__ joined, smtms joined 07:13 drbean___ joined 07:14 drbean left 07:20 drbean_ left
pugs_svn r22470 | azawawi++ | [t/spec] Fudged S12-methods/indirect_notation.t for rakudo 07:22
07:26 drbean__ left 07:31 drbean___ left 07:34 drbean___ joined 07:40 drbean joined, icwiener joined, iblechbot joined 07:45 drbean_ joined 07:50 zamolxes left 07:51 drbean__ joined, drbean___ left
pugs_svn r22471 | azawawi++ | [t/spec] Fudged S29-context/eval.t for rakudo 07:53
07:56 drbean___ joined 07:59 drbean left 08:04 drbean_ left 08:06 cosimo joined 08:07 drbean_ joined 08:09 drbean__ left 08:12 drbean__ joined 08:14 drbean___ left 08:26 drbean_ left 09:00 zamolxes joined 09:12 drbean joined 09:29 drbean__ left
azawawi @seen bacek 09:30
lambdabot I haven't seen bacek.
moritz_ lambdabot-- 09:31
azawawi moritz_: hi
moritz_ hi 09:32
azawawi i've been looking at recent P6 RTs
and im thinking of taking this one for a starter rt.perl.org/rt3/Ticket/Display.html?id=59476
lambdabot Title: #59476: [TODO] Refactor Str.capitalize.
moritz_ I think Str.chop is easier as a start 09:33
but .capitalize should work out as well
azawawi perl6.exe on windows for parrot 0.7.1 is broken 09:34
moritz_ msvc, or cygwin?
azawawi the one from sourceforge.net/project/showfiles.p..._id=211372 09:35
moritz_ you should tell fperrad in #parrot (when he's present) 09:36
azawawi will do...
basically it has a fixed library path to his own dev env
moritz_ I think rurban is working on fixing stuff like that in his pdd30_install branch 09:37
azawawi win32 parrot/perl6 releases are always bad 09:38
moritz_ time to change that!
azawawi ;-) 09:39
moritz_ anyway, re Str.capitalize, patches welcome!
azawawi starts working on Str.* patches
09:57 krunen joined 09:58 zamolxes left 10:07 Awatto left 10:15 iblechbot left 10:29 smtms left 10:39 zamolxes joined 10:51 iblechbot joined
azawawi moritz_: rt.perl.org/rt3/Ticket/Display.html?id=59480 done... 10:57
lambdabot Title: #59480: [TODO] Refactor Str.chop
moritz_ runs the tests 10:59
rakudo_svn r31541 | moritz++ | [rakudo] simplified Str.chop. Patch by azawawi++ 11:05
11:08 alanhaggai joined
azawawi moritz_: thx 11:08
moritz_ thank *you*
azawawi is now busy with RT #59476 11:09
11:25 masak joined 11:42 alanhaggai left 12:12 icwiener left 12:14 icwiener joined 12:15 ashizawa left 12:30 azawawi left 12:31 tomyan joined 12:35 zamolxes left 12:43 penk left 12:54 Lorn joined 13:02 Bzek left 13:04 sri_work joined 13:11 wolverian joined 13:13 debianLIVE joined 13:15 cookys joined 13:18 pmichaud joined
moritz_ perl6: my $x; say $x.defined 13:35
p6eval pugs: OUTPUT[␤]
..rakudo 31543: OUTPUT[set_attr_str() not implemented in class 'Undef'␤current instr.: 'parrot;Failure;!exception' pc 8482 (src/gen_builtins.pir:5344)␤]
..elf 22471: OUTPUT[Can't call method "defined" on an undefined value at (eval 117) line 4.␤ at ./elf_f line 3861␤]
masak elf--, rakudo-- # that's just stupid :) 13:38
moritz_ indeed ;)
masak pugs++ # accordingly
moritz_ actually defined($x) works in rakudo
masak that's a start
moritz_ perl6: my $x; say defined($x) 13:39
p6eval elf 22471, pugs: OUTPUT[␤]
..rakudo 31543: OUTPUT[0␤]
diakopter [OT] amazon ec2 adds windows VMs... \o/ 13:47
rakudo_svn r31544 | moritz++ | [rakudo] Convert some 'new Failure' instances to '!FAIL', as per RT #58646 13:48
r31544 | moritz++ | Patch courtesy by ronaldxs++
13:49 azawawi joined
rakudo_svn r31545 | moritz++ | [rakudo] add a file to spectest_regression, and restore alphabetical order 13:51
moritz_ rakudo: use Test; plan 1; my Int $x; isa_ok($x, Int); 13:56
p6eval rakudo 31545: OUTPUT[Can't find ./Test in @INC␤current instr.: 'die' pc 12739 (src/gen_builtins.pir:7935)␤]
pmichaud perl6: say undef.isa(Int);
p6eval elf 22471, pugs: OUTPUT[␤]
..rakudo 31545: OUTPUT[0␤]
pmichaud perl6: my $x = undef; say $x.isa(Int); 13:57
p6eval elf 22471, pugs: OUTPUT[␤]
..rakudo 31545: OUTPUT[0␤]
moritz_ since Bool is an Enum of int, the 0 stringification seems correct to me
masak aye 14:00
moritz_ wonders if there's a test for that 14:01
masak probably not.
pugs_svn r22472 | moritz++ | [t/spec] tests for stringifying True and False (and add smartlink) 14:04
masak moritz_++
14:05 alester joined 14:08 ashleyb joined 14:12 barney joined 14:17 alanhaggai joined
diakopter karma moritz_ 14:17
@karma moritz_ 14:18
lambdabot moritz_ has a karma of 7
diakopter @karma moritz
lambdabot moritz has a karma of 175
moritz_ perlbot: karma moritz_
perlbot Karma for moritz_: 79
moritz_ perlbot: karma moritz
perlbot Karma for moritz: 1289
moritz_ I think lambdabot has stopped counting at some point
diakopter while 1 { lambdabot-- } 14:19
moritz_ integer overflow
erm, underflow ;) 14:20
masak no, overflow. 14:21
the sign doesn't matter
underflow is for floating-point numbers
Tene Juerd: tab-completion causes scary errors about missing fds on feather3
masak uh oh. 14:22
Tene Hmm. There's no Bot::BasicBot on feather3 anymore
Tene installs. 14:23
some locale issues too
It's very difficult for me to type without trying to tab-complete. 14:27
did someone need a polyglotbot in #perl6de?
moritz_ #perl6de is dead, to the best of my knowledge 14:28
masak long live #perl6de!
moritz_ I hung out there for about 4 months (together with bloonix and a few others), but we didn't really discuss anything 14:29
now I answer the occasional Perl 6 questions in #perlde instead, everybody is happy and I have less open irssi windows ;) 14:30
14:41 debianLIVE left 14:44 TJCRI joined 14:45 abra joined
rakudo_svn r31547 | tene++ | [pct] 14:54
r31547 | tene++ | * Generate an exception handler for CONTROL_LOOP_NEXT exceptions in for loops
r31547 | tene++ | [perl6]
r31547 | tene++ | * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions
r31547 | tene++ | [cardinal]
r31547 | tene++ | * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions
masak Tene++ 14:58
15:01 z80ASM joined
z80ASM hi Larry ;) 15:02
15:04 masak left 15:05 kanru left 15:06 kanru joined
z80ASM TimToady 15:09
pugs_svn r22473 | moritz++ | [t/spec] simplified next.t a bit to use initialized variables; fudged for 15:10
r22473 | moritz++ | rakduo.
15:11 Bzek joined 15:12 z80ASM left 15:15 z80ASM joined 15:33 ashleyb left 15:34 abra left
rakudo_svn r31548 | moritz++ | [rakudo] add tests for next to spectest_regression, Tene++ 15:36
15:37 smtms joined 15:41 smg left 15:43 z80ASM left 15:49 tomyan left 15:53 justatheory joined, Bzek left 15:58 gbacon left 16:01 armagad joined, gbacon joined 16:22 Exodist joined
rakudo_svn r31549 | pmichaud++ | [rakudo]: spectest-progress.csv update: 194 files, 4381 passing, 7 failing 16:22
16:35 eternaleye_ joined 16:38 masak joined
Juerd 16:21 < Tene> Juerd: tab-completion causes scary errors about missing fds on feather3 16:42
Tene: Can't reproduce that myself. Paste please 16:43
moritz_ Juerd: if you have some tuits... the links at www.parrotvm.org/svn/parrot/revision?rev=30851 return only empty pages 16:44
Juerd No tuits whatsoever
azawawi Juerd: Please type 'perl', space and then tab on feather3 16:46
Juerd Oh, feather3
It's there clearly in Tene's message but I didn't see it
No problem for me 16:47
azawawi Juerd: I think it happened after i safe-upgraded to unstable
moritz_ maybe just a broken /etc/bash_completion ?
Juerd azawawi: Are you using an old screen session?
Oh, I get it after loading /etc/bash_completion
Apparently that's not in root's .bashrc 16:48
I'd say the bash_completion is broken indeed.
It shouldn't go looking for things that aren't there :)
moritz_ rm /etc/bash_completion; aptitude reinstall bash
Juerd Go ahead; gotta go
azawawi will do it
moritz_ doesn't have acccess to feather3
azawawi moritz_: it works now... thx 16:51
moritz_ np 16:53
speckbot r14583 | larry++ | Describe how assignment metaoperators initialize undefined lvalues. 16:56
Tene I figured it was something like that. 16:57
masak Tene: I've been trying to break the new 'next' feature, but no luck. :) Tene++
moritz_ masak: just use a while or loop statement 16:58
masak rakudo: for { next } { say "O RLY?"; $_(); say "YES RLY!" } # even this works!
p6eval rakudo 31550: OUTPUT[O RLY?␤]
masak moritz_: oh, didn't try that :/
moritz_ masak: it seems to work only on for atm
masak rakudo: while * { next }
p6eval rakudo 31550: OUTPUT[No exception handler and no message␤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)␤]
masak hm. yes. 16:59
Tene: why is that?
moritz_ I think it's the block generating code 17:00
masak TimToady++ # notional "reduction" to an accumulator variable
pmichaud the while loop doesn't implement next yet. 17:01
I could probably do that after lunch. Also get while $x -> $a { say $a; } to work.
moritz_ pmichaud: you mean on PAST level?
pmichaud moritz_: correct -- the code that PAST::Op 'while' nodes generates doesn't handle CONTROL_LOOP_NEXT exceptions yet. 17:02
moritz_ is the plan to change PCT, or to simply add a :handles_excpetion<CONTROL_LOOP_NEXT> or something along these lines? 17:03
17:03 armagad left
pmichaud change PCT so that all of the loops understand the control exceptions. 17:03
moritz_ ok
pmichaud afk, lunch. 17:04
rhr TimToady: s/autovivificatoin/autovivification/ in spec update 17:05
[particle] rakudo: map { .say; .next } 1..3; 17:07
p6eval rakudo 31550: OUTPUT[Statement not terminated properly at line 1, near "1..3;"␤␤current instr.: 'parrot;PGE::Util;die' pc 119 (runtime/parrot/library/PGE/Util.pir:82)␤]
[particle] rakudo: map { .say; .next }, 1..3;
p6eval rakudo 31550: OUTPUT[1␤Method 'next' not found for invocant of class 'Int'␤current instr.: '_block15' pc 157 (EVAL_13:58)␤]
[particle] rakudo: map { .say; next }, 1..3; 17:08
p6eval rakudo 31550: OUTPUT[1␤No exception handler and no message␤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)␤]
masak should &next work inside a map? 17:09
moritz_ don't think so
masak it doesn't in Perl 5
ha! so for loops and maps aren't synonymous!
moritz_ unless map() catches that exception 17:10
[particle] map is for
moritz_ so what should it return when next() is called? no item?
masak [particle]: except that for doesn't return a value and map doesn't care for &next 17:11
17:11 smg joined
moritz_ rakudo: until 0 { say "yes"; next; }; 17:11
p6eval rakudo 31550: OUTPUT[yes␤No exception handler and no message␤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)␤]
17:12 viklund joined
speckbot r14584 | larry++ | typo from Bob Rogers++ 17:18
TimToady oh, rhr++ too :) 17:19
17:21 kanru left
TimToady masak: for is specced to return a value just like map 17:21
masak TimToady: but not to catch &next calls? 17:22
17:22 ryanc left
TimToady why shouldn't map catch next calls? 17:23
it's just a control exception
17:23 ryanc joined 17:25 eternaleye_ left 17:26 kst` left, ashleyb joined, kst` joined
masak TimToady: I didn't find anything about it in the specs. and Perl 5 doesn't catch next 17:26
17:41 ruoso joined
ruoso TimToady, er... my $foo; $foo *= 5; say $foo; does it print "5" or I did misunderstood the latest change in the spec? 17:43
moritz_ ruoso: it does. The infix:<*> operator knows its neutral element 17:44
that's also specced $somewhere
ruoso that's wildly unexpected... I should say...
masak ruoso: aye, it prints 5
I like it.
and I don't think it's more unexpected than 0 17:45
moritz_ ruoso: not at all. Otherwise [*] wouldn't work properly with an empty list
ruoso doesn't really see how that's related... 17:47
moritz_ wait, the synopsis says "If you apply an assignment operator to a *protoobject*" 17:50
masak aye
moritz_ so perhaps it only works for my Num $foo; $foo *= 5;
masak but the new change also talks about uninitiated hash slots
that should be about the same as non-typed undefined variables, methinks 17:51
moritz_ presumably my $x; fills $x with some kind of Object or Scalar proto object
masak there is no Object object, but yes, presumably 17:52
TimToady the Object object is what you used to think of as "undef" :) 17:54
masak TimToady: ah.
I sit corrected.
moritz_ so does my $x; $x *= 5; yield 5?
TimToady yes
moritz_ without type declaration on $x
masak exhales
moritz_ writes tests 17:55
masak moritz_++
ruoso while my $x; $x += 5; still yelds 5
moritz_ yes
masak except that you can't write like that :) 17:56
TimToady and ++ is semantically defined as +=
+= 1
except for all the .succ and .pred stuff, which doesn't assume 1
moritz_ "except where it's not" 17:57
ruoso I presume this is valid for plain "my %a; say %a<abc> + 1;" 17:58
pugs_svn r22474 | moritz++ | [t/spec] tests for autovivification with assignment meta operators
moritz_ maybe assignment-metaops.t would have been the better test name 17:59
not sure
TimToady ruoso: I think that's a warning
ruoso so this is just for the (something)= operators 18:00
TimToady yes
18:00 barney left
masak makes sense. 18:01
ruoso so it's the operator that checks for 'defined' and use the "neutral" value otherwise
but "undef" still knows how to morph itself into other objects, to support array and hash autovivification... 18:02
'my $foo; $foo<abc> = 3;' turns $foo into a hash 18:03
TimToady an outer container returns an autovivifiable protoobject in that case
a bare undef can't morph in-place, of course
ruoso alright... that specific kind of undefs can morph...
like my %a; %a<a><b><c><d> 18:04
TimToady but in general we need not tag rvalues with where they came from
if it's known that %a<a><b><c><d> is in rvalue contexxt it can just propagate a non-autoviv undef 18:05
which is likely cheaper to generate
ruoso right... as an optimization...
18:07 meppl joined
TimToady but maybe delete could pessimize that and trace an element back to its container 18:07
18:08 icwiener left
ruoso one thing I'm still not really sure.. is what triggers autovivification... for hashes and arrays, the spec says the binding process triggers it... 18:08
but what about other objects? 18:09
in S12 it seems to imply otherwise...
(binding and storing, of course)
TimToady if you bind something to a writeable location, you have to ask the argument to make itself writeable 18:11
and either it's intrinsically writeable already
or it is a prototype with a closure
and the closure does the autoviv
I don't see why that restricts it to hashes and arrays
except insofar as those are the basic types that already provide such protoobjects 18:12
well, and scalars, in some circumstance
$a<b><c> can autoviv $a
18:13 rindolf joined
ruoso TimToady, in S12:2070 it shows an example where a method call autovivifies the object 18:13
TimToady indeed 18:15
which seems to demonstrate that invocants are rw 18:16
ruoso hmm... that's getting even worse ;)
TimToady self = new Dog; :) 18:17
ruoso TimToady, the problem is not replacing the invocant...
moritz_ not Dog.new?
masak you can _replace_ self?
ruoso because the protoobject is something in the middle between the type Dog and a defined Dog
it's like a Dog soul ready to reincarnate... 18:18
TimToady well, maybe only if you explicitly declare the invocant rw
masak rakudo: class A { method x { self = 2 } }; my $a = A.new; $a.x; say $a
p6eval rakudo 31553: OUTPUT[2␤]
masak yuck.
moritz_ scary.
TimToady but the $dog.wag autoviv could be handled by the dispatcher outside of the method, perhaps
ruoso TimToady, right... that's the point... 18:19
moritz_ rakudo: class A { method x { self = 2 } }; my $a = A.new; $a.x; say $a; say $a.WHAT
p6eval rakudo 31553: OUTPUT[2␤Int␤]
ruoso TimToady, Dog{ .name => 'Fido' } is something supported even without 'rw invocant'
masak IMHO, declaring all arguments readonly but the invocant rw is a big mistake...
ruoso all the initialization of the object presumes that
the different stages 18:20
TimToady the object can be rw without the invocant parameter being rw
ruoso in p6opaque, it's like an object that was CREATEd but still not BUILD(t)
TimToady our rw-ness is not deep
well, just make it all work 18:21
ruoso the problem is not with the autovivificatoin process at all
TimToady waves his hands around vaguely
ruoso because it's just a matter of calling BUILD
the problem is knowing *when* to do it
18:21 abra joined
TimToady the invocant of a constructor isn't the object to be built 18:22
so I don't see a big problem
ruoso for instance... .exists is a method
why calling .exists doesn't autovivify it?
while calling $foo.wag() does 18:23
ruoso . o O ( does it have to do with that magical "bvalue context" thingy? ) 18:24
ruoso . o O ( 'bvalue' methods doesn't autovivify... .postcircumfix<{}> usually is a 'bvalue' method... ) 18:25
ruoso . o O ( it really looks sane )
moritz_ don't look for sanity when you want to implement Perl 6 ;) 18:26
ruoso moritz_, believe it or not, I do have a coherent model for implementing Perl 6 in my head ;) ;) ;)
TimToady the question is to what extent the compiler has to know about bvalue methods
azawawi finishes RT #59476 (rt.perl.org/rt3/Ticket/Display.html?id=59476) 18:27
lambdabot Title: RT Error
ruoso TimToady, autovivification is something runtime should be aware... not the compiler...
(except for marking explicit cases where it should not autovivify)
TimToady s/compiler/optimizer/
ruoso well... 'bvalue context' degreades to 'rvalue' or 'lvalue' too easily 18:28
TimToady if you assume the default of rvalues always returning something with a backref to the container, then the optimizer can be conservative
azawawi moritz_: 'Refactor Str.capitalize' is finished; could u please apply the patch?
moritz_ azawawi: I have to get some supper, then I can take a look 18:29
ruoso TimToady, at this point I'm assuming the non-optimized version always is 'bvalue' (i.e. backref to the container)
TimToady I can see situations where you might want to pass everything you can as bvalues so that you can get a better error message
azawawi moritz_: thx
ruoso TimToady, except on places it isn't at all (like methods not marked as rw) 18:30
TimToady "bvalue by default" might be one of those pessimizations that turns out to support a disruptive technology
on the other hand, it could easily blow up your performance
ruoso trust people that knows how to optimize things...
ruoso doesn't 18:31
TimToady there's a sense in which parrot is already bvaluish with PMCs
ruoso thinks he knows how to leave room for that people to work, tho
but very few methods need to be 'bvalue'
.exists, .postcircumfix<{}>, .postcircumfix<[]> 18:32
not many more...
18:32 zamolxes joined
TimToady and we can probably notice them by lexically scoped declaration somehow 18:32
ruoso you mean, 'is bvalue'?
TimToady $self is ref maybe? 18:33
ruoso but it's not $self, but the return value of a method
TimToady .exists is worried about $self, unlike .{} 18:34
ruoso in .postcircumfix<{}>, it's the return of the method that is bvalue, not the invocant...
TimToady but .{} also wants bvalue for the invocant 18:35
ruoso in a sense, it does...
masak what's a bvalue?
ruoso and that's what makes it non-autovivication-trigger?
TimToady and I think "is ref" may provide the clue
rather, lazy autoviv trigger
just give me a ref to the object and let me decide whether to autoviv 18:36
ruoso masak, it's something not yet in spec... but it basically means, 'bind context'
TimToady, oh... that was not the path I was taking...
masak oy, "not yet in spec" :) I'm dizzy enough from the things already in the spec...
ruoso TimToady, I was thinking the dispatcher would decide to autovivify...
TimToady, and it would not autovivify in 'bvalue' methods 18:37
TimToady and I think a 'bvalue' method is maybe determined by the invocant's declaration 18:38
where the unmarked case is the undeclared form
ruoso right... although I still argue "$self is ref" is not really the thing... 18:39
because the autovivification won't CREATE another object,
it will just BUILD the current protoobject 18:40
18:40 abra left
ruoso using the WHENCE 18:40
TimToady, take a look at src-s1p/Object.pm inside smop repo...
an autovivifiable object would be an object where only of "new" would be executed...
TimToady right, it's notionally already a constructed object, only without actually 18:41
(or we couldn't use it to define role values) 18:42
ruoso s/only of "new"/only half of "new"/
I always thought that was the meaning for the splitting of CREATE and BUILD 18:43
18:44 Lorn left
TimToady well, one of the meanings, perhaps, though CREATE and BUILD were not envisioned as a laziness mechanism 18:44
ruoso heh... they are now ;) 18:45
TimToady so you're saying that Foo{ a => 42 } is basically doing CREATE in the Foo role 18:47
and it's the BUILD on that which would fail if the role is not instantiable
ruoso yep 18:48
TimToady makes some kind of sense
ruoso actually BUILDALL...
but it doesn't really matter 18:49
TimToady so a role's repr could be "can't", whereas a class's repr would be P6opaque
and a punned role/class could just use a role that can do P6opaque, really
or maybe that's oversimple 18:50
ruoso parsing....
TimToady probably worth generating the punned class from the role in any case
18:50 eternaleye_ joined
ruoso the protoobject repr has no direct relation with its instances repr... that's for sure... 18:51
so Foo{ a => 42 } probably creates a p6opaque anyway
TimToady but it need not commit to a representation, since it's just holding initializers 18:52
ruoso I'd argue the syntatic construct allows the runtime to choose some repr
(since there's no syntax to defining the repr of an autovivifiable object) 18:53
TimToady but there's an api with a closure to call that returns something of a specific type 18:54
ruoso which is used as the candidate in BUILDALL
18:55 hercynium_ joined
TimToady maybe, maybe not 18:55