»ö« | 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 diakopter on 25 January 2010.
00:00 REPLeffect joined 00:07 orafu left 00:09 orafu joined 00:24 jferrero joined 00:26 colomon joined 00:27 rgrau left
RandalSchwartz drop.io/20_years_in_twenty_pages - add review comments to the file 00:28
colomon RandalSchwartz: seems like a fair summary to me. 00:35
00:36 slavik left 00:37 slavik joined
RandalSchwartz thanks 00:42
00:45 athenot joined
diakopter ng: my $x; say $x.defined 00:45
p6eval ng 1a9e76: OUTPUT«0␤»
diakopter ng: my $x; say $x.defined; say $x.WHAT 00:46
p6eval ng 1a9e76: OUTPUT«0␤Mu()␤»
diakopter ng: my $x; say $x.defined; say $x.WHICH
p6eval ng 1a9e76: OUTPUT«0␤47718958194720␤»
diakopter ng: my $x; say $x.defined; say $x.WHENCE
p6eval ng 1a9e76: OUTPUT«0␤␤»
diakopter ng: my $x; say $x.defined; say $x.WHERE
p6eval ng 1a9e76: OUTPUT«0␤47953721288824␤»
diakopter ng: my $x; say $x.defined; say $x.WHOSOEVER 00:47
p6eval ng 1a9e76: OUTPUT«0␤Method 'WHOSOEVER' not found for invocant of class ''␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
00:57 pmurias left 01:00 drbean left
colomon ng: my $str; say $str ~ "hello"; 01:11
p6eval ng 1a9e76: OUTPUT«Mu()hello␤»
colomon jnthn: If we can get that one fixed, we get back while.t. 01:12
rakudo: my $str; say $str ~ "hello"; 01:16
p6eval rakudo 1d4928: OUTPUT«Use of uninitialized value␤hello␤»
colomon On second thought, I reckon the test should initialize to "". It's not like that's the point of the test, and it is using an uninitialized value... 01:18
pugs_svn r29696 | colomon++ | [t/spec] Initialize the collecting string so avoid tangential issues about what uninitialized variables stringify as. 01:19
01:24 p3tr0x joined
p3tr0x hi there 01:24
i've a little question 01:25
colomon yes?
p3tr0x i would like to know if it's possible (and how) to send a sig{int} to a subroutine and return to the main program...
dalek kudo/ng: ecd6840 | (Solomon Foster)++ | t/spectest.data:
Turn on while.t.
p3tr0x does anyone know that ? 01:26
colomon Hmmm... that's well out of my area of expertise, I fear. 01:27
My guess is nothing like that is implemented in Rakudo yet, and it's probably not in the Perl 6 specs yet either.
But maybe someone else out there knows more.
p3tr0x anyone? 01:28
colomon perlcabal.org/syn/S17.html is the relevant portion of the specs
[particle] p3tr0x: are you using perl 5 or perl 6? 01:29
colomon and perlcabal.org/syn/S04.html#Control_Exceptions
afk # exercise time
p3tr0x perl 5 particle 01:30
5.10
[particle] then you'll want to wander over to #perl
p3tr0x but I'm unable to join #perl, so I tried here
[particle] try webchat.freenode.net/ 01:31
p3tr0x thanks you really 01:33
[particle] it is our pleasure 01:34
01:49 jferrero left 01:52 p3tr0x left 02:01 lestrrat is now known as lest_away 02:06 mssm left 02:11 meppl left 02:15 k23z__ left 02:21 drbean joined 02:23 ezgranny420 left
colomon ng: say (1i).Str 02:29
p6eval ng ecd684: OUTPUT«0 + 1i␤»
02:30 lest_away is now known as lestrrat
colomon ng: my $z = 0i; say "$z + 0 = $z" 02:30
p6eval ng ecd684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
02:31 justatheory left
colomon ng: my $z = 0i; say $z; 02:33
p6eval ng ecd684: OUTPUT«0 + 0i␤»
colomon ng: my $z = 0i; say "$z "
p6eval ng ecd684: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤» 02:34
colomon ng: my $z = 0i; say $z ~ " "
p6eval ng ecd684: OUTPUT«0 + 0i ␤»
colomon ng: my $z = 0i; say " $z " 02:39
p6eval ng ecd684: OUTPUT« 0 + 0i ␤»
diakopter ng: say 'There are 10 types of people in the world: those who understand hex ... F the rest' 02:43
p6eval ng ecd684: OUTPUT«There are 10 types of people in the world: those who understand hex ... F the rest␤»
diakopter see google for the attribution. 02:44
colomon ng: say 2/(3+1i) 02:45
p6eval ng ecd684: ( no output )
colomon rakudo: say 2/(3+1i) 02:46
p6eval rakudo 1d4928: OUTPUT«0.6 + -0.2i␤»
colomon ng: say 2.Num/(3+1i) 02:47
p6eval ng ecd684: OUTPUT«0.6 + 0.2i␤»
colomon ng: my $a = 2/(3+1i); say "hello"; say $a.perl; 02:58
p6eval ng ecd684: OUTPUT«hello␤Complex.new(0.6, 0.2)␤»
colomon ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a;
p6eval ng ecd684: OUTPUT«hello␤Complex.new(0.6, 0.2)␤»
colomon wow, I've never seen say do that before.
ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a.re; say $a.im; 02:59
p6eval ng ecd684: OUTPUT«hello␤Complex.new(0.6, 0.2)␤0.6␤0.2␤»
colomon ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a; say "$.re + {$.im}i";
p6eval ng ecd684: OUTPUT«hello␤Complex.new(0.6, 0.2)␤Lexical 'self' not found␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon ng: my $a = 2/(3+1i); say "hello"; say $a.perl; say $a; say "$a.re + {$a.im}i"; 03:00
p6eval ng ecd684: OUTPUT«hello␤Complex.new(0.6, 0.2)␤Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon er, why are master and ng giving different results? 03:02
rakudo: say 2/(3+1i)
p6eval rakudo 1d4928: OUTPUT«0.6 + -0.2i␤»
colomon ng: say 2.Num/(3+1i)
p6eval ng ecd684: OUTPUT«0.6 + 0.2i␤»
03:10 ShaneC left
pugs_svn r29697 | colomon++ | Add initial space to test descriptions to avoid concatenate bug. 03:18
dalek kudo/ng: c8164f1 | (Solomon Foster)++ | src/core/Complex.pm:
Restore the old, working definition of infix:</>($a, Complex $b).
03:26
kudo/ng: 46e2efe | (Solomon Foster)++ | t/spectest.data:
Turn back on complex.t.
03:54 jaldhar joined 04:01 justatheory joined 04:02 stephenlb left 04:06 justatheory left 04:12 justatheory joined 04:16 Chillance joined 04:17 TimToady sets mode: +vvv buubot dalek hugme, TimToady sets mode: +vv ilogger2 IRSeekBot, TimToady sets mode: +vvv lisppaste3 p6eval phenny, TimToady sets mode: +v pugs_svn 04:22 agentzh joined, diakopter sets mode: +v diakopter 04:31 justatheory left 04:36 justatheory joined
diakopter O_O opp birthetheth 04:45
04:58 Khisanth left 04:59 Khisanth joined 05:40 athenot left 05:59 quietfanatic joined
quietfanatic rakudo: sub X (&sub) {&sub()}; X(&say.assuming(3)) 06:00
p6eval rakudo 1d4928: OUTPUT«Nominal type check failed for parameter 'sub'; expected Callable but got Code instead␤in Main (file src/gen_setting.pm, line 324)␤»
quietfanatic This is an issue. Code should do Callable.
ng: sub X (&sub) {&sub()}; X(&say.assuming(3))
p6eval ng 46e2ef: OUTPUT«Symbol '&say' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤»
quietfanatic ng: sub X (&sub) {&sub()}; sub Y ($x) {say $x}; X(&Y.assuming(3)) 06:01
p6eval ng 46e2ef: OUTPUT«3␤»
quietfanatic I guess I gotta be patient then
ng: sub X {say caller}; sub Y {X}; Y
p6eval ng 46e2ef: OUTPUT«Could not find non-existent sub &caller␤current instr.: 'X' pc 135 (EVAL_1:57)␤»
06:47 justatheory left 07:10 kaare joined, kaare is now known as Guest25498 07:14 Chillance left 07:18 Su-Shee joined
Su-Shee good morning 07:19
07:21 clausi joined, takadonet left 07:22 uniejo joined, takadonet joined 07:34 drbean left 07:37 xinming_ left, xinming joined 07:45 he_ left
Trashlord hey 08:16
08:22 fridim joined, iblechbot joined 08:37 renormalist left, renormalist joined
moritz_ rakudo: say caller 08:50
p6eval rakudo 1d4928: OUTPUT«caller() is not yet implemented in Rakudo, sorry␤in sub »
mathw Good localtime 08:53
colomon o/
08:53 drbean joined
mathw prepares his segmentation fault hunting equipment 08:54
09:07 mberends joined
mberends ng 46e2efe (current) ng comparison on Ubuntu 10.4 x86 vs amd64 09:07
"Synopsis", "pass","fail","todo","skip","plan","spec"
"S06", 227, 0, 10, 53, 290, 739 # x86
"S06", 199, 28, 10, 53, 290, 739 # amd64
"S16", 119, 0, 0, 2, 121, 246 # x84
"S16", 108, 11, 0, 2, 121, 246 # amd64
"S29", 466, 0, 3, 2, 471, 517 # x86 09:08
"S29", 124, 346, 1, 0, 471, 517 # amd64
"S32", 1941, 0, 30, 113, 2084, 3511 # x86
"S32", 1734, 17, 30, 105, 1876, 3303 # amd64
"total", 3820, 0, 77, 313, 4210, 16363 # x86
szbalint hm
mberends "total", 3232, 402, 75, 303, 4002, 16155 # amd64
128 files, 3820 (23.3% of 16363) pass, 0 fail # x86
128 files, 3232 (20.0% of 16155) pass, 402 fail # amd64
errands, bbl &
09:08 mberends left
szbalint drive-by-flood :) 09:08
colomon huh, wonder if those are "real" errors for amd64 or just drive-by segmentation faults? (I'm consistently getting one of the later in S32-str/index.t on my MacBook Pro.) 09:11
09:20 drbean left 09:21 payload left 09:29 agentzh left 09:34 IllvilJa left 09:35 mberends joined
colomon at first glance I think the answer to my question is drive-by segmentation faults. I just built ng on 64-bit Linux, and I'm losing nearly 200 tests to a seg fault just in S32-num/unpolar.t. 09:36
lisppaste3 colomon pasted "backtrace" at paste.lisp.org/display/94828 09:37
mberends there is also S29-conversions/ord_and_chr.rakudo: 346 tests aborted (missing ok/not ok) 09:38
planless testing would have missed those ;)
mathw isn't a drive-by segmentation fault still a segmentation fault though 09:40
colomon errr... why? I didn't have any trouble finding the issue in unpolar.t despite its "plan *"...
mathw and thus, bad
colomon mathw: sure, it's definitely bad.
mberends because with plan * the harness would not know how many ok/notok to expect
colomon mberends: and then the problem is triggered by the lack of done_testing. 09:41
btw, S29-conversions/ord_and_chr.t works fine on my amd64 build. 09:42
mberends it could be the toolchain here, gcc 4.4.3-2ubuntu1 09:43
colomon mathw: the thing is, the "drive-by" failures don't represent a failure of the immediate code being tested, they represent a transient failure in the underlying engine. 09:44
Red Hat 4.1.2-42 here.
mathw: that's better from the perspective of the person implementing the feature being tested, and much much worse from the overall perspective of Rakudo. 09:45
mberends S29-conversions/ord_and_chr.rakudo segfaults after ok 101 - ord() works for \82 == 'R' 09:46
colomon mathw: we've had these semi-random seg faults for months now, and as far as I know, no one has even started to get close to figuring out what might be causing them, or even if its a Rakudo issue or a Parrot issue. 09:48
mberends Rakudo doesn't generally cause segfaults, but it can trigger them in Parrot. There is very little C code in Rakudo. 09:49
moritz_ which can still be wrong :-) 09:50
mathw aaah okay
mberends yes. but this time, unlikely.
mathw that doesn't sound like a fun task
mberends much less fun if it works on colomon++'s amd64 anyway 09:51
mathw definitely 09:53
means it's something subtler than this one I just found
colomon mathw: what makes it even worse from my perspective is that valgrind (my normal seg fault hunting tool) generates so many false errors in Parrot's GC that it is hopelessly noisy.
mathw I've got some code here which goes "mapListener[iID]->onMessage()"
the simple problem being that mapListener[iID] is out-of-bounds
just have to figure out why... but at least it's a straightforward wrong! 09:54
09:54 payload joined
mberends mathw: the identifiers suggest it's a BBC political broadcast ;) 09:54
mathw The ones I hate are the ones that result from some subtle thing somewhere else
colomon mathw: and at least half the time (at least in the older ones I looked at), running the test under valgrind makes the seg fault go away anyway. :(
mathw or which only happen on Tuesdays 09:55
colomon: oh yes, I've had that
it's highly unpleasant
and related to the other class of them which go away when you run it in a debugger
And then there are the ones which only happen if certain other things happen in other threads in just the right order... 09:56
As I keep saying to people at work, there has to be a better way to do this
09:57 mssm joined
colomon huh. actually valgrind is pretty interesting on the unpolar.t crash. It's an invalid write past the end of an alloc'd block in the GC function compact_pool. 09:58
mathw great
at least that's definitively wrong
and still showing up in valgrind!
09:59 payload left, cognominal joined
lisppaste3 colomon pasted "fatal error(s) in valgrind run on unpolar.t, amd64" at paste.lisp.org/display/94829 10:00
10:00 pjcj left
colomon I should try going back to bed... 10:02
mathw ouch
that's messy
I guess there's a reason why Parrot's GC still has bugs in it
10:04 payload joined 10:07 masak joined
masak another glorious day in Perl 6 land! 10:07
moritz_ \o/ 10:10
szbalint ;-) 10:12
lisppaste3 mberends pasted "fatal error(s) in valgrind run on S29-conversions/ord_and_chr.rakudo, amd64" at paste.lisp.org/display/94832 10:14
mberends that time it crashed after \60 == '<' instead of \82 == 'R' 10:15
letter R: you're forgiven 10:16
masak RandalSchwartz: page 40: s/begged the question/raised the question/, perhaps. 10:19
RandalSchwartz: also, the wording 'new releases nearly every few weeks' seems much less parsimonious than 'monthly releases'. is there a reason to choose the longer wording? 10:21
save for those two comments, nice summary. 10:22
10:23 IllvilJa joined
mathw Saluton, masak! 10:24
masak Saluton, mathw! 10:25
masak got up fairly early today
mathw didn't 10:26
I didn't crawl out of bed until gone half past seven
The cat was most put out with me
masak I got up at eight. with my recent track record, that's really early. 10:28
10:35 lestrrat is now known as lest_away
szbalint Let's start a petition for 28-32 hour variable length days 10:35
at least that's what my internal clock wants :S
moritz_ funnily when left alone without much social interaction and sun rythm, most people settle either on a 23h or a 25h day 10:36
mathw I think we need to slow down the rotation of the Earth 10:37
just slightly
masak I did 28-h days a few months back. it's something I'd like to try again.
szbalint mathw: it is slowing down, just not fast enough
masak is the slowdown speeding up or slowing down? 10:38
szbalint moritz_: there were a few outliers in a study I read about this, some french dude settled on 28h for example
maybe a physicist knows :)
I would assume slowing down, but that's just a guess 10:39
moritz_ worked more with very small systems :-)
masak laughs at that 10:40
moritz_ and my angular momenta where quantized => no slowing down :-)
masak convenient.
to me, 'quantized' is one of those quantum suspension-of-disbelief terms. it goes "ok, we all know physical systems don't intuitively behave like that... but bear with us, OK?" 10:41
moritz_ actually there are very intuitive approaches to quantization
mathw nothing in quantum stuff is intuitive though
mberends eventually the friction due to tidal movements will slow the earth's rotation to a month, however long that will be 10:42
moritz_ when you leave a plate along long enough, it's either on the table or on the floor
mathw not according to anything I've ever read - but then I have only a layman's overview
moritz_ that's a form of quantization
mathw: intuition depends on how familiar you are with stuff. It's very possible to gain intuitive insight in some QM phenomena when you work with them long enough 10:43
mathw No doubt
masak moritz_: nice explanation.
mathw But when your only experience is with the world we directly observe, it looks like crazy shit
fun though
I rather like the idea that the universe is so strange underneath 10:44
10:44 drbean joined
moritz_ one things that's not very intuitive is that baiscally all quantization comes from boundary conditions 10:44
masak I rather like that biology can be reduced to digital processing.
mathw I rather like the probability thing 10:45
Oh, this atom? Yeah it might decay
Or it might not
masak moritz_: as in standing waves?
mathw Just have to watch it and see
moritz_ for example in an atom, there are continuous solutions for the wave functions - but they don't decay in infinity
szbalint reality/physics is so scale dependent. That's beautiful.
moritz_ masak: as in standing waves, hard boundaries, or in knowning that wave functions often decay in large distances
lunch&
mathw I read something about the electron energy levels being to do with there being no solutions to their wave functions in between those levels 10:46
I thought that was interesting
What better reason to have those states with no inbetweens than it being simply impossible for the intermediate states to exist? 10:47
mberends It's a great reason, similar to: we have no solutions to equations at levels in between, therefore they *should* not exists. electrons do math, you know, effortlessly ;) 10:52
10:53 pjcj joined
masak exactly. things are quantized because the waves like it that way. non-standing waves make them confused. 11:03
mberends likes an ordered, well-documented Universe 11:05
masak don't know about ordered. we mislaid the Higgs billions of years ago, and still haven't found it. 11:08
mberends oops. The LHC fill find it again though, won't it? 11:09
*will 11:10
mathw If it's still around 11:11
masak it wouldn't be science if we could answer that question beforehand :) 11:12
11:12 finanalyst joined
mathw well 11:13
it might be
but it could also be a spectacular waste of money
masak I hear that opinion now and then.
I'm not really one to judge in that matter.
mathw I don't think it is 11:14
because we don't know that the Higgs boson even exists
and it would be extremely useful to know that
therefore it's worth building a machine to detect it
And they'll get loads of other interesting data from it too
mberends we should spend lots of money trying to find it, because it creates jobs ;) 11:15
11:15 lest_away is now known as lestrrat
mathw And it might let us build cool stuff 11:18
stuff that's *gasp* even cooler than Perl 6! 11:19
mberends just think, without CERN there would be no http, no html, no www...
masak speaking of letting us build cool stuff. I got unstuck again with GGE last night. still need to find the tuits, but lookarounds are within reach now. I might still reach 100% PGE compat before ng becomes master! :) 11:20
mberends \o/ masak++
frettled w00t
11:20 frettled sets mode: +oo masak mberends
masak based on what TimToady++ said the other day, PGE really does some cutting of corners in the case of lookarounds. then again, it doesn't need to make it more complicated than that either, since it's not aiming for doing LTM. 11:21
but I'm starting to really understand why pmichaud++ chose to start from scratch rather than extend PGE :) 11:22
11:22 QC_OK joined
masak (and why he's been advising me not to try to change GGE into something more STD-compliant) 11:22
QC_OK um should I learn perl6 or perl? 11:23
masak QC_OK: I think you should.
QC_OK is perl6 even released properly yet?
masak QC_OK: yes.
25 times, even.
well, actually, that's just Rakudo.
Pugs has been released a few times as well.
proper, honest-to-blog releases. 11:24
QC_OK I learned a bit of Perl in a Java course once
the lecturer just had to teach us
even though it was java
hehe
masak :)
QC_OK he uses perl in bioinformatics 11:25
masak too
QC_OK I might study that this year
bio
-informatics
masak cool.
I'm in the field.
QC_OK cool
:D
masak QC_OK: wanna see some Perl 6?
QC_OK You have to have done biology in first year, but the lecturer says he can waive that requirement 11:26
or something like that
oik
shoot
masak QC_OK: use.perl.org/~masak/journal/39238
mathw Hello QC_OK
QC_OK hi 11:27
masak rakudo: my $dna = "ttaagg"; sub translate($dna) { "FFLLSSSSYY!!CC!WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG".comb[map { :4($_) }, $dna.trans("tcag" => "0123").comb(/.../)] }; say translate($dna)
p6eval rakudo 1d4928: OUTPUT«LR␤»
QC_OK So you think perl6 is better than perl? 11:28
I guess
?
masak QC_OK: no, I don't think a comparison can be made in that way.
QC_OK ah
ok
masak QC_OK: but I know I have a warm buzz in my tummy from both.
and slightly more with Perl 6. :)
QC_OK heh
hmm I guess I'll learn Perl6, then Perl. 11:29
I actally don't really know perl at all
masak gotta start somewhere.
QC_OK heh, the write only language meme stuck with me 11:30
I never bothered learning it
mathw It can be write only
QC_OK But I figure I should just for kicks
masak it's like this: sure, you can write a program without caring about readability.
but what's the fun in that?
mathw But it doesn't take much care to ensure that it's readable
QC_OK yeah...
masak much better to write beatutiful code, that other people can read.
mathw And it's certainly better if you can comprehend your own code six months later
QC_OK People say perl is a "hack" kind of langauge 11:31
masak QC_OK: well, it is.
QC_OK you can make disgusting, short code
mathw sure you can
masak you can throw things together if you want.
QC_OK that you can't read, but does what you want
mathw and sometimes that's just what you need to solve a problem quickly
masak and then later you can expand and clarify.
mathw but that doesn't mean it's the only way you can code in Perl
masak it sort of grows along with your solution.
mathw and the big non-secret is: no other popular language is any better
masak Perl 6 is, in my experience, slightly more verbose than Perl 5. 11:32
but only on the one-liner level.
after that, it really picks up speed and blazes past Perl 5.
um, except in terms of execution speed... :)
mathw so far
masak right.
mathw functionality, then speed
masak nod. 11:33
mathw Perl 6 estas bona!
masak :)
mathw But really you can write terrible code in any language
In some languages it's even compulsory
Not in Perl, though
QC_OK heh 11:34
I learned the basics of ruby today 11:35
But I don't like it
mathw There's some good stuff in Ruby
Perl 6 'borrowed' most of it
QC_OK I'd rather learn perl
masak lots of nice projects, in my opinion.
QC_OK Ruby is like python and perl put together
mathw What about Ruby don't you like?
QC_OK which is fail in itself
masak mathw: don't know if 'most of it' is a good first approximation :)
QC_OK Clean + Messy = sorta clean 11:36
it's stupid
Python + Perl
= fail
masak QC_OK: I don't find that Ruby is much like Python, actually. but YMMV.
mathw masak: throwing parameterised blocks around at the drop of a hat, mixins... what else did we want?
QC_OK code blocks are eye cancer
masak QC_OK: I don't even know what that means.
QC_OK looks horrible
anyhow 11:37
I don't like the begin end crap, reminds me of VB
mathw Do you mean the 10.times { |x| print x; } stuff?
QC_OK eww
mathw because I really don't like the parameter syntax for those
never have. Doesn't seem connected to the right bit of structural syntax. 11:38
QC_OK you can also write 10.times begin |x| print x end
mathw and that's even worse!
QC_OK I know
It's fail
anyhow
my opinion only
mathw For blocks, I like brackets or indentation, not keywords
masak the |x| syntax is from Smalltalk, right?
mathw I think so
QC_OK I never learned smalltalk
mathw I don't much care for Smalltalk's syntax either
QC_OK I'm too young :)
mathw But I do like the view of OOP as message passing instead of method calls 11:39
which is something you also find in Objective-C
QC_OK !tutorial 11:40
@tutorial
hmm
Do you recommend a tutorial or book for perl6?
mathw The books haven't been written yet 11:41
masak QC_OK: first off, I'd recommend you stick around.
QC_OK: second, do check out the Advend Calendar!
mathw Oh yes, the Advent Calendar
I'd forgotten about that
Which is silly, since I wrote some of it
masak perl6advent.wordpress.com/2009/12/0...-calendar/
it tells a lot of the story.
QC_OK ok 11:42
since there are no books yet, are there any good tutorials for perl 6?
masak enjoy!
QC_OK: what we just pointed you at.
QC_OK ok
sorry
that's it I guess 11:43
masak there are more, but this one is the most recent.
and fairly complete, as I said.
QC_OK ok
I guess I'll come back when 6 is ready
In the meantime I'll learn Perl. 11:44
and by ready I mean a book or tutorial is written.
11:45 QC_OK left
mathw aawww 11:46
11:48 cognominal left 11:49 xdg left 11:50 snarkyboojum joined 11:58 synth left 12:03 macae joined 12:06 snarkyboojum left
masak guess we should focus on getting the book published. :) 12:17
12:19 lichtkind joined
mathw :) 12:20
12:20 ruoso joined 12:23 athenot joined 12:27 SmokeMachine joined 12:29 bluescreen joined 12:32 iblechbot left
mberends pmichaud: to make space for other emitters in future, would you consider renaming Perl6/Actions.pm to Perl6/Actions-Parrot.pm? 12:42
masak Perl6/Actions/Parrot.pm, perhaps? 12:43
mberends also fine, if preferred. but why, btw? 12:44
12:44 payload left
masak dunno. :: seems commoner in type names than - 12:44
and 'Actions' seems to "deserve" being a level on its own.
moritz_ agrees with masak
mberends prefers flatter directory hierarchies, but that's only personal taste 12:45
masak oh, definitely. it's a trade-off, no doubt. 12:46
mberends I'm currently looking for where to instantiate @*ARGS. The startup sequence is not entirely clear, but the code is nicely readable. pmichaud++ 12:51
masak rakudo: my @l = [1,2,3], [4,5,6], [7,8,9]; my (@a, @b, @c) = ...; # how do I make each new array contain one sub-array of @l? 12:56
p6eval rakudo 1d4928: OUTPUT«Can't return outside a routine␤in Main (file <unknown>, line <unknown>)␤»
13:03 drbean left 13:04 nacho joined 13:05 mssm left 13:07 nacho left 13:20 mssm joined
masak more generally, how do I assign a list of arrays in the RHS to a list of array variables in the LHS? 13:20
13:22 patspam left
jnthn hi folks 13:24
moritz_ masak: do you want assignment or binding?
masak I'm not going to do any writing, so it doesn't really matter.
moritz_ (@a, @b, @c) := ([1, 2, 3], [4, 5, 6], [7, 8, 9]) should work
masak thanks. 13:26
takadonet morning all
masak takadonet: \o
rakudo: my (@a, @b, @c) := ([1,2,3], [4,5,6], [7,8,9]); say @a.perl
p6eval rakudo 1d4928: OUTPUT«rtype not set␤in Main (file <unknown>, line <unknown>)␤»
masak awww.
rakudo: my (@a, @b) := ([1], [2]) 13:27
p6eval rakudo 1d4928: OUTPUT«rtype not set␤in Main (file <unknown>, line <unknown>)␤»
masak submits rakudobug
so exactly the use case I could have used doesn't work. 13:28
colomon crawls out of bed and backlogs 13:33
13:34 jaldhar left, jaldhar joined 13:35 xomas joined 13:37 nacho joined 13:39 nacho left
pugs_svn r29698 | masak++ | [S26] checked in Damian's latest changes 13:45
r29698 |
r29698 | It's the file from the email of 2009-08-16, except that I took the liberty
r29698 | of removing some spaces at the end of lines. Hopefully all non-significant.
masak now I can reply to TheDamian on p6l with good conscience :) 13:46
jnthn masak++ 13:49
Juerd End-of-line whitespace should really always be non-significant.
mathw That's only just been done??
Juerd (except when quoted or escaped)
mathw wow
moritz_ Juerd: except for the 'whitespace' programming language :-) 13:50
Juerd moritz_: Grumble
mberends masak: thanks for the S26 update, I'd been unable to find it recently :)
Juerd I think it's time for a much narrower definition of "programming language".
masak mberends: then you need a better email client :P 13:51
mberends true, I stay out of most mailing lists, the signal to noise ratio puts me off 13:52
masak p6l has a funny kind of noise. :) 13:53
mathw moritz_: Whitespace was invented primarily to be irritating though, surely
masak it's made up of the thinking-out-loud of type theorists, other theorists, and generally people who have both feet firmly planted in the air. 13:54
mathw I used to be quite active on there
A loooong time ago
13:54 nacho joined
jnthn masak: Yeah, though they have probably led me to write a doc on the Perl 6 type system once I get a moment to do it in. 13:56
jnthn is tired of folks whining stuff isn't spec'd when in fact it's been spec'd well enough for me to implement the thing. :-/ 13:57
masak :P
mberends whining-- 13:58
jnthn: is it true that all :init subs get called in lexical order before :main ?
colomon jnthn: I think I made up for your lack of quantity in tests added back yesterday. ;)
masak jnthn: I didn't say all type theoretic stuff on Perl 6 is noise.
colomon jnthn: you still win for number of test files, of course. :)
masak but sometimes it does seem that things take off on a tangent and never really come back.
13:58 iblechbot joined
jnthn mberends: Yes and no. 13:59
mberends ugh
jnthn mberends: You usually want :load and :init
mberends: :load = run this when the PBC is loaded as a library
mberends: :init = run this when the PBC/PIR is run directory.
*directly
mberends: But yes, order should be lexical.
mberends: We rely on that. 14:00
masak I suggest that we here on #perl6 get in a few nice commits to S26 before the p6l crowd gets any ideas. (yes, I say this partly tongue-in-cheek.)
mberends in Perl6/Compiler.pir, I'm thinking of where to create @*ARGS. Line 117, possibly.
masak it would be nice to set the tone of things, as Richard Hainsworth just wrote.
colomon masak: I'm thinking that's a fine idea.
jnthn colomon: Nice - let's see how I do today. I spent most of the night awake with bad stomach pains. On the upside, I then slept the whole morning. :-/ 14:01
colomon masak: my rough impression of p6l is that it's where p6 gets it's "theoretical academic language" reputation....
jnthn: my wife left me sleep in, too. :) 14:02
*let
jnthn masak: It's not all noise, no. I was more addressing my furstration with some of what gets posted there.
mberends masak: after Rakudo * lands, I'll revisit S26 and Pod::Parser etc. We'll see what of the spec is easily implementable. 14:03
jnthn mberends: I'd like to keep Compiler.pir a bit lighter. 14:05
masak colomon: I think so too.
jnthn mberends: Though it'd work there.
mberends: I popped $*IN etc's init in src/cheats/setup-io.pm
mberends cheats!
masak colomon: in some ways, I see p6l as a honeypot for the worst pie-in-the-sky types. (with full respect for all the reasonable people also on that list.)
jnthn mberends: I think I then abused that file and set up $*OS in there too. 14:06
:-/
mberends: If cheats feels horrible then pop it somewhere in glue ;-)
mberends ok
glue/run.pir looks too... clean ;) 14:07
masak mberends: revisiting Pod::Parser sounds very good.
mberends Pod::Parser stalled when Rakudo consumed 15KB RAM ber byte of POD file, I hope the memory management has improved in the last year. Somehow, I don't think so. 14:08
colomon masak: :D
mberends: actually, my impression is that memory management has indeed improved. 14:09
jnthn mberends: Gah, just stick it somewhere! :-P
mberends :-) cool!
masak speed has improved too.
everything is just... better.
14:10 clintongormley joined
mberends jnthn: stick it in glue? ok :P 14:10
colomon I think laziness will make a huge difference in speed and memory in the very near future. 14:11
pmichaud good morning #perl6
colomon o/
jnthn morning, pmichaud 14:12
mberends colomon: agreed, laziness is the biggest optimization possible
colomon jnthn, pmichaud: do we have a place to list to-do / bug things for rakudo for the next few days? Seems like using RT is wasteful when things are changing so quickly.
masak good morning, pmichaud.
jnthn colomon: Maybe that "major ng features" wiki page? 14:13
pmichaud 12:41 <mberends> pmichaud: to make space for other emitters in future, would you consider renaming Perl6/Actions.pm to Perl6/Actions-Parrot.pm?
colomon (and storing the ones I know about only in #perl6 logs and my head seems problematic.)
pmichaud it's far more likely that I'll want Actions.pm to become more generic
(i.e., less PIR dependencies)
jnthn Agree.
colomon jnthn: I'm cool with that if that's what you guys would like. 14:14
jnthn colomon: Or another wiki page
The wiki seems a decent place for short-term lists.
pmichaud anywhere in Actions.pm that we currently have pir::*, :pirop, or :inline is somewhere that our abstraction level is wrong. Those have always been intended as "just get the job done" as opposed to "this is the way to do things."
mberends pmichaud: I'd considered a Sprixel style V8 engine as an -Ofun subproject, to shake loose the Parrot dependencies 14:15
pmichaud in particular, I'm thinking that we should have a nqp:: space.
then nqp can provide a level of abstraction
so, instead of, say, pir::add($a, $b) we'd have nqp::add($a,$b) and it's up to nqp to map that to the appropriate backend 14:16
mberends fair enough
pmichaud then we can also more easily determine exactly what primitives we want/need our backends to provide
jnthn pmichaud: I'd actually started reading pir:: as vm:: :-)
pmichaud could be vm:: also. 14:17
14:17 athenot left
mberends anyhow, please don't waste time on that before Rakudo * 14:17
pmichaud afk for a bit, I have to grab pictures of the incredible amount of snow we received here yesterday :)
jnthn mberends: I've got a good chunk of interest in additional backends, but R* is kinda my priority for now. :-) 14:18
mberends 'course
frettled pmichaud: what about a JPEG of you shoveling snow? :)
mberends MPEG!
frettled that, too 14:19
masak there's a close to 100% probability of such image material ending up in someone's Perl 6 presentation. 14:20
frettled :D
jnthn :D
frettled One of my favourite places in Oslo hasn't had temperatures above freezing since 2009-12-13.
masak with the heading "Shuffling data" or similarly quippy.
jnthn "The Perl 6 devs are always shovelling cool stuff our way!"
masak :D
frettled jnthn: ooooh 14:21
masak "When your problem space is filled with snow, every solution looks like a shovel."
jnthn Sledge is more -Ofun.
mberends jnthn: starting to "stick" the @*ARGS init into glue/run.pir, ok? 14:22
jnthn mberends: wfm
I suspect we'll want 'em there for MAIN handling too.
pmichaud shoveling snow? what's that? ;-)
mberends jnthn: and %*ENV init too 14:23
pmichaud (and somehow you all seem to think I own a snow shovel. Or that I could even find a place to purchase a snow shovel. :-)
masak we'll simply have to add the snow shovel with Gimp, then. 14:24
jnthn mberends: Aye.
pmichaud after other @family members get dressed I might see about having my picture took :)
jnthn mberends: Though that needs more...attention. ;-)
(So assigning to it updates the environment :-))
That should be easier in ng than before though. 14:25
mberends jnthn: oh, you want a tied hash?
jnthn mberends: Eventually we will, I guess.
mberends ok, lemme see how hard it would be 14:26
jnthn Feel free to just copy to a normal hash for now, though.
Oh akshually 14:27
mberends copy - paste - compile - ship
jnthn mberends: One thing that may just work though it's evil if it does...
Get the Parrot env hash
$P0 = '&CREATE_HASH_LOW_LEVEL'(the_evn_hash) 14:28
And install $P0 in the right place :-)
It may work. :-)
mberends yes, sounds feasible
jnthn (Alternatively, it may explode. :-))
colomon boom baby boom! 14:29
frettled heh
pmichaud picasaweb.google.com/patrick.michaud/20100212 # snow photos. Undoubtedly "no big deal" to people who already live in snow-climates :) 14:30
suggestion: for %*ENV, use the code/approach that was used in master 14:31
mberends ok, thanks pm
colomon that's a pretty decent snowfall 14:32
pmichaud it's huge for here
jnthn pmichaud: My only thought is that since our hashes now has-a Parrot hash which it uses for storage, we may get the write-semantics just by sticking the Parrot Env PMC in to our Perl 6 Hash as its backing storage.
colomon looks like enough to cross country ski 14:33
pmichaud jnthn: yes, we might
colomon: yes, it could very well be
14:33 finanalyst left
pmichaud jnthn: I wasn't necessarily planning to do has-a Parrot hash for hashes... any particular reason it needs to be that way? 14:33
jnthn pmichaud: Yes 14:34
pmichaud: Hash should be a role really.
pmichaud okay.
jnthn pmichaud: It works out quite nicely that way.
pmichaud: I wrote pretty much the lot, including !STORE, in Perl 6.
frettled pmichaud: don't worry, we can commiserate anyway :D 14:36
jnthn pmichaud: Nice snow! 14:37
Looks like about as much as I have here :-)
pmichaud !STORE looks like it'll be really slow though :)
still, I'm okay with it. 14:39
perhaps %!storage instead of $!storage ?
jnthn pmichaud: I'm a little wary of that. :-) 14:40
pmichaud: It'd probably be OK
pmichaud pir::new__Ps('Hash') probably needs to be pir::root_new
jnthn pmichaud: Yeah but...how to write a key in nqp?
Agree in principle though. 14:41
Slow - yeah. :-/
pmichaud: It'd sorta be nice to be able to write inline NQP in the setting. :-) 14:42
pmichaud there's still Q:PIR
14:44 Guest25498 left
mberends so would it be better to build %*ENV with !STORE from core/Hash.pm (despite the slowness)? 14:44
pmichaud mberends: I think jnthn was hinting earlier that one can get %*ENV fairly simply if we just create a Hash object where $!storage is set to a Parrot Env object
jnthn pmichaud: That's exactly what I wanted to avoid. :-|
pmichaud but I'm thinking that's not really the case, because Proxy objects tend to disappear once written to. 14:45
*now thinking
jnthn Oh. :-/ 14:46
pmichaud let me review how we did things in master
mberends relying on the os process environment is going to be inefficient
master uses hash_to_env(), eg in src/old/builtins-old/system.pir 14:48
pmichaud we somewhat have to rely on the os process environment, though. We can't assume that our copy of the environment is the "correct" one. 14:49
i.e., there's a synchronization problem.
mberends then we're back to a tied hash
that is a more "normalized" way
pmichaud right. I'd suggest creating a Hash object where $!setting is initialized to a Parrot Env object... and then let's see what breaks or doesn't work. 14:50
14:50 athenot joined
mberends ok, thanks again 14:50
14:50 athenot left
pmichaud for the moment, this might be most easily done as an INIT { ... } block in the setting somewhere. 14:50
14:50 athenot joined
frettled pmichaud: Hmm, I don't think the OS allows other processes to modify the environment for running processes 14:50
pmichaud frettled: libraries. 14:51
frettled: we could call out to a library (in the same process) that modifies the environment.
mberends frettled: you're correct, only child processes are affected
14:51 synth joined
mberends ...and the current process 14:52
pmichaud I'm fine if we go ahead and go with a "shadow hash" for the time being, and do a process like master did.
mberends the libraries use case is a valid point in favor of a tied hash
pmichaud all master did was have its own copy of the environment hash as a plain hash, and then re-set the OS environment whenever it was about to spawn a child process
mberends indeed 14:53
frettled hmm
pmichaud right now "working code" is sufficient, we don't have to have "works in every possible case" code just yet.
anyway, whoever writes the code gets to decide for now :)
frettled pmichaud: I believe that risk is something that the programmers just will have to live with. 14:54
mberends let's try a tied hash first, and fallback to a shadow hash only as Plan B
frettled Hmm, I don't find any specification of the behaviour of %*ENV. 14:59
My Google-fu may be weak, of course.
In any case, I think it's fair to use %*ENV as the environment at the time of process creation (as seen from P6's POV), and if libraries somehow modify environment without updating it inside the process -- I'm unsure how this could be expected to work in any language, anyway -- then that's a crying shame. 15:01
Hmm. What does POSIX say?
PerlJam frettled: "like Perl 5" is probably as good as it gets for the spec on %*ENV
frettled mm 15:04
mberends perldoc perlvar does not mention in-process behavior, only that it affects child processes 15:05
frettled SUS v2 is a bit unclear here, hmm. 15:07
15:11 aesop joined
frettled I don't see any way in which POSIX allows environment variables to be set by anything but the main process, that is, you can trust that when you are the process, nothing will change your variables for you. 15:15
Not even your parent.
15:15 clintongormley left
frettled If you're multi-threading, that's probably another beef, but then it would be sensible to keep local copies of the environment variables per thread or at least some sort of mutex to avoid race conditions. 15:16
(I don't see any mention of this in SUSv2, though)
But I may just be too lousy at searching.
mberends correct. you could do such evil things in DOS, but never in Unix 15:17
what would we prefer in Perl 6 for the multi-threading case? 15:18
frettled A choice?
mberends :/
frettled heh
moritz_ in Perl 6, all variables from outer scopes are shared
only if a thread creates a new lexical variable, it is private 15:19
frettled I think there's a good case for that. For the case where a thread needs a local scope, the programmer can just copy.
PerlJam or use temp 15:20
15:20 uniejo left
mberends good, then it will be fun to try using jnthn++'s !STORE :) 15:20
15:20 clintongormley joined
masak bet it has lots of beer. :) 15:21
mberends heh
jnthn :-)
pmichaud decides that for today, Array and Seq will be eager. 15:23
jnthn masak: Bizzarely, the word "beer" can not be found anywhere in the Rakudo source. :-/
masak
.oO( "One flew over the eager Seq" )
jnthn <groan>
masak jnthn: surely that's a mistake that needs fixing. 15:24
15:24 barney joined
jnthn masak: Quite! File RT! 15:24
:-)
masak my conscience won't allow me to do that :) 15:25
frettled hehe 15:27
15:33 iblechbot left 15:35 justatheory joined 15:38 alester joined 15:42 clausi left
masak so binding is the only known way to assign a many-array RHS to a many-array LHS? 15:43
pmichaud jnthn: ping 15:44
masak I was hoping there was some way involving subsignatures or something...
15:45 cognominal joined, nihiliad joined 15:46 dual left, wanradt_ joined 15:47 rgau joined 15:51 cognominal left 15:54 Psyche^ joined
jnthn pmichaud: pong 15:54
pmichaud did we not implement setprophash ? I thought we did.
jnthn pmichaud: I remember discussing it.
pmichaud okay, guess we didn't.
jnthn pmichaud: Multiple times.
pmichaud: I don't remember implementing it myself.
It should be easy.
pmichaud I think I'll avoid it. 15:55
next question :-)
jnthn heh
I can write it for you fairly quick if you want it. :-)
pmichaud after looking at Seq and Array more, I'm seriously considering making them array of Perl6Scalar
15:55 cognominal joined
jnthn Heh. We've been back and forth on that one a few times too. :-) 15:56
The main argument against is just than it's extra GCables.
pmichaud I think we might actually end up with fewer GCables anyway, though.
or roughly the same
as it is, making copies of values is generating lots of GCables 15:57
jnthn That's a Good Point.
pmichaud it might be nice to make a stronger distinction between mutables (Perl6Scalar) and immutables (values)
jnthn Yes, true.
I've no real objekshuns.
pmichaud I'm also thinking a bit in terms of targeting alternate backends
jnthn Hm
15:57 uniejo joined, Patterner left, Psyche^ is now known as Patterner
pmichaud i.e., if we pick v8 or jvm or some other backend, I think it likely that aggregates will have to be array-of-container there too 15:58
jnthn Yes, that is true
The one that bothers me more...
...is aggregates of native types.
But we can cross that bridge when we come to it, I guess.
pmichaud that was discussed during the conference call
TimToady++ says that after Rakudo * is out, we probably need to put some energy into array-of-int and compact structs 15:59
(at least I think that's what he said :)
pmichaud checks the minutes
it didn't make it into the minutes
jnthn We need to re-do the way our objects work and store things too. 16:00
pmichaud anyway, I agree, that one is a bit bothersome. but I'm also of the "bridge-when-we-come-to-it" mentality
oh, yes, having to redo objects might be a pain.
hm.
jnthn I think that's a related bridge.
I want to re-do objects with a fuller picture of the alternative backend scene. 16:01
That is, emerge with viable P6opaque and KnowHOW impls for Parrot + at least one other VM. 16:02
pmichaud okay, I'm going to try array-of-Perl6Scalar and see what sort of pain that brings
jnthn But I really feel that's something to focus on after R*. :-)
OK, go for it.
I need to spend an hour or so on $other-thing and then I can look more properly at some rakudo bits. 16:03
pmichaud one thing I haven't quite worked out 16:04
for $a = $b
what I'd like to have happen is that $a and $b are Perl6Scalar, both referencing a common underlying immutable
ummm, hmm. maybe that's not so good
pmichaud waffles again.
anyway, in that case, I'd need to descalarref $b to get to its underlying value 16:05
but it needs to be only one level of descalarref
jnthn Yes, true.
descalarref is relatively cheap anyway.
pmichaud right
but the "only one level of descalarref" is the tricky part 16:06
jnthn Yeah :-/
How do we add extra constraints and all that lot.
colomon ng: my $z = 1i; say " $z";
jnthn Takes more care.
p6eval ng 46e2ef: OUTPUT« 0 + 1i␤»
colomon ng: my $z = 1i; say "$z";
p6eval ng 46e2ef: OUTPUT«0 + 1i␤»
16:06 barney left
colomon ng: my $z = 1i; say " $z "; 16:06
p6eval ng 46e2ef: OUTPUT« 0 + 1i ␤»
jnthn pmichaud: Oh well, at least it's not as complex as what colomon++ is doing ;-) 16:07
pmichaud :-)
colomon arrrgh.
pmichaud maybe I'll just spend an hour trying it out and see what happens.
jnthn :-)
pmichaud: Go for it.
colomon dang it, this bug was easy to reproduce yesterday... 16:08
ng: my $a = 3/2; say "$a ";
p6eval ng 46e2ef: OUTPUT«Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon bingo
jnthn ewww 16:09
colomon ng: my $a = 3/2; say " $a";
p6eval ng 46e2ef: OUTPUT« 1.5␤»
jnthn ng: my $a = 3/2; say $a ~ " ";
p6eval ng 46e2ef: OUTPUT«1.5 ␤»
16:09 barney joined
pmichaud it's likely an issue with pir::join 16:10
jnthn colomon: If we could get strings to use Perl 6's ~ to stitch things together, we'd not have the problem.
pmichaud oh, no, it's a problem with vtable concatenate 16:11
it doesn't know how to concatenate a Rat with a String (or maybe Str)
maybe add a vtable in Mu
jnthn pmichaud: Right. Parrot's MMD values the left argument more, I think. :-/
colomon pmichaud: but it does know how to concatenate a String with a Rat.
pmichaud colomon: sure, the underlying concatenate operation for String is much more forgiving 16:12
colomon anyway, I've just made a page, and that's the first bug on it.
wiki.github.com/rakudo/rakudo/ng-issues
jnthn pmichaud: Is there any way we could just use Perl 6's infix:<~>?
pmichaud jnthn: that'd be somewhat slow. And we're bound to miss some.
colomon ng: my $a; say $a.Str
pmichaud I'd rather fix concatenate.
jnthn OK.
p6eval ng 46e2ef: OUTPUT«Method 'Str' not found for invocant of class ''␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn *nod*
pmichaud that's actually pretty simple -- let me create a patch. 16:13
colomon ng: my $a; say $a ~ "hello"
p6eval ng 46e2ef: OUTPUT«Mu()hello␤»
masak jnthn: oh, by the way. I tried your suggested fix to my anon-enum patch yesterday.
jnthn masak: oh, did you? :-) 16:14
masak jnthn: I'll nopaste the result.
colomon ng: my @a; @a.push: "a";
jnthn And? Que passo?
p6eval ng 46e2ef: OUTPUT«Null PMC access in get_integer()␤current instr.: 'perl6;Seq;elems' pc 268002 (src/gen/core.pir:24115)␤»
pmichaud nopaste.snit.ch/19577 # try this
masak jnthn: gist.github.com/302697 16:15
colomon pmichaud: trying. 16:17
pmichaud pmichaud@orange:~/ng$ ./perl6
> my $a = 3/2; say "$a ";
too many positional arguments: 3 passed, 2 expected
so, not quite.
jnthn masak: Right, so that means it parsed.
masak jnthn: oh! so good news? :)
jnthn: where do I attempt to put in the actual stuff it should do, then? Actions.pm? 16:18
jnthn masak: I think it's just saying that you didn't have an action method that made a PAST node for the enum declarator.
masak: Yes.
masak gotcha. will muddle on. :)
colomon pmichaud: why would it pass three arguments to concatenate? 16:19
pmichaud =item C<PMC *concatenate(PMC *value, PMC *dest)>
(self being an implied third argument)
masak that error message needs to go away. 16:20
or it will be at the top of the newbie FAQ.
Trashlord hello
masak Trashlord: yo!
colomon pmichaud: ah, that makes sense.
jnthn hi Trashlord
Trashlord how's it going?
masak Trashlord: forwards. and soon weekend, too! 16:21
Trashlord: how's going with you?
pmichaud I don't know how :vtable('concatenate') is supposed to work in that case, though.
Trashlord had work at 3am today, just woke up from resting after it, heh
masak Trashlord: working nights? 16:23
Trashlord yeah, sometimes
you get used to it eventually
masak yes. unfortunately. :/ 16:24
Trashlord yeah :\
kinda ruins the rest of your day
at least I got a day off tomorrow, so getting back from work at 10am today doesn't matter that much 16:25
16:28 explorer__ joined, payload joined
pmichaud colomon: okay, found it. patch coming. 16:29
colomon pmichaud: \o/ 16:30
masak doesn't this quote from Steele's "Gronwing a Language" sound like a very fit description of the Perl 6 community/process? gist.github.com/302714 16:31
colomon Gronwing: A Language :)
masak s/Gron/Gro/ :)
pmichaud nopaste.snit.ch/19580 # colomon, try this one 16:32
IllvilJa masak: thanks for the encouraging FAQ regarding parrot error messages you blogged about earlier this week ;-). 16:33
masak IllvilJa: you're welcome :)
pmichaud $ ./perl6
> my $a = 3/2; say "$a "
1.5
masak always enjoys being the fly in the ointment, if there's a chance it has good side effects 16:34
pmichaud "Waiter! There's a fly in my ointment!"
masak :)
IllvilJa On a more serious note... has rakudo-ng (the one with the new regex engine and nqp stuff, if I'm not mistaken) become THE rakudo that get's downloaded when doing a 'git pull' for rakudo? 16:35
pmichaud IllvilJa: not yet. very soon.
moritz_ not quite there yet
Tene I can't say that I really understood that blog post.
pmichaud IllvilJa: hopefully today, if I can get array and seq worked out.
it's really really ugly code :-(
IllvilJa \o/
moritz_ what about hashes? do they work again? 16:36
IllvilJa Ugly code that does wonders still does wonders.
pmichaud fsvo "work"
those will be working shortly thereafter, I'm sure.
IllvilJa I'll do a daily 'git pull' and see what comes down :-D
pmichaud it's again trying to deal with the mismatch between Parrot's PMC model and Perl 6's container/value model
IllvilJa Is rakudo-ng faster? 16:37
pmichaud IllvilJa: should be, yes. I don't know that we have any direct comparisons. But under the hood it's doing a lot less work.
Also, Parrot has done some significant speedups in the past month or so.
IllvilJa Ok... I got a dog slow experimental CGI script written in Rakudo Perl6, so once rakudo-ng hit's the main trunk, I suppose I can do a (very subjective) test. 16:38
pmichaud well, when ng hits the main trunk, it'll still be a significant regression
but I think we can prioritize a few features
afk for a bit 16:39
masak Tene: the mistyped-class-in-a-namespace blog post? 16:40
jnthn Hashes sorta work - slices don't and they're missing a bunch of built-ins.
IllvilJa Thanks for the info... I'll be back, but it's dinner time right now (and small kids we try to get to the table... interesting task at times). 16:41
Tene masak: Yes.
IllvilJa Thanks for your hard work on rakudo and parrot!
masak Tene: it's basically about a bit of frustration I run into sometimes.
Tene: I've been bitten by that error messages four or five times. 16:42
Tene masak: Right, I understood the content, but I couldn't work out whether you were saying "I'm frustrated." or "You guys all suck." or "Obviously nobody cares about usability" or "Other things are great, so this stands out notably as bad", or ...
colomon pmichaud: make spectest passes for me with that fix. 16:43
masak Tene: actually, I tried to represent both the user side ("this is really not an acceptable error") and the dev side ("we know, and it's not always simple to fix") accurately.
pmichaud colomon: feel free to commit/push then, I'm a bit distracted here for a while 16:44
colomon pmichaud: I'm on it. 16:45
masak Tene: there's a clear component of "I'm frustrated" in the post, but I went to great lengths not to sound accusing.
"I'm frustrated" is an undeniable part of the Rakudo user experience, as of 2008/2009/early 2010 :)
jnthn Clearly things were better in 2007! 16:46
PerlJam jnthn++
masak good old days :)
Tene masak: I guess I just felt like it was a mixed message, which you're saying it actually was, so I guess I understood it after all. :) 16:47
masak it's deliberately mixed, yes.
that's what it's like to write Perl 6 code, too.
colomon ack, I think I just borked my ng install. :( 16:48
masak you kind of root for the good guys (the devs), but all the same you're getting these strange, inexcusable error messages sometimes :)
s/inexcusable/LTA/
16:49 SmokeMachine left
masak also, I hope I blog positively often enough that I have some panic capital to burn on the occasional rant... :) 16:50
Tene masak: Certainly. I wasn't objecting to you ranting, just trying to figure out if you actually were. 16:51
masak guess I were.
jnthn
.oO( "What it's like to be a Rakudo dev" could make a good blog post one day )
masak jnthn: sure, why not? 16:52
jnthn masak: Only the same reason as "why not" everything else - there's only so many hours in a day. :-)
dalek kudo/ng: bb80570 | (Solomon Foster)++ | src/builtins/Mu.pir:
pmichaud++'s patch which adds Mu.concatenate and Mu.concatenate_str.
16:53
masak "Hello, did you implement infinite-dimensional hashes yet?" -- "What, you didn't fix the bug that I submitted half a month ago yet?" -- "When's Perl 6 coming out?"
colomon I often find myself asking those same questions. ;) 16:58
masak :)
I don't so much anymore.
I'm more like, "ok, here's what works today. what can we build with it?"
17:00 dual joined
pugs_svn r29699 | colomon++ | [t/spec] Remove initial spaces in test description strings added yesterday as a workaround for a bug which has now been fixed. 17:01
moritz_ wishes a good weekend to everybody and says "ciao" 17:03
masak ciao, moritz_!
17:03 athenot left
colomon moritz_: have a good weekend! 17:05
masak by the way, I saw that rindolf showed up on the channel the other day, saying "ok, I'm ready to learn a bit of Perl 6 now". that's actually quite significant, considering his stance as of 2004. freshmeat.net/articles/critique-of-...is-heading 17:10
PerlJam masak: just because he's ready to learn it doesn't mean he's changed his position :)
masak true. 17:11
but I think he has, too.
the comments are interesting in themselves... first, tens of confused commenters trying to defend Perl 6 from a point of little information, then Schwern and Ovid commenting the living daylights out of the post...
...then a lot of people agreeing with Schwern and Ovid, and finally, years later, two jerks assuming that Perl 6 is vapourware. 17:12
I'm pondering whether a reasoned comment might help de-confuse people reading all the way down. 17:13
anyway, not right now. I'm off to a housewarming party! o/ 17:15
17:15 masak left 17:16 SmokeMachine joined 17:17 cotto_work left 17:18 cotto_work joined 17:22 barney left
colomon ng: (1..10).grep(say $_; 1;).eager 17:30
p6eval ng bb8057: OUTPUT«Confused at line 1, near "(1..10).gr"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤»
colomon ng: (1..10).grep({say $_; 1;}) 17:31
p6eval ng bb8057: ( no output )
colomon ng: (1..10).grep({say $_; 1;}).eager
p6eval ng bb8057: OUTPUT«Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤Mu()␤»
jnthn Epic fail. :-/
17:31 cotto_work left
colomon Just working on updating the issues wiki. ;) 17:32
actually, I was starting to look at sin.t, and then remembered these errors that should get added to the list.
And now I'm hitting them! 17:34
jnthn ooh, trig!
colomon I won't really get to it today, I don't think, but I thought I'd take a peek and see where we are today.
rakudo: say pi.Rat(1e-10); 17:35
p6eval rakudo 1d4928: OUTPUT«3.14159265361894␤»
colomon rakudo: say pi.Rat(1e-10).perl;
p6eval rakudo 1d4928: OUTPUT«312689/99532␤»
17:38 pmurias joined
colomon If I take away the (now incorrect) Num in AngleAndResult.new, switch pi to (312689/99532) throughout, and $_ to $^a in greps, we pass 40 trig tests before seg faulting. 17:39
That's not as bad as I fear.ed.
afk # running errands.
17:45 lichtkind left, cotto_work joined 17:50 payload left 17:52 pmurias left
pmichaud back again 17:57
what's the intended difference between "NG issues" and "NG major features needed" pages? 18:01
18:01 SmokeMachine left
colomon pmichaud: just trying to dodge the "major features" label. 18:01
pmichaud okay
maybe just combine the two into "ng issues" then
colomon sort of "small scale but useful features".
I've certainly no objection to that. 18:02
mberends I thought it meant short term buglets not worthy of trac reporting 18:03
18:03 wanradt_ left 18:04 jackyf joined
colomon mberends: my idea was that if they weren't fixed by this time next week they probably went into trac. 18:04
pmichaud s/trac/rt ?
18:05 stephenlb joined
mberends makes sense. s/trac/rt 18:05
colomon s/trac/rt
18:05 nacho left
colomon ack, I'm afraid the sin.t may be hitting the random seg fault bug. 18:10
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0873c000
0xffff07c7 in ?? ()
(gdb) bt 18:11
#0 0xffff07c7 in ?? ()
#1 0x00c2fecc in ?? ()
Previous frame inner to this frame (gdb could not unwind past this frame)
18:13 kaare_ joined 18:14 ShaneC joined
colomon That doesn't seem like the usual bt pattern for it. But it does change location depending on where I add "say" statements... 18:15
18:17 cognominal left, cognominal joined 18:25 cognominal left, explorer__ left 18:30 athenot joined
pmichaud jnthn: If you could put together a 'setprophash' opcode, I think that would be very useful. I'm guessing it will require a new vtable. 18:35
(I'm happy to be wrong about that, however :-)
oh, I suppose it could be done with just a new opcode. Anyway, when one is available, I can probably use it for some efficiency gains. 18:36
18:36 iblechbot joined 18:38 athenot left, athenot joined
jnthn pmichaud: OK. I just had a nap, now I need to go and try to find something appealing to eat (my stomach is rather messed up :-|)...should be able to churn it out later today. :-) 18:39
pmichaud that's fine, no rush. it's an optimization more than a "needed to make things work"
jnthn Will skip the new vtable and just stick it in our dynops for now.
pmichaud if it's in our dynops, I'd prefer it to not be named whatever we think the parrot opcode will be named, then 18:40
jnthn Once we're satisfied we need it, we can get it into Parrot.
Oh, good point.
pmichaud (avoids naming clashes if/when it goes into parrot)
jnthn experimental_setprophash :-)
pmichaud just x_setprophash is fine
jnthn yes, much finer :-)
OK...supermarket time. 18:41
pmichaud I'm getting spectest failures on ng...expected?
jnthn nopaste?
pmichaud I'm re-running with a fresh ng checkout at the moment... will nopaste when that's ready
(may take a few minutes)
jnthn OK
pmichaud anyway, I have my @a; @a[0]++; say @a[0]; running locally 18:42
jnthn I'll glance 'em when I get back...I only am aware of some non-zero exit codes but without fails.
18:42 cognominal joined
jnthn And problem with sign.t that is I think specific to my platform's handling of zeros or NaN or something. 18:42
back soonish...
18:43 cognominal left 18:44 Maddingue joined 18:46 Maddingue left 18:47 cognominal joined, Maddingue joined 18:56 wanradt_ joined
pmichaud jnthn: correct, all I'm getting are the non-zero wait status errors as well. 19:04
19:06 Trashlord left 19:08 jackyf left 19:12 Psyche^ joined 19:13 wanradt_ left 19:14 orafu left 19:16 orafu joined, Patterner left 19:17 cjk101010 left
jnthn pmichaud: Yeah, they're kinda annoying. :-/ 19:17
19:17 Psyche^_ joined, Psyche^_ is now known as Patterner 19:20 Psyche^ left
uniejo ng: (7 ~~ 5..10).Bool.say; (5..10 ~~ 7).Bool.say # Is this supposed to work both ways around? 19:20
p6eval ng bb8057: OUTPUT«sh: ./perl6: No such file or directory␤»
pmichaud uniejo: no, ~~ isn't commutative. 19:21
uniejo ok
pmichaud the first asks if 7 is in the range 5..10 (yes). The second asks if 5..10 smart matches with an Int 7 (it doesn't)
dalek kudo/ng: b577776 | pmichaud++ | src/builtins/ (2 files):
Add Seq!elem and Array!elem as method for creating element PMCs

some of the array issues, such as "my @a; @a[0]++; say @a[0];".
19:22
19:23 ash__ joined
jnthn pmichaud++ 19:25
pmichaud now to restore list assignment
jnthn \o/ 19:26
19:29 ash__ is now known as help 19:30 help is now known as Guest72243, Guest72243 is now known as ash__ 19:31 Chillance joined
dalek kudo/ng: fb6d8a5 | pmichaud++ | src/builtins/assign.pir:
Clean up assignment to scalars.
19:34
19:37 stephenlb left 19:38 snarkyboojum joined, stephenlb joined 19:40 clausi joined
ash__ what is '::=' called? a read only bind? 19:44
PerlJam compile-time bind
pmichaud it's now a read-only bind
PerlJam (well, that's what *I* call it :(
er, :) 19:45
pmichaud ("compile-time bind" is outdated)
in particular, it no longer happens at compile-time :)
PerlJam read-only bind means what exactly? After the bind the container is ro? 19:46
pmichaud Yes.
PerlJam but you can still rebind, yes?
pmichaud not sure about that.
> my ($a, $b) = 7, 9; say "$a $b"
7 9
\o/
ash__ yay, list assignment! 19:47
pmichaud spectesting now, then push.
ash__ i was talking with someone in here the other day about custom indices on arrays, is that still practical? (or needed)? its in S09 under "User Defined array indexing" 19:48
it seems like it turns @arrays into effectively ordered hashes, unless i am completely wrong in my understanding of how that works
PerlJam ash__: "practical"? For whom? I think that practicality is kind of the point.
ash__ well, they seem like hashes at that point, so why not use a hash? 19:49
PerlJam ash__: because you require the ordering.
ash__ unless they want to use them as ordered hashes, which i guess makes sense to have the distinct
dalek kudo/ng: bbcb6b0 | pmichaud++ | src/builtins/Parcel.pir:
Add Parcel!STORE (list assignment).
19:51
PerlJam ash__: one of the ways I look at it is that custom indices are very useful for domain-specific problems so that you don't have to manage the mapping from problem-domain identifier to array index yourself.
pmichaud okay, list assignment and arrays are now back in the ng branch. I'll be interested to see what's still broken about them. 19:52
I'll do slices next.
PerlJam pmichaud: and then merge? 19:53
pmichaud fsvo "merge", yes.
PerlJam okay, how about "make ng master" then?
pmichaud yes.
PerlJam cool
19:55 orafu left, orafu joined
takadonet !!!! 19:56
20:01 justatheory left, justatheory joined
jnthn pmichaud: Wow, that was quick! :-) 20:04
colomon omg, I go away and there is amazing stuff pushed. \o/ 20:06
mberends just curious, what files/code do .loadlib 'perl6_group', 'perl6_ops' and 'math_ops' load? 20:09
jnthn mberends: dynpmcs and dynops 20:10
mberends: perl6_group refers to a DLL/SO from src/pmc/*.pmc
perl6_ops.[dll|so] is from src/ops/perl6.ops
mberends thx, writing a few docs about Rakudo architecture (also for the coming talks)
jnthn \o/ 20:14
mberends: Commits to docs/ welcome, imo. :-) 20:15
mberends will do :)
20:17 ruoso left
pmichaud perl6_group is the dynamic PMCs 20:19
perl6_ops are the dynamic ops
math_ops are Parrot's dynamic math ops
mberends the =head1 DESCRIPTION \n =cut in Perl6/Compiler.pir looked so small and helpless, it desperately needed fulfilment ;) thx pmichaud 20:20
20:22 stephenlb left
mberends jnthn: thanks, docs/compiler_overview is a better place for what I was writing. I'll update that instead and refer the POD in Perl6/Compiler.pir to that. 20:25
20:26 orafu left, orafu joined 20:28 bluescreen left 20:31 nacho joined
jnthn mberends++ 20:38
mberends updating docs/compiler_overview.pod will take lots of forgiveness for misunderstandings ;) 20:39
20:41 bluescreen joined
dalek kudo/ng: f8ea414 | jonathan++ | src/ops/perl6.ops:
Implement x_setprophash dynop for pmichaud++.
20:43
20:53 Trashlord joined 20:54 clausi left
dalek kudo/ng: 90ba35c | (Solomon Foster)++ | t/spectest.data:
Turn back on S32-array/end.t, S32-array.pop.t, S32-array/shift.t, S32-list/end.t, and S32-list/first.t. pmichaud++
20:55
kudo/ng: 1aa8acf | (Solomon Foster)++ | src/ops/perl6.ops:
Merge branch 'ng' of [email@hidden.address] into ng
jnthn Wow!
mberends colomon++
jnthn colomon: I think I've worked out the grep issue.
Just need to spectest to make sure I didn't break anything else while fixing it. 20:56
20:56 simcop2387 left
colomon mberends: pmichaud++ gets all the credit for this one. All I did was have a notion that those tests were being blocked by the my @a; bug. 20:57
PerlJam pmichaud: if you use "git pull --rebase" or put "rebase=true" in your .git/config under the appropriate branch, you won't see those "merge A into B" commits anymore. 20:58
colomon I didn't count the exact number, but I think those 5 got us back well over 100 tests.
mberends :D
colomon PerlJam: that's my fault, I think. I thought it was git pull --ff ?
jnthn does git pull --rebase 20:59
colomon --rebase sounds right to me, now that PerlJam++ has mentioned it.
I just got out of the habit during the long dark tea-time of ng.
PerlJam --ff is the default behavior. It only doesn't generate a merge commit if it can fast-forward. 21:00
21:01 iblechbot left
dalek kudo/ng: 952d99e | jonathan++ | src/core/Block.pm:
Fix Block.ACCEPTS, which was the problem at the root of the 'grep bug'.
21:01
colomon \o/ 21:02
It's like Christmas! 21:03
jnthn ;-)
pugs_svn r29700 | jnthn++ | [t/spec] Untodo a test that ng passes. 21:06
pmichaud I've heard conflicting views on the use of --rebase
jnthn Aren't there conflicting views on just about everything in git, apart from everyone agrees it's awesome? :-) 21:08
PerlJam pmichaud: me too, but I've been using it for a couple of weeks now and it seems fine.
colomon I'm pretty sure I use --rebase all last fall for rakudo with no ill-effects I'm aware of. 21:09
PerlJam pmichaud: the main "problem" with --rebase is that it could rewrite commits that you've already pushed. I haven't been able to make this happen though and I'm not sure how it could happen
21:10 macae left
PerlJam for the type of workflow that most (all?) of us use, I don't think --rebase could be a problem. 21:10
colomon I thought if there was a conflict rebase would just do a normal merge?
21:12 tomaw_ left
jnthn pmichaud: ping 21:13
colomon heh: www.viget.com/extend/only-you-can-p...e-commits/
pmichaud jnthn: pong 21:14
jnthn pmichaud: Just want to avoid a conflict...
pmichaud: Are you working on slice stuff atm?
pmichaud: I was pondering trying to get match object indexing working. 21:15
pmichaud atm, no, but I plan to "shortly"
jnthn But figure we might end up hitting on the same bit of code...
pmichaud I'd recommend leaving match object to me
jnthn OK, wfm
pmichaud I can do that real quick, aksually
jnthn OK, cool
I may take a look at why mixins are broked then. 21:16
They did work at one point :-/
oh gah 21:19
iter correctly hands back a SeqIter
21:19 vamped joined
jnthn But then vtable shift tries to call shift, not get. 21:19
And the code also needs to work on RPAs. 21:20
pmichaud I've been thinking that we should have :vtable entries for Iterator.
(that then forward to .get)
jnthn Ooh, that'd work. 21:21
pmichaud well, sort of.
get_boolean is still going to be problematic
I've been thinking that we may want/need a ParrotIterator type that converts any list/iterator into something that follows the Parrot iteration semantics
and then :vtable('get_iter') returns one of those. 21:22
the ParrotIterator can then do any lookahead to see if we've reached the end of the list and properly return bool true/false 21:23
jnthn oh yeah
YOu're right, we can't just make it work by fixing up shit.]
*shift
...
I'll have a crack at that. 21:24
21:31 Su-Shee left 21:32 vamped left 21:35 meppl joined 21:37 cotto_work left 21:46 uniejo left 21:47 Trashlord left 21:54 athenot left 21:56 alanhuyle joined 21:57 alanhuyle left
jnthn pmichaud: ParrotIter idea works out very nicely. :-) And mix-ins work again. :-) 21:58
pmichaud +1
even if I haven't been coding, I've been designing/thinking about things :)
21:58 nacho left
jnthn That's important too :-) 21:59
Pushed.
21:59 k23z__ joined 22:00 simcop2387 joined
pmichaud does find_method opcode work on role objects? 22:00
i.e., I want to get the (multi)method for postcircumfix:<[ ]> from the Positional role 22:01
22:02 lichtkind joined
jnthn pmichaud: yes and no 22:02
It'll think you want to pun.
pmichaud punning is okay.
22:02 fridim left
pmichaud at least, I think punning will be okay. 22:02
jnthn Checking something... 22:03
dalek kudo/ng: 400373d | jonathan++ | (3 files):
Add ParrotIter, which provides Parrot iterator semantics in terms of the Perl 6 iterator semantics. Our get_iter vtable override hands that back.
22:04
jnthn pmichaud: Gah. The one problem here is that postcircumfix:<[ ]> has been considered special for roles up to now.
Becasue it's the way that you parameterize.
22:04 pmurias_ joined
jnthn e.g. Positional[Int] 22:04
pmichaud I don't have a problem with that, either.
at least, I don't think I do. 22:05
jnthn pmichaud: I suggest that you:
1) Get the Positional role and pun it
pmichaud I just need to get to the method object that normally responds to postcircumfix:<[ ]>
jnthn 2) find_method on the pun
$P0 = get_hll_global 'Positional'
pmichaud right now I'm trying 22:06
$P0 = get_hll_global 'Positional'
$P0 = find_method $P0, 'postcircumfix:<[ ]>'
.tailcall invocant.$P0(args :flat)
jnthn Yeah, I don't think that'll work.
pmichaud what's the "pun" step, then? 22:07
or, perhaps I should just look up the method in the namespace for now?
jnthn Easiest way is $P0 = $P0.'new'()
pmichaud (not a big fan of that... but it might be easiest for now)
22:08 clintongormley left
jnthn And find_method on that 22:08
pmichaud hmmm.
jnthn I need to tidy up a bunch of this stuff after a discussion with TimToady++
pmichaud I'll just try a namespace lookup for now.
jnthn That'll work for now
pmichaud creating a new object gets expensive on every .[] call
(Yes, I could cache the result somewhere.)
jnthn Well, you can cache it.
In many senses that should do the Right Thing, anyways. 22:09
22:09 cotto_work joined, clintongormley joined 22:10 clintongormley left
pmichaud > "abc" ~~ /a(.)c/; say $/[0]; 22:23
b
colomon \o/
pmichaud > "abc" ~~ /a(.)c/; say $0; 22:24
Confused at line 1, near "say $0;\n"
22:25 Trashlord joined, Trashlord left, Trashlord joined 22:26 Chillance left
dalek kudo/ng: adc7d3a | pmichaud++ | (3 files):
Refactor !postcircumfix:<[ ]> into Positional.pir .
22:33
kudo/ng: 13e77a2 | pmichaud++ | src/builtins/Positional.pir:
Update Positional.postcircumfix:<[ ]>(Int) to work with foreign objects.
kudo/ng: 141fa1a | pmichaud++ | (3 files):
Merge branch 'ng' of [email@hidden.address] into ng
22:34 cotto_work left
jnthn pmichaud: Nice :-) 22:36
pmichaud: Are you popping back the $0 etc too? I can easily do those if not.
jnthn figures with those, we win back a bunch of S05 tests. 22:37
pmichaud > "abc" ~~ /a(.)c/; say $0 22:38
b
22:39 payload joined
jnthn \o/ 22:39
colomon is very glad he has company coming over tonight, but kind of wishes he could hack on rakudo instead... exciting times! 22:43
22:44 cotto_work joined
jnthn yawns 22:47
ash__ '12ab' ~~ /<alpha>+/; say $/<alpha>; is probably next on the line then?
pmichaud I can work on Associative as well, yes.
ash__ do the named captures like that get set to anything? kinda how ( ) go to $1, $2, ... $n 22:48
pmichaud they go to $<alpha>, $<digit>, etc.
jnthn You can use $<foo>
Which saves....1 character. :-) 22:49
22:49 athenot joined
ash__ ah, yeah, i forgot about that, you can omit the / 22:49
dalek kudo/ng: 0a37674 | pmichaud++ | src/Perl6/ (2 files):
Add implementation for $0, $1, $2, etc.
22:50
mberends ooh! my buglet fixed! pmichaud++, and thanks on behalf of proto...
pmichaud yes, I should be able to stomp on quite a few buglets this weekend. 22:52
jnthn wiki.github.com/rakudo/rakudo/ng-issues has only 3 issues left now :-)
mberends :D will try proto a bit more as well
jnthn should have a reasonable amount of hacking time at the weekend 22:53
mberends too
22:58 kaare_ left
pmichaud ng: my @a = 4,5,6; say @a[1]; 23:01
p6eval ng 0a3767: OUTPUT«5␤»
pmichaud ng: my @a = 4,5,6; say @a[-1];
p6eval ng 0a3767: OUTPUT«Cannot use negative index on arrays␤current instr.: '&die' pc 15509 (src/builtins/Junction.pir:169)␤»
jnthn :-)
ng: my @a = 4,5,6; @a[1] = 42; say @a[1];
p6eval ng 0a3767: OUTPUT«42␤»
jnthn \o/
jnthn is glad that one is fixed
pmichaud almost as good: 23:02
jnthn ng: my %h = a => 4, b => 5; %h<a> = 42; say %h<a>;
pmichaud my @a; @a[5] = 42; say @a;
p6eval ng 0a3767: OUTPUT«42␤»
pmichaud my @a; @a[5] = 42; say ~@a;
jnthn pmichaud: Yay! Whatever you did also fixed the same issue hashes had. :-D
pmichaud ng: my @a; @a[5] = 42; say ~@a;
p6eval ng 0a3767: OUTPUT« 42␤»
jnthn :-)
pmichaud the hashes issue there was undoubtedly a list assignment issue or something.
because I hadn't touched hashes yet (but touching them now :) 23:03
jnthn pmichaud: Possibly, yes. :-)
pmichaud ng: "abc123" ~~ /<digit>/; say $/<digit>; # expect fail
p6eval ng 0a3767: OUTPUT«Can't postcircumfix:<{ }> foreign objects yet.␤current instr.: '!postcircumfix:<{ }>' pc 322695 (src/gen/core.pir:43993)␤»
pmichaud fixing. 23:04
23:05 wasy_ joined 23:07 wasy left, wasy_ is now known as wasy, iblechbot joined
jnthn ng: sub foo { return 1, 2, :a<3>; }; my ($a, $b, $c) = foo(); say ($a, $b, $c)>>.perl 23:09
p6eval ng 0a3767: OUTPUT«12Pair.new(:key("a"), :value("3"))␤»
jnthn \o/
pmichaud something is weird with named captures.... 23:10
jnthn Oh?
pmichaud rebuilding fresh to see if I can lock it down 23:11
but I'm getting "recursion depth exceeded" in the match itself.
jnthn :-/
That's...weird.
pmichaud and it's having something to do with role management :-(
jnthn Got a short example? 23:12
pmichaud hmmm, not after I checked out fresh. 23:14
I must've done something wrong earlier -- trying again.
23:15 bluescreen left
jnthn may try and get Capture back in place tomorrow. 23:17
And a bunch of coercions to it. And then nested signatures can work again, and I can get :(\$capture) working too. :-) 23:18
pmichaud ugh, looks like we have something incorrectly calling "postcircumfix:<{ }>" without the leading ! 23:24
or something else is happening when I try to add a postcircumfix:<{ }> into the Associative role.
jnthn What's the error? 23:25
23:25 iblechbot left
pmichaud maximum recursion depth exceeded. 23:25
In the match.
jnthn During the actual match itself? Ouch. That's...really strange. 23:26
pmichaud yeah, I'm getting lots of calls to "&CREATE_HASH_LOW_LEVEL" and "Perl6;Metamodel;RoleToRoleApplier" 23:27
my code I'm running is "abc123" ~~ /<digit>/;
jnthn Ouch.
23:28 ash__ left, ShaneC left
pmichaud it's definitely the existence of "postcircumfix:<{ }>" in Associative[::T] that is causing the problem. 23:28
jnthn Attempting to reproduce. 23:29
pmichaud I'm trying a workaround where I call the method something else.
jnthn I have a nasty feeling of what it is though.
Argh! 23:31
pmichaud: *sigh*
pmichaud: Yes, it is that.
pmichaud: Something in the role compositon ends up calling a method defined in the Perl 6 setting. 23:32
This method in turn has a slurpy named parameter.
It thus tries to instantiate a Hash, meaning it tries to compose the Hash role, apart from...
...we were already doing that, so we try again, and ... blah. 23:33
pmichaud > "abc456" ~~ /<digit>/; say $<digit>;
4
jnthn pmichaud: Just worked around it? 23:34
pmichaud yes, I've named the method XXX-postcircumfix:<{ }> for now.
jnthn OK.
pmichaud but that's a problem that will have to be resolved if we want hash slices to work
or hash keys based on WhateverCode 23:35
jnthn Right.
23:35 ShaneC joined, ShaneC left
jnthn It's a tricky problem. 23:35
pmichaud ...is something calling postcircumfix:<{ }> as a method directly?
jnthn What I *think* is happening is... 23:36
You have a method that is in Associative, but also in EnumMap
This makes the role applier take a different code path (needs to know not to use the one in Associative or some such)
pmichaud is EnumMap a role also?
jnthn And in doing so, it calls Mu.Bool
Yeah 23:37
This is to get the parametric-y stuff to work.
pmichaud what's the difference between Associative and EnumMap, then?
jnthn Associative just says "this thing does postcircumfix:<{ }>". It also provides .of 23:38
EnumMap is essentially a Hash minus !STORE
pmichaud does EnumMap have to have a postcircumfix:<{ }> then? Can it just use the one from Associative?
jnthn It could do 23:39
That may fix it.
But I guess there's other ways to try and deal with it too.
pmichaud anyway, I'll test+push what I have working now, and head to dinner.
jnthn OK
I'll try and look at that tomorrow - too tired to debug the role composer tonight.
pmichaud I need to review and understand EnumMap anyway, so perhaps this is best to wait for tomorrow
I haven't read all of the spec changes relating to Enum/EnumMap.
jnthn In a nutshell, Enum just seems to be an immutable Pair. 23:40
I asked if the expectation was that Pair ~~ Enum and Hash ~~ EnumMap and was told that sounded reasonable. :-)
pmichaud EnumMap sounds analogous to a Seq
jnthn Yeah, I think so.
Though with hashes there isn't the laziness angle. 23:41
pmichaud it's currently a role?
jnthn Yes
pmichaud maybe it should be a class, like Seq currently is.
jnthn The reason being that in theory we can then pass along the type parameters.
Well
That's the other question on Seq.
How do we put back typed lists.
pmichaud how did we do it before? (did we do it before?)
jnthn We could just make them all classes and cheat like we do in master.
pmichaud right.
jnthn In master, we mix-in the role. 23:42
e.g. make an Array or whatever, and then do @thingy does Positional[Int]
That always felt like a cheat to me.
pmichaud seems like Seq should mix-in Positional[<type>] and EnumMap should mix-in Associative[<type>]
but yes, perhaps it's a cheat
jnthn But...maybe I can see it as less of one and make our lives easier.
:-)
23:42 payload left
jnthn I'm not sure. The thing is that it implies that all of those thingies want to be roles. 23:43
pmichaud anyway, I'll look at it tomorrow. I do know that Seq's postcircumfix:<[ ]> needs to be able to override the one from Positional, and EnumMap's postcircumfix:<{ }> probably needs to override the one from Associative
jnthn Right.
We maybe could switch Hash and EnumMap to classes for now.
And carry on with the same approach as master. 23:44
pmichaud I'd be fine with that.
jnthn It just feels a tad cheaty, and one of those things that mighta been worth trying to get right from the start with hashes. 23:45
If not for lists.
pmichaud well, whatever we do for one we ought to do for the other. and slices + multi-method indexing are pretty important.
jnthn OTOH, maybe consistency in approach between them is better.
pmichaud pushing latest commit 23:46
and time for dinner
bbl
jnthn OK, let's for now say they're classes.
OK, I'll sleep pretty soon.
dalek kudo/ng: 0d86e31 | pmichaud++ | (3 files):
Refactor !postcircumfix:<{ }> into Associative.pir .
23:48
kudo/ng: c0f4ccc | pmichaud++ | src/builtins/Associative.pir:
Add in postcircumfix:<{ }> for foreign objects (especially match objects

  (by calling it "XXX-postcircumfix:<{ }>") to avoid an infinite recursion
having to do with EnumMap. This will ultimately have to be fixed to get hash slices to work.
23:48 colomon left
23:51 Schwern joined 23:52 payload joined
jnthn -> rest 23:53