»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by wolfe.freenode.net on 30 October 2009.
00:01 k23z__ left 00:02 TiMBuS joined 00:04 cls_bsd joined, mssm left 00:10 nihiliad left 00:20 sbilik joined 00:30 rgrau` left 00:31 ihrd joined 00:37 ihrd left
jnthn pmichaud: That's...very odd. 00:38
pmichaud: I suspect that's a regression of sorts. 00:39
Dunno how we got it though, no immediate guesses, sorry.
In theory, it just returns a list of the declared variables.
00:40 lestrrat is now known as lest_away
pmichaud Tene: if a class declares a method called 'list', then it's impossible for 'list'(xyz) to continue to find the 'list' function 00:42
unless we change every call of the form 'list'(xyz) into a sequence of find_lex and get_global instructions 00:43
in short, methods were polluting the subroutine namespace
jnthn: do you know if list declarations ever worked in ng at all? 00:44
jnthn That's fixed now that sub names get an & prefixed, no?
pmichaud: I spent some time making them work.
pmichaud jnthn: it's worked around, yes. but methods still shouldn't appear in the namespace.
and nqp-rx doesn't use the & on subs, so it still suffers.
jnthn pmichaud: Oh, indeed. Unless declared our method foo...
But methods are has-scoped by default. 00:45
00:45 lumi left, lumi joined
jnthn Which means only a call to add_method and no installation anywhere else. 00:45
pmichaud: I don't recall seeing that error before.
pmichaud: So I suspect something may have broken between when I worked on list decls and now. 00:46
pmichaud jnthn: okay, was just curious
I may look at it a bit later. Other than that, list assignment appears to be working again.
jnthn pmichaud: I certainly remember wroking on them, anyway. They're working because I put a little effort into it rather than by accident.
pmichaud: Yay, great. :-)
pmichaud and I suspect fixing list declaration assignment won't be difficult.
as you say, it just needs to return a list of the variables
jnthn I thought that's what I had it doing. 00:47
Something must be a bit off-ish somewhere though.
colomon \o/
pmichaud today's set of changes also fixed lots of other bugs, like array initialization and list flattening
ng: my $b = 5; my $a = [$b, $b]; $b = 7; say $a.perl;
p6eval ng 89fb62: sh: ./perl6: No such file or directory␤ 00:48
pmichaud d'oh!
ng: my $b = 5; my $a = [$b, $b]; $b = 7; say $a.perl;
p6eval ng 89fb62: sh: ./perl6: No such file or directory␤
jnthn Time of month^Whour. :-)
pmichaud and several of the .perl's that were broken should be working again.
say (3, (4, 5), 6).perl # just curious 00:49
ng: say (3, (4, 5), 6).perl # just curious
p6eval ng 89fb62: sh: ./perl6: No such file or directory␤
jnthn Nice
pmichaud > say (3, (4,5), 6).perl
(3, 4, 5, 6)
00:49 cdarroch left
jnthn :-) 00:50
pmichaud ...not sure about that one yet.
jnthn pmichaud: How's the laziness?
pmichaud it still needs a bit of work
jnthn OK.
pmichaud I'm still waiting for some spec clarifications there, also.
jnthn I guess working out the Iterator interface is part of that.
I see we've a Proxy class now too. :-) 00:51
pmichaud that's temporary, it will go away.
when we have WHENCE working again 00:52
jnthn It probably should stay anyway.
So folks can write lvalue subs.
pmichaud that's what WHENCE is for
(at least, that's what TimToady has been saying, iiuc)
jnthn Proxy is spec though, no?
pmichaud very old spec 00:53
jnthn Or you think it may be relic?
pmichaud yeah, it may be fossil
00:53 sri- joined
jnthn OK, let's check before tossing it. :-) 00:53
pmichaud ooc, does Iterator also imply Positional? 00:54
00:54 sri- left
jnthn I don't see why it has to. 00:55
pmichaud I'm thinking of $range.list.[5]
e.g. (1..$end).list.[5] 00:56
jnthn Being able to ask for the next value and if there are any values, and being able to index into something at a certain point, are different operations.
pmichaud well, then what does (1..$end).list return?
is it eager? (I think no)
00:56 sri- joined
pmichaud oh, I suppose it could return a List containing a RangeIterator 00:56
jnthn I agree no, in general.
Right. 00:57
Lists can contains parts that aren't yet evaluated.
Or have an evaluated and still-to-evaluate part.
pmichaud okay, wfm
jnthn That's how I've been thinking of lists for a bit, anyway.
pmichaud Lists (in ng) do already have evaluated/still-to-evaluate part
so do Arrays
jnthn OK, cool.
I think that'll work.
I guess in a sense, Iterator is more fundemental than Positional.
Since you can get the nth element by having an iterator that you can work through until you get to element n. 00:58
pmichaud basically, List has RPA $!values and has Int $!gen
jnthn Where $!gen is where we've generated up to?
pmichaud where $!gen indicates the number of elements of $!values that have been evaluated
jnthn OK, wfm.
That scheme does mean you end up with lots of copying of the tail, but that's only expensive if the tail has lots of evaluated stuff in it, which I guess is rather unusual. 00:59
pmichaud ...copying of the tail?
we do?
the current impl doesn't copy the tail
jnthn Suppose you have 1..100
So you start with (I'll use | to indicate $!gen's position) 01:00
| 1..100
then after evaluating an element you want
1 | 2..100
But to get that 1 in place, you had to shuffle the 2..100 down a position into the RPA?
Or have you done something different?
pmichaud yes, it's a splice
and in reality, since Range is immutable 01:01
what happens is that we start with
| 1..100
then when we ask the Range for its first element, it gives us back (1, RangeIterator)
which gets spliced in instead of the Range
jnthn Right
pmichaud and the RangeIterator holds a reference to the original immutable Range
jnthn Oh, sure
pmichaud after that we ask the RangeIterator for elements 01:02
and each time they get spliced in
but that's not a copy
jnthn But you still need to shuffle that RangeIterator along one?
It's not a copy in *that* sense, no. :-)
It's a copy of the pointer to the range iterator to make space to put the poitner to the evaluated value at the low level, I guess.
pmichaud right, it's a pointer copy 01:03
jnthn OK, what I'm saying is, that's cheap if there's just a single range on the end.
pmichaud which should be relatively quick in RPAs
jnthn But more costly if you've loads of unevaluated stuff on the end.
01:03 lumi left
pmichaud checks to see how RPA does splice 01:03
01:03 lumi joined, sri- left
jnthn But I don't think that's a common case, so the scheme is fine...just a possible slow case to keep in mind. :-) 01:03
01:05 sri_kraih joined
pmichaud yes, it's a bunch of pointer copies 01:05
jnthn OK
pmichaud basically set_pmc_keyed_int and get_pmc_keyed_int
jnthn OK.
We'll go with that for now, it'll be Good Enough. 01:06
pmichaud that could undoubtedly be optimized if we desired
jnthn Sure
Well, I don't think any scheme is optimal for every situation.
pmichaud and yes, we could go with generated versus non-generated arrays, which avoids splicing, but also might make RPA management a bit trickier 01:07
right now it's nice because I can take any RPA and set it as $!values and we're good to go :-)
including, e.g. :slurpy
jnthn Aye, I agree with the scheme. 01:08
Just wanted to make sure I understood it's strengths/weaknesses the same way as you.
pmichaud well, it'd be pretty quick to switch it out for another if we want 01:12
actually, after thinking about it a bit I'm kind of liking the generated/lazy two list approach 01:13
although, even with the two list approach we end up doing splices 01:14
anyway, work for another day 01:15
dinnertime here -- I'll work on something else a bit later (like release announcement or non-release announcement or whatever)
01:16 sri_kraih is now known as kraih, kraih is now known as kraih_sri 01:17 mikehh_ joined 01:19 mikehh_ is now known as mikehh__, mikehh__ is now known as mikehh 01:20 cognominal left
jnthn pmichaud: OK, sleep time here...I'll catch you tomorrow. o/ 01:20
01:21 kraih_sri left 01:25 kraih_sri joined 01:26 ash_ left 01:27 kraih_sri left, ingy joined 01:28 sbilik left, kraih_sri joined 01:31 lumi left, lumi joined 01:39 nihiliad joined 01:45 lumi left 01:46 lumi joined 01:51 araujo left 01:54 drbean joined 01:56 lumi left 01:59 lumi joined 02:02 kraih_sri left 02:03 kraih_sri joined 02:10 meppl left 02:18 orafu left, orafu joined 02:19 lest_away is now known as lestrrat 02:21 lumi left 02:24 lumi joined 02:29 kst` joined 02:30 kst left 02:34 diakopter joined 02:35 ChanServ sets mode: +o moritz_, ChanServ sets mode: +o Juerd, ChanServ sets mode: +o spinclad, ChanServ sets mode: +o Tene, ChanServ sets mode: +o diakopter 02:37 diakopter sets mode: +vvvv pugs_svn dalek buubot _ilbot2, eternaleye joined 02:38 diakopte1 joined 02:41 diakopte1 left 02:43 lumi left, lumi joined 03:08 stephenlb left 03:21 lumi left, lumi joined, kst` left 03:25 lestrrat is now known as lest_away 03:28 araujo joined, _jaldhar joined 03:33 zz_Chazz is now known as Chazz 03:34 cotto_w0rk joined
pugs_svn r29576 | lwall++ | [S32/Containers] KeyWeight deletion critierion kept consistent for dbrunton++ 03:39
03:47 drbean left 03:48 drbean joined 03:50 cognominal joined, cotto_work left
colomon pmichaud: ping? 04:04
04:05 hicx174 left
colomon ng: say (^10).perl 04:05
p6eval ng 89fb62: 0..^10␤
colomon For whomever backlogs this: Range.list should be implemented using some sort of iterator, right? Is there a guide or example somewhere in the code of how to go about doing this? 04:09
afk # bedtime
04:10 lumi left, lumi joined 04:15 kraih_sri is now known as sri_perl
sjohnson OT question: any fans of Clipper / Harbour hanging out in this channel? 04:15
04:15 sri_perl is now known as sri_freenode 04:17 sri_freenode left, kraih_sri joined 04:19 kraih_sri is now known as sri_freenode, sri_freenode left 04:20 kraih_sri joined 04:25 partisan joined, hercynium left 04:29 kraih_sri left 04:31 nihiliad left 04:36 lest_away is now known as lestrrat
s1n how do i get my paws on ng? 04:37
04:37 sri_perl joined 04:42 sri_perl is now known as kraih_sri 04:44 lumi left 04:45 gfx joined 04:47 kraih_sri left, lumi joined, kraih_sri joined 05:11 cspencer joined 05:19 cspencer left 05:34 colomon left 05:35 colomon joined 05:40 lumi left 05:41 lumi joined 06:30 agentzh joined 06:35 [particle]1 joined 06:43 drbean left 06:53 [particle] left 07:08 kaare joined, kaare is now known as Guest30425 07:13 lumi left, lumi joined 07:18 patspam left, patspam1 joined 07:19 werns joined 07:22 Su-Shee joined
Su-Shee good morning 07:22
07:27 vamped joined, gfx left
vamped hi Su-Shee 07:28
07:32 werns left 07:36 Baggiokwok joined
vamped anyone - how to I execute ng commands in a private window? 07:44
07:48 tarbo2_ left 07:50 justatheory left 07:54 mssm joined
eternaleye vamped: /msg p6eval <engine>: <code> 07:56
It's in the /title
08:04 cognominal left 08:05 cognominal joined 08:08 tarbo2 joined 08:10 werns joined 08:13 Su-Shee_ joined 08:15 werns left 08:18 flw joined 08:21 flw left 08:25 Su-Shee left, mikehh left 08:26 mikehh joined 08:28 barney joined 08:33 k23z__ joined 08:35 Su-Shee_ is now known as Su-Shee 08:49 BinGOs left, eiro left 08:50 eiro joined, BinGOs joined 08:56 mssm left 08:57 mssm joined 08:58 mtve joined, JimmyZ joined, Chazz left 09:00 JimmyZ left, Chazz joined, Chazz is now known as Guest36383, JimmyZ joined 09:02 JimmyZ left
vamped eternaleye: thanks! I swear I've read that title several times, and it's never popped out. 09:04
eternaleye vamped: No problem :)
09:06 dakkar joined 09:12 JimmyZ joined 09:14 JimmyZ left 09:16 JimmyZ joined 09:17 JimmyZ left 09:18 Jimmy_Zhuo joined 09:19 Jimmy_Zhuo left 09:24 cognominal left 09:30 agentzh left 09:33 k23z__ left 09:36 vamped left 09:37 cognominal joined 09:41 Baggiokwok left 09:57 mj41 left 10:00 mj41 joined 10:04 jonasbn joined 10:18 payload left 10:27 BinGOs left, eiro left 10:29 eiro joined, BinGOs joined 10:31 BinGOs left, eiro left, eiro joined, BinGOs joined 10:33 BinGOs left, eiro left 10:36 payload joined 10:37 lumi left, lumi joined 10:38 agentzh joined 10:47 eiro joined, BinGOs joined 10:48 BinGOs left, eiro left 11:00 agentzh left 11:07 BinGOs joined 11:12 eiro joined 11:16 rodi joined 11:18 jonasbn left 11:20 meneldor joined
meneldor hello 11:20
11:21 mj41 left 11:24 mj41 joined 11:27 jonasbn joined
colomon quiet channel last night 11:29
jnthn Maybe everyone went to the krcma. :-)
I was surprised by the lack of backlog this morning, though. 11:30
11:30 clintongormley joined
mathw I was at aikido 11:32
colomon ng: my ($a, $b) = (1, "kj"); say $a; say $b;
p6eval ng 89fb62: Redeclaration of symbol $a at line 1, near " = (1, \"kj"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤
pugs_svn r29577 | rodi++ | Thanks, TimToady++ for the clarification. 11:33
11:34 cotto_w0rk left 11:41 LaVolta joined 11:45 LaVolta left
colomon ng: my $a; my $b; ($a, $b) = (1, "kj"); say $a; say $b; 11:46
p6eval ng 89fb62: 1␤kj␤
11:46 lumi left, LaVolta joined, lumi joined, payload left
mathw Executing loop { self.throw(target => $floor); self.get-up; }; 11:55
Eventually self.get-up threw a JellyLegsException 11:58
colomon was that during aikido or after? 12:00
jnthn Ah, I was doing loop { my $drink = request_from_waitress('pivo'); self.drink($drink); }; but after a few it threw a OMGYouHaveToWorkTomorrowException. :-) 12:01
12:07 bluescreen joined
colomon Hmmm... for me it was something like self.song(*) { rock boy & sing $_ }; watch "Chuck"; 12:07
mathw colomon: during 12:08
jnthn: so you probably ache less than I do this morning
colomon is insanely pleased with himself at figuring out which line is generating the my ($a, $b) error.
mathw I should have said $jnthn.ache < $mathw.ache
Although it's not too bad really, it's when they say 'roll all the way down the dojo' 12:09
when I get up at the far end I'm swaying and the room seems to be spinning
It's a glimpse at what clothes go through in the washing machine 12:10
colomon :)
mathw fun though
especially my partner's attempts to look threatening during goshin waza 12:11
it's not so mcuh that he doesn't try, but that he starts laughing immediately
colomon jnthn: is there a way to do "say" from Actions.pm ? 12:12
jnthn Try DEBUG('omg worreva')
mathw CATCH { when LunchTimeException { self.go(@lunch-shops.pick) } }
colomon jnthn: can you send it a variable?
oooo, apparently yes! 12:13
sweet, I'm watching all the variables be declared in core. 12:14
12:14 TiMBuS left
colomon okay, so declare_variable is not getting called twice for $a. 12:14
12:17 meppl joined 12:21 LaVolta left 12:22 LaVolta joined
LaVolta hi all, I've got an error here while building Parrot. 12:24
-licuuc -licudata -lpthread -lm \c
i686-apple-darwin10-g++-4.2.1: c: No such file or directory
make: *** [blib/lib/libparrot.2.0.0.dylib] Error 1
12:25 drbean joined, ashizawa left
LaVolta i've checked its make file...seems to be caused by the weird '\c' 12:25
the latest version of Parrot, just svn co'ed 12:26
gcc 4.2.1 on Mac OS X 10.6.2 12:27
any ideas?
ah...it's here ICU_SHARED := -lpthread -lm -L/opt/local/lib -licuuc -licudata -lpthread -lm \c 12:28
12:29 payload joined 12:30 drbean left 12:39 SmokeMachine joined
jnthn LaVolta: Not sure...looks like some config or makefile generation bug. 12:42
LaVolta: You'd probably have more luck on #parrot, fwiw.
colomon: You can concat any string(s) together you like and pass them in. :-) 12:43
12:43 drbean joined, ruoso joined
colomon jnthn: using ~ ? 12:44
LaVolta jnthn, thanks! I just find someone sharing the same problem after I input some lines on #parrot
jnthn, it's trac.parrot.org/parrot/ticket/890 12:45
jnthn colomon: Indeedy.
colomon \o/
colomon is alternating between sticking DEBUGs in Actions.pm and reading picture books to his boy. 12:46
LaVolta jnthn, last time i got it around by passing icu related stuff in... 12:47
jnthn colomon: Beats reading Actions.pm to your boy. :-) 12:48
12:48 lumi left 12:49 lumi joined 12:53 LaVolta left 12:58 SmokeMachine left
colomon jnthn: I dunno, at one point there I was "reading" him Treoir magazine -- flipping through looking for pictures and trying to tell him things about them. "And there was a fiddle player, and a flute player, and a concertina player, and they played music together. And a bunch of old guys listened to them." 12:58
meneldor guys is Rakudo changed since Parrot is v2 ? 12:59
jnthn "And there was a parse node, and someone made an AST node out of it!"
colomon Actually, he's flipping through the magazine on his own now. I think he's disappointed, because the back cover has a large picture of a really cute 5-yo girl with a fiddle, and he'd love to read an entire book about her... 13:01
13:02 LaVolta joined
colomon jnthn: I think I've got it. 13:06
when you say my ($a, $b) = blah
both param_var and declare_variable try to add the symbol. 13:07
13:07 patspam1 left
jnthn colomon: oh! 13:07
Ah...'cus it's parsing it as a signature first. 13:08
takadonet morning all 13:10
13:12 rgrau left 13:13 kraih_sri left 13:14 nacho joined, kraih_sri joined 13:24 rgrau joined
mathw returns, full of food 13:24
13:25 SmokeMachine joined 13:28 jho joined, cognominal left
jho Is there something like unix_std_crypt (from Crypt::Passwd) for Perl 6? 13:28
rodi jho: nothing in the pugs or rakudo repositories, AFAICT. 13:38
colomon jnthn: was that enough of a clue for you to solve the issue, or do I need to be poking around more in Actions.pm? 13:40
13:43 literal left, avar left, buubot left
jnthn colomon: I understand the problem. I didn't come up with a Good Solution yet. 13:44
(That is, I understand it thanks to your digging. :-)) 13:45
13:45 buubot joined
colomon which was only possible thanks to your handy DEBUG advice. :) 13:45
pugs_svn r29578 | rodi++ | fixed link to S32 13:50
13:51 lumi left, lumi joined 13:52 payload left 13:54 payload joined 14:01 smash_ joined
smash_ hello 14:01
takadonet smash_: hello 14:03
PerlJam greets #perl6 14:05
14:05 plainhao joined
colomon hello! 14:06
14:09 jonasbn left, JimmyZ joined, literal joined 14:10 cognominal joined, rodi left 14:12 jho left, avar joined 14:15 drbean left 14:21 LaVolta left
meneldor if i have for example $obj1.name = "name1"; $obj2.name = "name2"; @arr = ($obj1,obj2); 14:22
can i take the names
somethink like: say @arr<name>
jnthn @arr = ($obj1,$obj2)>>.name; 14:23
14:23 mjk joined, JimmyZ left
meneldor but i dont know how many objects are stored inside @arr 14:23
jnthn Oh, that's fine 14:24
meneldor: You have an array of objects and you want an array of names, yes?
(just making sure I understand what you want properly... :-))
14:24 rff joined
meneldor yes i want to take the names only 14:24
jnthn my @names = @arr>>.name; 14:25
meneldor if these objects are people i want to know only their names
let me test it :)
nice ! it works :) 14:27
jnthn ;-)
meneldor there are tons of new operators 14:28
i cannot remember even half of them
colomon meneldor: and then there are the metaoperators... :)
jnthn meneldor: That one you can work out from a rule though. :-)
mathw You'll get used to it quickly enough
They're actually pretty logical
jnthn meneldor: >>postfixop generally should work (though not done yet in Rakudo for the general case)
So @arr>>++ would increment everything in the array 14:29
meneldor wow
jnthn So if you remember >> means "do a postfix operator for the whole array", you know 'em all. :-)
meneldor i see :)
takadonet I think someone is in love with Perl6.... 14:30
colomon assuming you remember that .method is a postfix operator. :)
meneldor im currently learning the OO things
ill show you my rebuilded game example soon for corrections
14:32 Baggiokwok joined
mathw meneldor: have you met .= yet? 14:34
meneldor no
why? you scare me :) 14:35
moritz_ rakudo: my $x = 'foo'; $x.=uc; say $x 14:36
p6eval rakudo 1d4928: FOO␤
moritz_ .= means "call a method and store the result in the variable"
mathw for contrast
rakudo: my $x = 'foo'; $x.uc; say $x; 14:37
p6eval rakudo 1d4928: foo␤
meneldor ahaaaa :) 14:38
ill show you my game example now 14:41
lisppaste3 meneldor pasted "untitled" at paste.lisp.org/display/93735 14:42
meneldor please tell me if im starting to understand the p6 oo
its main container map which contains players
every player have a castle
every castle has many heroes 14:43
im trying to use Role too
btw you can run the code, it works
14:44 Guest30425 left 14:49 ash_ joined 14:54 Baggiokwok left
ash_ does anyone know who maintains the perl6 vim syntax? i just wanted to report a bug in it 14:59
oh, i found it on github, and someone's already reported the issue, so nevermind 15:01
moritz_ ash_: github.com/petdance/vim-perl/issues
moritz_ too slow
15:04 alester left 15:08 bluescreen left 15:21 bluescreen joined, payload1 joined 15:29 bluescreen left 15:30 payload left, barney left 15:31 nacho left, nacho joined 15:32 viliomo joined, viliomo left 15:33 payload1 left
pmichaud good morning, #perl6 15:42
mathw good afternoon pmichaud
takadonet morning pmichaud
ash_ jnthn: could the parameterized role issue be coming from passing the wrong things to set_signature_elem?
morning 15:43
colomon morning!
moritz_ good localtime() 15:44
pmichaud after starting to write the message explaining the release delay, I think I might want to go ahead and issue a release from existing master. Yes, I'm waffling.
15:44 rodi joined
jnthn hi pm 15:45
ash_: Kinda - I think we probably need to construct the signature object per version of the role we produce.
ash_: Otherwise it's going to look in the wrong lexical scope for the thunk sub that gives it the T. 15:46
ash_ gist.github.com/283857 is an example i am working from, in the generated pir, i see that is using a block to check the type of the parameter passed to the method (see line #281) which refers to a lexical T, which i think is where the T is getting messed up
jnthn ash_: That said, we may need to do something ever more clever to promote the thunks to actual type constraints.
ash_: checking.
ash_: oh, I see it. 15:47
ash_ line 268 is where it sets the sig for $a in that example
jnthn oh, wait, no 15:48
ash_ which is the param thats constrained by T
jnthn Right. 15:49
Yes, it's something in that area that needs a fix.
15:49 jonasbn joined
pmichaud ash_++ # ash's simple tests and discoveries regarding lists in ng made it *far* easier to get list assignment to work 15:49
colomon pmichaud: If we do release master today, can we release ng as master in a week or two?
pmichaud ash_++ # yes, *THAT* much easier
colomon: yes, we can.
I'd still plan to switch ng to master asap
15:49 nihiliad joined
jnthn ash_: I still think it may be possible to fix it in the sub.clone call, fwiw. 15:49
ash_ probably, but that area seems responsible for the problem 15:50
the lexical T is getting changed for whatever reason
jnthn Well, I know why.
ash_ so maybe on the assignment to the lexical T it should clone first?
jnthn It's because we're not cloning somewhere we should be.
ash_ /shrug not sure
jnthn But we're cloning too little.
pmichaud ...clone?
15:50 Psyche^ joined
jnthn pmichaud: Create a closure. 15:51
pmichaud: If a sig uses a type variable, we need to make sure it is looking for the type parameter in the correct lexical scope.
ash_ duplicating T so you don't end up accidentally referring to the wrong instance of it later, whatever is needed for that
pmichaud right, but closures still tend to create/clone themselves automagically here
jnthn pmichaud: Tend to. :-) 15:52
pmichaud: I suspect part of the issue is the interaction between this and the lazy signature building, fwiw.
pmichaud maybe
can I see the source that produced this PIR ? 15:53
ash_ its on the gist
at the bottom
there are 2 files in the gist
pmichaud got it
15:53 gabiruh left
ash_ i was just isolating the test case from S14-something that caused the problem 15:54
pmichaud where's the code that executes the body of the role? 15:55
ash_ 124
the double :anon part 15:56
seems all roles have that on their body definitions
pmichaud right, that's the body of the role. What *calls* that?
jnthn !select in Role.pir
ingy good morning
jnthn It's a multi candidate.
pmichaud I don't see that call in !select 15:57
jnthn ?
pmichaud oh, is it selector(...) ?
jnthn Yes.
ash_ its inside the role how
jnthn add_variatn adds to that.
No, it's not, it's in src/builtins/Role.pir
RoleHOW's bits are just for constructing an individual variant. 15:58
ash_ ah, oops
jnthn The src/builtins/Role.pir is the object that deals with the role as an "aggregate" and supports keeping track of each variant.
ash_: Aye, there's too many things called Role here. :-)
15:58 thanasis joined
jnthn ash_: I did ask here on channel about trying to name the collection of possible roles and an individual one differently. 15:59
But didn't see any replies.
15:59 justatheory joined
jnthn I still think it'd make this stuff easier to understand/discuss if we could do so though. 15:59
ash_ yeah, it sounds like it might help people know what your referring to
jnthn For multi dispatch, we talk about "the multi" meaning the lot of them, and its "candidates" which are the individual options. 16:00
16:00 jan_ left
jnthn We kinda need an analog for roles, imho. 16:00
16:00 thanasis left
pmichaud "role candidate" 16:00
"parameterized role instance" 16:01
16:01 justatheory_ joined, Alias joined
ash_ Trait :P 16:02
16:02 Patterner left, Psyche^ is now known as Patterner
pmichaud what does Method.new return? 16:03
16:03 uniejo joined
pmichaud lines 158-162 look suspicious to me 16:03
jnthn pmichaud: a Method 16:04
pmichaud: Yes, that may be where the issue is too.
pmichaud I think we should be passing a cloned closure to .new, instead of cloning the Method that comes back
still, if Method.clone() works (and remembers to clone its sub), then it probably shouldn't make a difference here. 16:06
16:06 rgrau` joined 16:07 REPLeffect left
pmichaud ....do we still need fixup_cloned_sub ? 16:08
ash_ doing an ack says its used in Mu and Routine still 16:10
I don't know what its for though
jnthn pmichaud: No, I think fixup_cloned_sub can die.
16:10 snearch_ joined
pmichaud ash_: in master branch, we put most of the sub/method properties directly on the underlying Parrot Sub 16:10
ash_: in ng, we have Code objects that are wrappers around the Parrot Sub and hold the additional metainformation 16:11
so, in master branch, we needed a special ability to clone subs and to keep track of the original Parrot Sub
in ng, that may no longer be needed