»ö« | 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.
colomon jnthn: Any reason why we shouldn't handle this by just changing "svn up" to "svn up -r29188" in Makefile.in? This has the advantage of merging with existing Rakudo installations more nicely... 00:08
jnthn heh 00:09
What about the initial checkout? That'd need similarly patching.
YOu're right though.
colomon I just did.
jnthn That will be far more transparent.
wfm.
colomon I will commit this in another minute or two. 00:10
jnthn 'k 00:11
00:22 SmokeMachine joined 00:25 IllvilJa left
colomon Done. 00:26
now to make fudge rat.t until it passes in ng. :) 00:28
00:30 pmurias left 00:35 colomon_ joined, colomon left, colomon_ is now known as colomon 00:39 patspam1 left
Wolfman2000 phenny: tell masak I finally understand Catalyst ResultSet abstractions. Take a look at my github, and see if you can incorporate some of the split stuff I just did. ;) 00:47
phenny Wolfman2000: I'll pass that on when masak is around.
00:58 snarkyboojum_ joined 01:00 JeffreyKegler joined 01:01 JeffreyKegler left
pugs_svn r29206 | colomon++ | [t/spec] Fudge rat.t so that it works with Rakduo-ng. 01:06
01:09 snarkyboojum left, snarkyboojum_ is now known as snarkyboojum 01:12 gfx joined
pugs_svn r29207 | colomon++ | [t/spec] Unfudge tests that work in Rakudo-ng. 01:12
colomon Ummm... numeric context tests that are todo-passing in ng.... 01:15
ng: my Int $x = +'2'; say $x; say $x.WHAT;
p6eval ng b155b4: sh: ./perl6: No such file or directory␤
colomon grumble 01:16
ng: my Int $x = +'2'; say $x; say $x.WHAT; 01:23
p6eval ng f6ad9a: 2␤Num()␤
Tene resists the temptation to play with implementing macros in ng.
colomon Tene: You know you want to do it.... 01:24
Tene Maybe after I finish $realjob work.
colomon ng: my Int $x = '4' - 3; say $x; say $x.WHAT; 01:25
p6eval ng f6ad9a: 1␤Num()␤
Tene I got some half-reasonable macros working in my scheme compiler for Parrot today.
are there any macro tests?
colomon I've no idea. 01:26
colomon just doesn't want to be the only one hacking on ng tonight...
Tene Ah. If you choose some tasks for me, I can hack on ng in a few hours, I expect. 01:27
colomon hmmm....
list assignment? 01:28
loop?
Tene loop sounds good.
colomon I don't have a clue how to do it, but if you can work it out I will celebrate. :) 01:29
Tene I like loops.
colomon And if you've got loop and gather/take, you can do all sorts of cool things.
Tene is there a test for loop specifically? 01:30
colomon S04-statements/loop.t, I'm guessing. 01:31
Tene Yeah, I can do that pretty easily. 01:32
colomon \o/
01:34 gfx_ joined
pugs_svn r29208 | colomon++ | [t/spec] Unfudge four tests that are passing, but add two fudged tests to help verify those previously fudged tests are correct. 01:34
01:38 dbrock joined
Wolfman2000 colomon: back from dinner. I don't understand what you mean with that last commit message. 01:41
colomon Do you understand what is meant by fudging in this context? 01:42
Wolfman2000 fudging...I think I've seen that used as lying before.
TimToady that's more or less correct :)
colomon Okay, I'll start from step one then.
(afk for a moment)
When we talk about fudging the tests, what we mean is putting in a todo or skip directive in the test source, so that test is marked either as "we know this will give incorrect results" or "this test fails so hard it must be skipped entirely". 01:44
So for instance, I added this line earlier to rat.t: 01:45
#?rakudo 24 skip 'Int overflow in Rat calculations NYI in Rakudo-ng'
That means, in rakudo, skip the next 24 tests. Everything else is a quick explanation of why to skip those tests.
(in rakudo's make spectest, I mean.)
In the case of the commit above, there were four tests marked "todo" which were never-the-less passing. 01:46
Wolfman2000 unexpected successes then?
colomon Yes.
exactly.
In this case, the first two tests were basically this: 01:47
ng: my Int $x = +'2'; say $x;
TimToady the fundamental goal is that eventually a conforming implementation can run all the test and treat those as mere comments without running through the fudge preprocessor
p6eval ng f6ad9a: 2␤
colomon What I discovered playing around was this:
TimToady in that sense, yes, fudging is lying about how well you do against the official test suite :)
colomon ng: my Int $x = +'2'; say $x; say $x.WHAT; 01:48
p6eval ng f6ad9a: 2␤Num()␤
Wolfman2000 ...that should say Int()
colomon Exactly.
So I unfudged those two tests, and added another test saying "this should say Int".
But because it doesn't say Int yet, I had to fudge the new test. 01:49
Wolfman2000 I'm guessing there are ways to make rakudo ignore the fudging and just get straight to the cake. ...which is apparently a lie right now.
TimToady t/spec/README has more about this too 01:50
01:50 gfx left
TimToady the point of using the comment syntax is that each implementation can ignore the fudge comments of other implementations 01:50
colomon Wolfman2000: I know you can do it by passing the test file straight to ./perl6.
But in general that's only useful if you are hunting unexpected successes. 01:51
TimToady yes, the fudging is applied by the fudgeall that is called when you do make, but you can bypass it
colomon TimToady: Actually, I should ask you about this set of tests.
Wolfman2000 I understand the basics.
colomon ng: my Int $x = +'2'; say $x; say $x.WHAT 01:52
p6eval ng f6ad9a: 2␤Num()␤
Wolfman2000 Now, while it's on my mind...is Perl 6 supposed to allow using Perl 5 modules or not? I thought Perl 6 was supposed to be non backwards compatible with Perl 5
colomon TimToady: looking at that again, I'm presuming +'2' should be an Int.
but the next set of tests is basically
TimToady + is a cast to Numeric, which should translate to an appropriate type. +'2.0' should be Rat, +'2.0e0' would be Num 01:53
colomon ng: my Num $x = +'2'; say $x; say $x.WHAT
p6eval ng f6ad9a: 2␤Num()␤
colomon Should that work? If +'2' is an Int, shouldn't the assignment to Num $x fail?
TimToady Wolfman2000: it's specced to interoperate with P5, though early implementations may be slow on providing this 01:54
unless I can finish my STD_P5.pm file :)
Wolfman2000 ...so for now, stick to helping by playing around now and then and eventually getting up a Perl 6 syntax highlighting pastebin. Got it.
TimToady colomon: depends on how many enemies we want to make :) 01:55
I think we should find a way to assign an int to a num without failing
in an rvalue sense, Int does Num already, kinda 01:56
colomon TimToady: certainly seems like it would be DWIMmy
TimToady anything Integral does Real, in the same sense 01:57
Wolfman2000 ng: my $x = +'2'; say "Int" if $x = $x.Int;
p6eval ng f6ad9a: Int␤
01:57 jaldhar left
Wolfman2000 ...seems like there is some DWIMmy in there already. Just force a cast if...wait 01:57
ng: my $x = +'2'; say "Int" if $x == $x.Int;
p6eval ng f6ad9a: Int␤
Wolfman2000 okay, force the cast.
colomon TimToady: okay, then if I say my Num $x = +'2' and it DWIMmily works, should $x be a Num? 02:00
02:00 gfx_ left
TimToady seems like it 02:01
colomon okay, I've just coded the test for that as well. :)
TimToady I need to figure out how such coercions are officially allowed, I guess... 02:02
colomon :)
ng: say +"3/2" 02:08
p6eval ng f6ad9a: 3␤
colomon ng: say +"3/2" ~~ Rat 02:09
p6eval ng f6ad9a: 0␤
colomon ng: say 3 ~~ Rat 02:10
p6eval ng f6ad9a: 0␤
colomon hmmm,.. wonder why that test is blowing up for me?
pugs_svn r29209 | colomon++ | [t/spec] Tests for handling +'3/2', and tests to make sure Numification returns the correct type. 02:17
02:19 orafu left, orafu joined
Tene colomon: looks like I'm almost done with $realjob 02:20
colomon yay!
ng: while 1 { say "hello"; break; } 02:21
p6eval ng f6ad9a: 02:22
..hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤Warning␤hello␤War…
Wolfman2000 colomon: I think you mean last instead of break...
ng: while 1 { say "hello"; last; }
p6eval ng f6ad9a: hello␤Could not find non-existent sub &last␤current instr.: '_block23' pc 131 (EVAL_1:64)␤
colomon Wolfman2000: Indeed!
diakopter well
Wolfman2000 ...and yet that didn't quite work.
colomon well, that's one way to stop.
Wolfman2000 colomon: I think I just gave you your new task.
colomon actually, I didn't think while worked at all. 02:23
now I wonder if someone implemented loop when I wasn't looking.
Tene TimToady: what's the difference between 'break' and 'last'?
Wolfman2000 ng: my $tmp = 0; while $tmp < 5 { say $tmp ** 2;}
colomon ng: loop { say "hello"; last; }
p6eval ng f6ad9a: 02:24
..0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0␤0􏿽xE2
ng f6ad9a: Could not find non-existent sub &loop␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
Wolfman2000 ...right, forgot to increment
ng: my $tmp = 0; while $tmp < 5 { say $tmp++ ** 2;}
p6eval ng f6ad9a: 0␤1␤4␤9␤16␤
Wolfman2000 side effect statements...gotta love em
Tene TimToady: Nevermind, I found the answer in S04.
colomon Tene: you know, if while works, it might be more useful to implement last than loop.
quantumEd ng: last 02:25
p6eval ng f6ad9a: Could not find non-existent sub &last␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
Tene colomon: 'last' is trivial... 'sec
diakopter ng: while 1 { ({ say 1; return 1})() };
Tene updating to latest...
p6eval ng f6ad9a: 1␤No exception handler and no message␤current instr.: '_block34' pc 237 (EVAL_1:117)␤
02:25 dbrock left
colomon Tene: all the more reason to do it, then! :) 02:25
Tene colomon: check for 'next' and 'redo' for me?
colomon ng: my $t = ; while $t < 5 { $t++; next if $t == 3; say $t } 02:26
p6eval ng f6ad9a: Confused at line 1, near "my $t = ; "␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
colomon ng: my $t = 0; while $t < 5 { $t++; next if $t == 3; say $t } 02:27
p6eval ng f6ad9a: 1␤2␤Could not find non-existent sub &next␤current instr.: '_block27' pc 167 (EVAL_1:72)␤
colomon ng: my $i = 0; while (defined($i)) { if (++$i < 3) { redo }; last } ; say $i 02:28
p6eval ng f6ad9a: Could not find non-existent sub &redo␤current instr.: '_block41' pc 309 (EVAL_1:131)␤
colomon Tene: last, next, and redo, all waiting for an intrepid programmer to tackle them... 02:29
Tene colomon: added... testing... 02:34
Wolfman2000 colomon, Tene: I admit me trying to tackle ng is asking a bit much of me, but perhaps I can offer an idea for redo. Is it possible to just GOTO the original statement without the incrementing, and have next jump to the line before the GOTO to increment? 02:35
I'm kind of assuming this needs to be done in PIR
02:36 colomon left, colomon joined
colomon \o/ 02:36
Wolfman2000 colomon: should I repeat what I just said?
Tene colomon: pushed.
colomon Wolfman2000: I missed whatever you said, yup.
Wolfman2000 colomon, Tene: I admit me trying to tackle ng is asking a bit much of me, but perhaps I can offer an idea for redo. Is it possible to just GOTO the original statement without the incrementing, and have next jump to the line before the GOTO to increment? I'm kind of assuming this needs to be done in PIR.
Tene Wolfman2000: i added the infrastructure to take care of that on all pct-generated loops. All you need to do is throw the right flavor of exception.
Wolfman2000 Tene: Working on the dedicated pastebin right now. Afraid to touch ng. 02:37
...that reminds me. How do we get the dalek bot to put my commits up here?
Tene dalek?
pointme: dalek? 02:38
pointme Sorry, I don't know anything about that project
Wolfman2000 ...where IS dalek?
Tene ah, there's no dalek in here.
Wolfman2000 presently in #november-wiki only right now
wonder why
Tene colomon: can you verify that next/last/redo work for your purposes? 02:39
colomon Tene: let me see... 02:40
02:42 colomon_ joined, colomon left, colomon_ is now known as colomon
Wolfman2000 colomon: your connection alright? 02:42
colomon my laptop keeps losing its wifi connection to my router. 02:43
been doing it for about a week now, driving me nuts.
02:43 colomon_ joined, colomon left, colomon_ is now known as colomon
colomon Tene++: looks like they all work at a quick test. 02:45
Tene I bet we win back some spec tests with that.
colomon Tene: I don't doubt it. Just don't know which ones. :) 02:46
02:46 nihiliad left 02:52 jaldhar joined 02:55 nihiliad joined
Tene colomon: looking at 'loop' now. 02:59
colomon cool
Tene also making tea, so kind aafk
03:01 nbrown left
colomon Ooooo.... 03:05
phenny: tell moritz_ Remember how you were saying that .match was broken in split? It's not the match method that doesn't work, it's the call to it that's broken. I just implemented split on Str and the same problem comes up with .index. And I just tested both match and index by hand and they do work. 03:08
phenny colomon: I'll pass that on when moritz_ is around.
Wolfman2000 colomon: must love discovering what's wrong with ng while you try to make it right.
I have to wonder...how do you feel when you uncover these issues?
colomon It's all part of the debugging process. 03:09
I feel a lot better finding bugs like this in ng than I do getting random Bus errors in master just because my code runs long enough to break rakudo and/or parrot. 03:10
phenny: tell moritz_ Switching $.index to self.index makes it work. 03:12
phenny colomon: I'll pass that on when moritz_ is around.
colomon Updated splits pushed. Neither version works yet, as far as I can tell. 03:20
ng: my $l = Inf; $l--; say $l 03:21
p6eval ng 4aa094: Inf␤
Wolfman2000 ...that's one of the things in math that still bothers me. 03:23
You can always add one or subtract one from Infinity and still get Infinity.
It's as if there is no limit.
ng: say Inf - Inf; 03:24
p6eval ng 4aa094: NaN␤
Wolfman2000 and subtracting two Infinities is impossible.
It's as if you want the world to blow up.
03:24 justatheory left
Wolfman2000 ng: say 5 / 0; 03:24
p6eval ng 4aa094: Could not find non-existent sub &fail␤current instr.: 'perl6;IO;print' pc 231554 (src/gen/core.pir:22590)␤
Wolfman2000 ...did I see this right? ng failed at failing?
Does this mean it succeeded? 03:25
colomon Nope, it just did a super-fail.
It not only failed, it couldn't figure out how to fail with grace.
Tene: You there? 03:26
Tene colomon: Yeah, just back from errands. Just about to do loop().
colomon I may have a gather / take bug.
Tene orly? pls share. 03:27
colomon one sec 03:28
ummm... okay, that's extra freaky.
lisppaste3 colomon pasted "split fails weirdly, part 1" at paste.lisp.org/display/91226 03:29
colomon In that case, it looks like gather / take doesn't actually return anything? 03:30
but....
Tene colomon: Um... you're not saving the gather into anything.
you just have 'gather' on its own. not like: my @a = gather { ... };
colomon It should be the return value of the method, no?
Tene not when you have a 'say' after it. 03:31
colomon oh, right!
unfortunately, that wasn't my real bug.
If I take away that last say statement, "This is a test".split(/is/).perl.say never returns. 03:32
Tene colomon: .perl on lists is what hangs.
colomon orly?
Tene Yes.
ng: my @a = 1, 2, 3, 4; say @a.perl; 03:33
colomon you are correct!
Tene++
p6eval ng 4aa094: ( no output )
colomon Well, yay! gather / take works.
Unfortunately, split is very broken.
hopefully moritz_ can take a stab at sorting out the bugs when he wakes up. I need to get to bed now. 03:34
Tene goodnight, colomon. Thanks for prompting me to work on ng tonight. 03:35
colomon Thank you for working on it! It may seem small, but I feel like we (primarily you) made important progress tonight.
Tene pmichaud: have any plans for what to work on tonight yet? 03:37
pmichaud Tene: I'm still recovering from the trip, alas. 03:38
(and I'm still getting interruptions) 03:39
Tene :) 03:40
pmichaud I think I'm going to try to get a fresh start tomorrow
Tene I'm just now working on adding 'loop', but the version copied from STD.pm doesn't happen to Just Work. Now I have to think about it. :P
pmichaud I'm not sure why STD.pm wants the $<eee> = part 03:42
seems like we could do without it.
Tene Yeah, I'm trying a simplified version now.
04:01 naressi joined
Tene Okay, pushed 'loop', and t/spec/S04-statements/loop.rakudo passes. 04:05
Wolfman2000 Tene++ ✓
...I so want someone to make a multi sub term:(✓) to have this mean Bool::True, or better yet: have Bool::True return ✓. 04:06
04:11 jaldhar left, jaldhar joined 04:17 gbacon joined 04:18 Coke left 04:19 justatheory joined, s1n joined, colomon left, justatheory left, colomon joined
Tene colomon: I just fixed Str.split(Str) 04:27
pmichaud: any specific ng tasks you'd like me to work on? 04:28
04:33 envi^home joined 04:38 justatheory joined
pmichaud Tene: not at the moment 04:40
Tene Okay, great.
04:45 justatheory left, zloyrusskiy joined 04:46 zloyrusskiy left
pmichaud time for sleep here 04:46
bbt
Tene Goodnight.
04:51 patspam joined 04:52 patspam left
diakopter all your base the cake is a lie 04:53
05:02 JimmyZ joined
JimmyZ ng: gather 05:21
p6eval ng 637392: Could not find non-existent sub &gather␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
Tene JimmyZ: you keep trying that... what are you hoping just 'gather' on its own will do? 05:22
JimmyZ Tene: I thought you'was sleeping ;) 05:23
Tene JimmyZ: No, pm is.
JimmyZ I just find why it is different from master.
Tene rakudo: gather
p6eval rakudo 7347ec: too few positional arguments: 0 passed, 1 (or more) expected␤in Main (file <unknown>, line <unknown>)␤
JimmyZ s/just/just want
or Is gather is a function or syntax ? 05:24
Tene syntax
Here, let me add something real quick... 05:25
rakudo is failing to parse it as syntax because there's no block after it, so it falls back to calling it as a function.
Wolfman2000 ...I can just see the future now. Skype and Google Wave.
Wolfman2000 just got done with an hour long video chat with one of his best friends.
JimmyZ ng also call it as a function? 05:26
Tene JimmyZ: There is no 'gather' function defined in the core setting, according to the spec. 05:27
05:27 SmokeMachine left
JimmyZ Wolfman2000: what's the future? 05:27
Tene rakudo happens to have one because that's what I named the function used to implement 'gather', and it happened to end up in the right namespace to be called like that.
JimmyZ wave is really useful.
Tene rakudo master
Wolfman2000 JimmyZ: Google Wave for code collaboration, Skype Chat for voice
Tene I named it differently in ng, to avoid conflicting with any user-defined 'gather' functions.
rakudo: for
p6eval rakudo 7347ec: Could not find non-existent sub for␤in Main (file src/gen_setting.pm, line 324)␤ 05:28
Tene rakudo: try
05:28 SmokeMachine joined
p6eval rakudo 7347ec: Could not find non-existent sub try␤in Main (file src/gen_setting.pm, line 324)␤ 05:28
JimmyZ ng: for
p6eval ng 637392: Could not find non-existent sub &for␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
Tene see? no different.
JimmyZ Tene: yes 05:29
Tene does that answer your question? 05:30
JimmyZ Tene: yes. Tene, I think that's why Perl 6 is different from other languages. 05:31
Tene Howso?
JimmyZ some language can't use keywords as function.
I treated gather as a function. :) 05:33
builtin function
Tene It isn't. It's in the same catagory as 'try'. 05:34
JimmyZ Thank Tene++ for clarification. 05:37
diakopter rakudo: say try eval 05:47
Tene No problem. :)
p6eval rakudo 7347ec: Null PMC access in type()␤in Main (file <unknown>, line <unknown>)␤
diakopter ng: say try eval
p6eval ng 637392: Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
05:48 JimmyZ left
diakopter ng: my &my; say my("hihi") 05:50
p6eval ng 637392: Can not do non-typename cases of type_constraint yet at line 1, near ")"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
diakopter ng: my &my; say (my(Int)).WHAT 05:51
p6eval ng 637392: List()␤
diakopter ng: say say(Int).WHAT 05:53
p6eval ng 637392: Int()␤Bool()␤
diakopter (last seem ok to me)
05:54 colomon left, colomon joined
diakopter std: package my; my my my 06:07
p6eval std 29209: ===SORRY!===␤Multiple prefix constraints not yet supported at /tmp/kt5Nxe5Ag0 line 1 (EOF):␤------> package my; my my my⏏<EOL>␤ expecting any of:␤ typename␤ whitespace␤FAILED 00:01 103m␤
diakopter ng: my Int &foo = 5; say &foo.WHAT; 06:10
p6eval ng 637392: Int()␤
diakopter urgh
masakbot: I summon thee
ng: my Sub &foo = 5; say &foo.WHAT;
p6eval ng 637392: Int()␤ 06:11
diakopter wheh
ng: my Int %foo = 5; say %foo.WHAT; 06:12
p6eval ng 637392: Int()␤
06:19 quantumEd left 06:22 zloyrusskiy joined
Tene ng: loop(my $i = 1; $i <= 10; $i++) { next if $i % 2 == 0; last if $i > 7; say $i; } 06:24
p6eval ng 637392: 1␤3␤5␤7␤
06:26 rhr joined
TimToady std: loop(my $i = 1; $i <= 10; $i++) { next if $i % 2 == 0; last if $i > 7; say $i; } 06:27
p6eval std 29209: ===SORRY!===␤loop() interpreted as function call at line 1; please use whitespace around parens␤Unexpected block in infix position (two terms in a row) at /tmp/W8hzhCnfES line 1:␤------> loop(my $i = 1; $i <= 10; $i++) ⏏{ next if $i % 2 == 0; last if $i >
..…
Tene Ack.
The version in STD.pm didn't work in ng, so I simplified it until it did.
TimToady ng: loop (my $i = 1; $i <= 10; $i++) { next if $i % 2 == 0; last if $i > 7; say $i; } 06:29
p6eval ng 637392: 1␤3␤5␤7␤
TimToady at least put the space after "loop"
Tene TimToady: where are protoregexes defined? I didn't see much in S05.
TimToady S05:1071 06:30
and STD
06:38 colomon_ joined, colomon left, colomon_ is now known as colomon
Wolfman2000 ...it's official. git++ is useful for going back to old commits and restoring what once worked. 06:47
07:00 cahek joined 07:02 colomon_ joined, colomon left, colomon_ is now known as colomon 07:09 nihiliad left 07:19 zloyrusskiy left 07:23 mberends joined 07:24 Exodist joined 07:25 Exodist left, Exodist joined 07:29 cahek left
diakopter std: my &loop; loop(my $i = 1; $i <= 10; $i++){ next if $i % 2 == 0; last if $i > 7; say $i; } 07:39
p6eval std 29209: ok 00:02 128m␤
diakopter std: loop(my $i = 1; $i <= 10; $i++){ next if $i % 2 == 0; last if $i > 7; say $i; } 07:40
p6eval std 29209: Undeclared routine:␤ 'loop' used at line 1␤ok 00:01 106m␤
07:41 JimmyZ joined
mberends diakopter: 'loop (' with a space 07:41
JimmyZ ng: print (my $i = 1; $i <= 10; $i++){ next if $i % 2 == 0; last if $i > 7; say $i; } 07:43
p6eval ng 637392: Confused at line 1, near "print (my "␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
JimmyZ std: print (my $i = 1; $i <= 10; $i++){ next if $i % 2 == 0; last if $i > 7; say $i; }
p6eval std 29209: ok 00:01 106m␤
JimmyZ perl6: print (my $i = 1; $i <= 10; $i++){ next if $i % 2 == 0; last if $i > 7; say $i; }
p6eval elf 29209: Global symbol "$i" requires explicit package name at (eval 126) line 3.␤Global symbol "$i" requires explicit package name at (eval 126) line 3.␤syntax error at (eval 126) line 3, near "(if"␤Global symbol "$i" requires explicit package name at (eval 126) line 3.␤ at ./elf_h line 5881␤
..rakudo 7347ec: Confused at line 2, near "{ next if "␤in Main (file <unknown>, line <unknown>)␤
..pugs: *** ␤ Unexpected ";"␤ expecting "_", fraction, exponent, term postfix, operator or ")"␤ at /tmp/5g1kkyOdrf line 1, column 17␤
diakopter mberends: yes, I know. see the recent backlog. 07:46
mberends diakopter: will do. is parsing loop() as a function intended? 07:47
Wolfman2000 can't sleep... 07:49
mberends diakopter: STD does a more correct parse loop() than ng 07:51
07:55 kaare joined, kaare is now known as Guest39542
Wolfman2000 ...I was wondering about this bit of information... 07:55
diakopter: you're probably awake still. What's the rule on bots in this room?
Tene Wolfman2000: I'm not aware of any specific policies... mostly just don't be obnoxious, and if anybody complains, you'll be asked to change the behavior of your bot. 07:57
Wolfman2000 Tene: Since I couldnt' sleep, I've been looking at what I could do with Github. I recently found out how to allow others write access to my repo (you're one of them), but I also noticed a hooks section...that includes IRC. 07:58
Apparently, Github can make robots report progress on commits in the room. I am unsure how wise it is to use this service. 07:59
08:08 JimmyZ left
Wolfman2000 ...and now I think I'm going to try to get some sleep again. Hopefully, I'll stay asleep for at least 6 hours. 08:08
diakopter mberends: I meant, I removed the space between 'loop' and '(' and also between ')' and '{' 08:14
that killed the "bad loop()" error msg 08:15
cool: qa.perl.org/ 08:47
08:52 agentzh joined 09:00 agentzh left
mberends cool indeed. So many good things in Perl 5 that we should try to assimilate :) 09:12
09:20 meppl joined 09:23 beggars joined 09:28 iblechbot joined
colomon Tene: you almost drove me mad trying to figure out what you changed in split before I looked at the commit diff.... 09:29
Tene rakudo: use Getopt::Obj:from<parrot>; my $x = Getopt::Obj.new(); 09:50
p6eval rakudo 7347ec: Null PMC access in get_pmc_keyed()␤in Main (file <unknown>, line <unknown>)␤
09:52 snarkyboojum left 10:18 jan__ left 10:29 brody joined 10:47 dakkar joined
colomon ng: say <ahh j l? 11:09
p6eval ng 12c2f5: Confused at line 1, near "say <ahh j"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
colomon ng: say <ahh j l>
p6eval ng 12c2f5: ahhjl␤
11:16 snarkyboojum joined 11:29 snarkyboojum left
lisppaste3 colomon pasted "bizarre split test failure" at paste.lisp.org/display/91232 11:36
colomon I'm hoping someone can see something I'm missing here...
11:39 agentzh joined 11:49 snarkyboojum joined 11:52 iblechbot left
colomon ng: say ("a b", "c") eq <a b c> 11:53
p6eval ng 12c2f5: 0␤
colomon ng: say ~("a b", "c") eq ~<a b c> 11:54
p6eval ng 12c2f5: 0␤
colomon ng: say ~("a b", "c")
p6eval ng 12c2f5: 2␤
colomon rakudo: say ("a b", "c") eq <a b c> 11:55
p6eval rakudo 7347ec: 1␤
colomon ng: say ("a b", "c").Str 11:56
p6eval ng 12c2f5: a b c␤
12:01 pmurias joined 12:07 snarkyboojum left 12:09 cognominal left
colomon ng: 'theXXbigXXbang'.split('XX', *).Str 12:21
p6eval ng 12c2f5: ( no output )
colomon ng: say 'theXXbigXXbang'.split('XX', *).Str 12:22
p6eval ng 12c2f5: the big bang␤
colomon ng: say 'theXXbigXXbang'.split('XX', *).Str eq 'the big bang' 12:23
p6eval ng 12c2f5: 1␤
colomon huh 12:24
is 'theXXbigXXbang'.split('XX', *).Str, 'the big bang', 'Str.split(Str) (with * limit)';
consistently dies.
with no message.
ng: testing frustration this morning 12:25
p6eval ng 12c2f5: Could not find non-existent sub &morning␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon :)
12:26 pmurias left
pugs_svn r29210 | colomon++ | [t/spec] Clone from split-simple.t and try to make the tests simple enough that ng can actually pass them. 12:28
colomon phenny: tell moritz_ Why are we testing 123.split(2) ? That's totally not in the spec... 12:30
phenny colomon: I'll pass that on when moritz_ is around.
12:43 zloyrusskiy joined
colomon ng: say 'theXbigXbang'.split(/X/, -1).perl 12:45
p6eval ng 12c2f5: sh: ./perl6: No such file or directory␤
colomon ng: say 'theXbigXbang'.split(/X/, -1).per 12:49
p6eval ng 12c2f5: Method 'per' not found for invocant of class 'Array'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon ng: say 'theXbigXbang'.split(/X/, -1).perl 12:50
p6eval ng 12c2f5: ( no output )
colomon ng: my @a = gather { take 5; }; say @a.perl 12:52
p6eval ng 12c2f5: ( no output )
colomon ng: my @a = gather { take 5; }; say @a.Str 12:53
p6eval ng 12c2f5: 5␤
colomon is going to have to write Array.perl just so he stops falling into that trap...
ng: say 'theXbigXbang'.split(/X/, -1).Str 12:54
p6eval ng 12c2f5: theXbigXbang␤
12:55 schmalbe joined
colomon ng: for 'abcb'.split(/b/) { .say } 12:59
p6eval ng 12c2f5: a␤c␤␤
colomon ng: say Nil.elems 13:05
p6eval ng 12c2f5: 0␤
13:10 SirKay joined
SirKay Morning all. 13:10
colomon \o
SirKay how is Rakudo doing?
pugs_svn r29211 | colomon++ | [t/spec] Skip two tests which quite inexplicably fail. Start adding limit tests back in. 13:12
colomon Rakudo is branched at the moment, with a better-designed but only partially rebuilt branch ("ng") receiving 99% of the development time. 13:13
Rakudo's master branch works just about the same as it did four or five weeks ago, plus a couple of minor patches.
SirKay Okay. So if I am a new programmer wishing to aid in the development of Rakudo, which should I put most of my effort into? 13:14
colomon Oh, ng for sure.
SirKay though the details may go over my head, I must confess I am curious as to why it is branched. 13:15
colomon But if you're just trying to get your feet wet, probably the best bet is finding tests to add to the test suite.
SirKay getting my feet wet is about all I can do at this point.
my programming knowledge is limited to trivia and a very small amount of perl 5. 13:16
colomon Basically, the core developers felt that there were some significant limitations in the old implementation that a fresh start could do away with. 13:17
It's branched so that the old implementation is still out there for people trying to use perl 6; the new ng branch still has huge holes in it.
SirKay hmm.
well the computer I would be using it on is technically not even mine. 13:18
so perhaps using a program with "huge holes" in it might be dangerous?
jnthn o/
colomon I think we're expecting that ng will become the "master" branch sometime in December.
jnthn colomon: Yes, that's my expectation too.
colomon SirKay: If you just want to dabble with Perl 6 programming, then using the old master branch is the way to go. 13:19
jnthn: I've got split working (moritz_++ for getting it started, and Tene++ for help) but testing it is proving to be a complete bear.
jnthn SirKay: The ng branch basically is putting a bunch of things in place at the same time. In a sense, it's one big refactor of a bunch of stuff (not everything...just a lot of things) rather than doing several of them.
SirKay: The big ticket items being stuff related to parsing, laziness and metamodel bits. 13:20
SirKay Okay, so if I go for the old implementation will I still be having the same syntax and stuff? 13:21
jnthn SirKay: Either way, the worst that you'll encounter on either branch is that the compiler gives errors and/or the odd segfault. Neither will be damaging. Even the default make install target will build things completely contained under one directory.
SirKay: Yes.
SirKay Alright.
It will be a windows computer, too. 13:22
jnthn SirKay: That's fine, I hack on Rakudo on Windows.
If you're compiling it yourself, I recommend MS VC++ compiler (there's a free version available).
SirKay so far my ultimate aim is to learn enough Perl 6 to help contribute to its development, and also to make my own language. 13:23
jnthn Sounds good. :-) 13:24
13:24 masak joined
jnthn lolitsmasak 13:24
mberends lolitsmasak!
SirKay hmm.
masak lolitsjnthnandmberends!
phenny masak: 00:47Z <Wolfman2000> tell masak I finally understand Catalyst ResultSet abstractions. Take a look at my github, and see if you can incorporate some of the split stuff I just did. ;)
SirKay So Rakudo isn't quite a stand alone executable yet?
mberends SirKay: never will be, it's a Parrot guest application 13:25
SirKay I see.
I just figured that parrot was able to make stand alone executables. 13:26
jnthn SirKay: We build an executable, but it uses libparrot.dll and a couple of other DLLs too (or s/dll/so/ off Windows, I guess.)
Well, I guess you *could* statically link everything into one huge binary, but I'm not sure it would be much of a win...
masak SirKay: it's hard to be standalone with something like 'eval'.
ooh, TimToady rethunk enums! 13:28
colomon On the "testing split will drive me insane" front: changing tests 21 and 22 to use a Str instead of a Regex makes test 4 crash silently.
masak: TimToady blames you. ;)
masak colomon: I see that. :)
SirKay Is there any reason for a new programmer to learn Perl 5?
jnthn masak: Given how long I've whined about the enum spec, I massively thank you. :-) 13:29
masak jnthn: :)
colomon SirKay: depends on what you are trying to do. there are several areas (like string processing on large files) where Perl 5 will be drastically faster than Perl 6 for at least a few more years. 13:30
mberends SirKay: lots :-) Perl 5 is practical, massively supported
SirKay What I am trying to do is become good at programming in general.
I do want to help with Perl 6, especially if it promises to make parsing/lexing that much easier, but I am noticing a lot of "maybes" and "sort ofs" about its current status, if that makes any sense. I guess another way to put it would be, would I be building my house on rock or sand, if I started with and focused mainly on Perl 6? 13:31
masak (Day.mapping.invert)++
TimToady: does the PairValSet generated by .mapping guarantee order? 13:33
TimToady: by the spec examples, it looks that way, but a Set generally doesn't guarantee order, IIUC. 13:34
TimToady: also, what do we gain from speaking about PairValSet rather than Set[PairVal] ?
SirKay Obviously, if a person chases two rabbits, he loses them both. So I fear that trying to do both things at once would be detrimental. 13:36
13:36 darkfather joined
mberends SirKay: even that depends on exactly what you build. the methodology of test driven development help answer the question, and offers the best guarantees of your own code being reliable. 13:37
masak SirKay: excellent question! I think you should start simple and ease into Perl 6, to find out if it's what you want.
13:37 explorer__ joined
SirKay hmm. 13:38
masak SirKay: learning Perl 6 and becoming an active member in its community has definitely helped me understand programming better, though.
SirKay How much programming experience did you start with before?
masak SirKay: as you may or may not know, I'm currently deeply involved in learning about the parsing stuff, and I have good hopes of soon being able to inspect and manipulate Perl 6 ASTs. 13:39
13:39 explorer__ left
masak SirKay: I had programmed BASIC and Pascal and some assembly since about 12. nothing serious. I learned Java at university. 13:39
13:39 explorer__ joined
SirKay you learned it enough to be able to be basically competent? 13:40
masak at the point where Perl 6 and I met, I had just become deeply interested in OO design/methodology and patterns.
SirKay: for a while, Java was my strongest language. I knew Perl well enough at that point to miss some aspects of it in Java.
SirKay Then you are already accomplished, excellent. 13:41
However, I am not accomplished. This is the closest I have come to anything semi-serious I've done with programming, and even that was just a few easily written subs: perlmonks.org/?viewmode=public;node_id=584356
the program itself is not my own, I simply saw it and thought to add a few features. 13:42
masak SirKay: in my view, your question should not be "what do I have to start with?" but "what interests me?". it's about optimizing for fun, and becoming accomplished in the process. 13:43
SirKay may I speak to you in private?
masak go right ahead.
pugs_svn r29212 | colomon++ | [t/spec] Str version of four Regex tests, half of which fail hard. 13:46
13:54 darkfather left 13:56 jferrero left 14:09 agentzh left, JimmyZ joined
carlin rakudo: say "{}#{}"; 14:19
p6eval rakudo 7347ec: Embedded comments now require backticks at line 2, near "{}\";"␤in Main (file <unknown>, line <unknown>)␤ 14:20
Wolfman2000 *yawn* morning...again 14:28
masak: If it helps, I think I figured out how to add you as a collaborator to the pastebin I'm working on. Unfortunately, I have no way of testing that for you.
masak Wolfman2000: I'll have a look. 14:29
Wolfman2000: yes, it worked. 14:32
Wolfman2000 masak: I wonder what you committed...git pull claims I'm already up to date 14:33
masak Wolfman2000: oh, nothing. just checked the github page; it says I have a clone URL, which means I can push to the repo. 14:34
Wolfman2000 ah 14:42
14:42 JimmyZ left 14:47 pmurias joined 14:48 schmalbe left 14:51 am0c joined 14:54 pmurias left 14:57 frew_ left 14:58 patspam joined
colomon rakudo: say "this is a test".index(""); 15:02
p6eval rakudo 7347ec: 0␤
15:04 am0c left
Wolfman2000 rakudo: say "this is a test".index("is"); 15:07
p6eval rakudo 7347ec: 2␤
masak rakudo: "This is a test" ~~ /is/; say $/.from; $/.next; say $/.from 15:10
p6eval rakudo 7347ec: 2␤5␤
jnthn masak: Is that spec? 15:11
masak jnthn: no.
jnthn masak: Was gonna say...I thought match objects were immutable. :-) 15:12
masak I think nqp-rx does all this very differently anyway.
jnthn aye, same
masak match objects are definitely not immutable in Rakudo master. :P
jnthn ;-)
Yeah but nor a constants.
Wolfman2000 Let me guess. They aren't bugs: they are features! 15:13
jnthn ;-)
masak Wolfman2000: in the case of $/.next, yes.
very much so.
jnthn Wolfman2000: Aye, Perl 6 is *so* advanced that we let you change constnats!
masak and infinite loops run in just under 5 seconds.
15:14 nareaisd joined
masak (unfortunately, due to Parrot bottlenecks, so do 0-iteration loops.) 15:14
mberends lol
masak I'm slightly surprised that neither Perl 5 nor Perl 6 people chose to continue the discussion on perlmonks.org/?node_id=809868 15:18
colomon didn't know what I could say after your post.
masak ah. Warnock strikes again.
colomon and strive to keep my mouth shut if I don't have anything useful to say. :) 15:19
colomon admits he fails frequently at that one.
masak colomon: does zwon, in your opinion, merit a reply?
15:19 patspam left
colomon I dunno, his post seems pretty reasonable. 15:20
masak I find it comes off as slightly too negative towards Perl 6, but I don't think I want to be the one to point that out. and maybe it doesn't need to be pointed out.
jnthn It wasn't so bad.
masak it is indeed reasonable.
just not the way I would have phrased it. :)
jnthn "different lineages" is a lot to type, y'know. :-P
masak I think I'm fine with people saying 'Perl 6 is another language' nowadays. 15:21
jnthn (While it's a great way of expressing it, I'm not entirely convinced it's quite catch-phrasey.)
masak those people tend to be Perl 5 folks, and they have their reasons.
Wolfman2000 ...okay. How many here believe the claim that Git's branching mechanism is one of those killer features?
masak raises hand
mberends too 15:22
jnthn Well, if you want to take it to an extreme, Perl 5.8 and 5.10 are different languages too. ;-)
masak jnthn: ooh! almost material for a blog post.
Wolfman2000 jnthn: One of the few things I recall liking 5.10 over 5.8... the // and //= operators
15:22 zloyrusskiy left
Wolfman2000 what else did 5.10 offer? 15:22
colomon say 15:23
given / when
jnthn masak: Is that a hint? :-P
colomon basically it stole a lot of Perl 6 features.
masak jnthn: start reasonable by pointing out how Perl 5 and Perl 6 are different languages. then 5.8 and 5.10... then syntax-altering modules... then BEGIN blocks... :)
jnthn :-)
masak jnthn: I don't know who should write it. maybe moritz_ would pull it off best.
jnthn "Perl has never really been designed to remain 'one language' anyway." 15:24
Or something. :-)
colomon it occurred to me recently that people complaining about how Perl 6 was pulling development resources away from Perl 5 had it backwards... :)
jnthn Certainly though, I think the Perl community are very open to the whole idea of dialects of a language and language tweaks, compared to other languages.
colomon has made split('') work, and completely broken normal split on Str in the process. 15:25
Ah, how can I detect Undef in ng at the moment? 15:27
Wolfman2000 Mu?
colomon ng: say Mu.WHAT; 15:28
p6eval ng a7929a: Could not find non-existent sub &Mu␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon nope.
However, I should either have Int or Undef. So maybe if I check for Int... 15:29
15:29 pmurias joined
colomon bother, Undef ~~ Int doesn't work either. 15:30
pmurias masak: re perlmonks.org/?node_id=809868 why would anyone want to get involved in such a discussion? 15:31
jnthn Heh, we should rename Object to Mu in ng.
15:31 naressi left
jnthn will do it tomorrow (or maybe today) if he ain't beaten to it 15:31
Wolfman2000 I thought Object and Mu were supposed to be different
jnthn I'm note sure I like it still, but I decided to Mute my arguments.
masak pmurias: because someone outside of the Perl 6 community is asking about Perl 6, and requesting information and clarifications about the process.
jnthn *not 15:32
pmurias masak: a post detiling while all the old perl 6 implementations failed would be entertaining 15:33
* detailing why 15:34
masak pmurias: indeed.
15:34 quantumEd joined
masak a fair amount of research would be needed to make it accurate, though. 15:34
15:35 beggars left
masak also, a reasonably wide meaning of 'failed' would have to be adopted. I wouldn't describe Pugs, for example, though it's been at a standstill for two years, as having failed. 15:35
pmurias died would be a better word?
masak no. :) sleeping, or hibernating. 15:36
.oO( pining for the fjords )
jnthn But plz not undead.
I'm not so sure it'd be so much entertaining as informative for current/future impls. 15:38
jnthn goes to read for a bit 15:40
pugs_svn r29213 | colomon++ | [t/spec] Added tests for split on '', split(Str) with the Str at the first position of the string to split, brought on-line a lot of the old limit tests. Add done_testing as well. 15:41
colomon I think split mostly works now, but that test file is a bit of a nightmare. 15:49
masak colomon++ 15:50
why is it a nightmare?
colomon I kept on running into issues where adding a test at a later point in the file would break an unchanged test earlier in the file. 15:51
So it ended up with tests you can run by hand with no issues fudged out in the test file. 15:52
Also, I'm very sure someone is going to want to go through the actual split code and clean it up. I don't feel like it is a good example of quality perl 6 at the moment. Getting code that works at the moment can be a bit of a trick... 15:53
masak nod.
maybe we should spend up to a month or so before the April release, just combing through the CORE setting and making it shine. 15:54
colomon I'd be in favor of that. 15:55
possibly even do that at the beginning of the new year. Once ng has more features, programming in it will be very different...
masak indeed. 15:56
pmurias mildew-js: say 1
p6eval mildew-js: Can't open perl script "mildew": No such file or directory␤
masak by the way, pmichaud said a week or so ago that he expected ng->master to occur in a week or so. how are we doing on that front? 15:57
colomon There's been shockingly little progress, IMO. :)
15:57 Patterner left
colomon I'd say at least another week, maybe two. 15:58
s/maybe/more likely/ 15:59
16:01 Psyche^ joined, Psyche^ is now known as Patterner
masak oh well. it's three weeks till the December release. 16:06
colomon I'm just hoping we're getting ng for Christmas. ;) 16:12
Wolfman2000 colomon: what about Hannukah or Kwaanza?
masak I think the chances are still good for that.
Wolfman2000 Hannukah is Dec 12th or so this year. Good luck.
jnthn Yeah, I suspected the "in a week" was a tad optimistic, what with thanksgiving. 16:13
16:14 cognominal joined
jnthn is getting there with the roles/metamodel bits now though, at least... 16:14
masak in a week, modulo thanksgiving. :)
jnthn ;-)
Wolfman2000 ...okay, I need one of those git reminders. How do I push a branch to my github? 16:15
colomon I figured the theory was that a lot of work was going to be done over Thanksgiving weekend....
jnthn Part of it is that there's a couple of tricky unresolved issues (one being exactly what iterators look like, the other being That MMD Issue)
colomon jnthn: certainly I'll be very happy when both of those are there.
jnthn colomon: Me too. 16:16
16:16 patspam1 joined
colomon on the plus side, now that we have loops and gather/take, I think I may be able to fake iteration over ranges (by converting it to iteration over lists, which we do have, internally). 16:16
that should help with some tests.
masak \o/ 16:21
16:26 elmex joined
colomon well, bother 16:27
16:27 jan_ joined
jnthn colomon: whoz op? 16:29
colomon My beautiful clean little mapping from RangeIterator to a list doesn't do squat in context. 16:31
lisppaste3 colomon pasted "updated Range.Iterator" at paste.lisp.org/display/91239
jnthn Aww. :-( 16:32
jnthn wonders why not 16:33
lisppaste3 colomon annotated #91239 "In usage..." at paste.lisp.org/display/91239#1
colomon If that suggests anything to you, I'm all ears.
masak colomon: well, the 1..6.map variant shouldn't work. the error message is harsh, but correct. 16:38
hm, or not.
anyway, without parens, the map should map over the 6.
colomon Hmmm... so actually, with the parens it's dying in my Iterator function, maybe. 16:39
16:39 patspam1 left
colomon that's semi-promising... 16:39
jnthn oh noes bus error! 16:40
colomon oooo, typo.
said "take $i", should have been "take $value".
jnthn The bus error is still ungood... :-/
colomon bug errors and I are old friends here. :(
errr... that's weird. 16:41
now it loops a whole lot, then bus errors 16:42
ng: say Nil eq Nil 16:43
p6eval ng 792106: 1␤
colomon utterly mystified. afk 16:51
pmichaud good morning, #perl6 16:57
Wolfman2000 morning pmichaud
Wolfman2000 is starting to understand the power of branches.
jnthn hi pmichaud 16:59
masak morning, pmichaud 17:00
Wolfman2000 masak: Is there a way to push to github that I deleted a branch? 17:01
masak Wolfman2000: git push origin :branchname
Wolfman2000 ...I just got the octocat of doom 17:02
or whatever the github mascot is supposed to look like
pmichaud github.com/guides/remove-a-remote-branch
Wolfman2000 masak++, pmichaud++: thanks for the assistance. 17:03
17:10 pmurias left
masak given a nonzero Complex, what's the recommended way (in Perl 6) to get the counterclockwise angle between the x axis and the vector from 0 to that complex number? 17:18
atan2?
Wolfman2000 doesn't recall
masak yep, atan2(.im, .re) seems to do it. and then multiplication by 180/pi turns it into degrees. 17:21
Wolfman2000 I wonder if pi is defined in Perl...
masak which Perl? Perl 5?
diakopter pmichaud: g'morn 17:22
Wolfman2000 masak: ...either or 17:29
17:29 ejs joined 17:35 ejs left
colomon rakduo: say pi 17:38
masak Wolfman2000: it is defined in Perl 6. see S32.
colomon rakudo: say pi
masak S32-Numeric, to be exact.
p6eval rakudo 7347ec: 3.14159265358979␤
Wolfman2000 ...okay, I have to try this.
rakudo: say pi.Rat 17:39
p6eval rakudo 7347ec: 3.14159292035398␤
Wolfman2000 ...that didn't work how I thought it would.
colomon rakudo: say pi.Rat.perl
p6eval rakudo 7347ec: 355/113␤
TimToady STD currently has it as 3.14159_26535_89793_238 since that fits in a Rat64 17:40
CORE.setting, rather 17:41
17:41 pmurias joined
jnthn Perl 6. Where even Pi isn't irrational. 17:41
jnthn lols at the irony of storing an irrational in a Rat 17:42
colomon it's no odder than storing it in a float... 17:43
17:43 ejs joined, elmex left
jnthn colomon: Well, yes...the naming isn't quite so amusing there though :-) 17:43
17:44 ejs left
colomon still wonders if implementing lazy irrationals is possible.... 17:47
jnthn omgipatchedng
Damm, still don't parse S14-role/basic.t! 17:48
17:48 elmex joined
colomon "omgipatchedng" -- is that how we do it when the bots are down? ;) 17:49
17:49 nihiliad joined, cognominal left 17:50 envi^home left 17:51 iblechbot joined
jnthn colomon: Yeah, though it's a little lacking in specifics of what damage I did. :-) 17:52
er, enhacnements. I mean enhancements.
colomon but it tells us to go to github and get the details.
mdxi wouldn't a mechanism or lazy irrationals still, eventually, need a way to store near-infinite integers (representing teh fractional part)? like UTF-8 but for numbers? i'm sure someone has already done this, somewhere, at some time :) 17:53
colomon mdxi: I figured the representation would be a lazy list of digits... 17:54
mdxi forgive me; i'm not conversant on the existing internals. i'll go back to lurking moar :) 17:55
colomon mdxi: believe me, this is just a vague notion, not a carefully planned out implementation! I'm too lazy to do the hard work for something so fundamentally impractical. 17:56
TimToady the problem isn't how to implement it, but how to know how much precision is required.
jnthn ng: my $x = [42]; say $x.WHAR 17:58
p6eval ng 792106: Method 'WHAR' not found for invocant of class 'Array'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
jnthn gah
ng: my $x = [42]; say $x.WHAT
p6eval ng 792106: Array()␤
mdxi i'd figured something like coroutines such that every 'yield' would get you one more digit. but i've been reading about concurrent systems all week, so that's my current hammer (adn everything looks like a set of nails, which need to be hit one or more at a time) 17:59
i don't even know if that's possible, but it is fun to think about :) 18:01
jnthn wonders if he actually codes faster while listening to DragonForce...
mdxi i have long been partial to trollish/folk/adventure/viking metal as drown-it-all-out coding music. it works at least as well as electronica, plus it gives you Fighting Spirit :) 18:03
jnthn I could never quite take viking metal seriously... :-)
colomon wonders if he could get a grant to compare coding speed listening to Peter Horan & Gerry Harrington versus Dervish -- same sort of music, but the latter is like 50% faster. 18:04
mdxi i'm pretty sure i don't take it seriously either, but i do unironically enjoy it :)
(he says as an old, long-form Coke ad by Petula Clark plays in iTunes) 18:05
SirKay I wonder if people would be all gung ho about viking metal if they knew what vikings were really like. 18:06
mdxi i'm a really bad metalhead in general. i mean, i'm currently wearing a bright orange Tiger Cub scout troop leader tshirt. and i'm old. and i have short hair. 18:07
but i grew up with it, adn there's still awesome stuff out there :)
moritz_ re 18:08
phenny moritz_: 03:08Z <colomon> tell moritz_ Remember how you were saying that .match was broken in split? It's not the match method that doesn't work, it's the call to it that's broken. I just implemented split on Str and the same problem comes up with .index. And I just tested both match and index by hand and they do work.
moritz_: 03:12Z <colomon> tell moritz_ Switching $.index to self.index makes it work.
moritz_: 12:30Z <colomon> tell moritz_ Why are we testing 123.split(2) ? That's totally not in the spec...
masak lolitsmoritz! 18:09
colomon moritz_: split more or less actually works by now. :)
jnthn sorta has the hair for it, but that's probably about it. :-)
18:10 hercynium left
moritz_ colomon: what part works "less"? :-) 18:10
pmichaud boy, I'm going to have a lot of commits to review :-|
colomon ng: for "this is a test".split("this") { .say }
p6eval ng 792106: this is a test␤
SirKay oh hey pm.
colomon on the other hand: 18:11
ng: for "this is a test".split("is") { .say }
p6eval ng 792106: th␤ ␤ a test␤
jnthn pmichaud: Heh. At least I didn't do so many last two days. ;-)
colomon ng: for "this is a test".split(/is/) { .say }
p6eval ng 792106: th␤ ␤ a test␤
jnthn colomon++ and tene++ and moritz++ have been busily patching though. :)
pmichaud well, I think my goal for today is to nail down what I want for the laziness/iterator interface
colomon \o/ 18:12
SirKay I got the Dragon Book the other day.
jnthn pmichaud: That would be a good goal.
pmichaud: I get the impression we're hurting for that.
TimToady looks like something is considering index of 0 to be false
pmichaud jnthn: same here
colomon TimToady: there's no way I can find to tell the difference in ng yet.
18:12 SmokeMachine left
jnthn pmichaud: I think I'm most of the way through piecing back the object model fundementals. 18:12
pmichaud colomon: ...???
jnthn: +1
I suspect that's the other piece we'll be needing very soon 18:13
jnthn pmichaud: There's much more I want to do.
pmichaud: But post-ng.
jnthn just about resisting temptation to do Something Epic for now. 18:14
SirKay you should always go forth and do epic shit
18:15 cognominal joined
jnthn SirKay: Yeah, but I don't want to be single-handedly responsible for delaying an already long branch for antoher week plus to do it. 18:15
pmichaud afk, lunch
jnthn SirKay: And a week's an optimistic estimate.
:-)
SirKay frankly I wish I was in a place that I could do something even adequate, much less epic :p 18:16
colomon pmichaud: I'm not saying there's no way to do it in ng. Just that I spent a half-hour and couldn't find it.
SirKay the problem of course is that I'm too lazy.
colomon pmichaud: Tene++ changed index to return Undef on failure, as a "best possible current workaround". 18:17
But I coudn't find stable code to detect Undef.
ng: say "this is a test".index("z") ~~ Int
p6eval ng 69293d: No applicable candidates found to dispatch to for '&infix:<~~>'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon ng: say "this is a test".index("z").WHAT 18:18
p6eval ng 69293d: Method 'WHAT' not found for invocant of class 'Undef'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon etc.
jnthn huh.
colomon Technically it should be returning Mu, right? But that's NYI. 18:19
jnthn our multi infix:<~~>($topic, Regex $matcher) {
oh, well, that's wrong for one.
Well
our multi infix:<~~>($topic, $matcher) {
more so
Wants to be Object $topic
Well
Mu $topic
:-)
oh wait 18:20
not it doesn't
Or it won't auto-thread.
:-|
colomon: Something looks...odd...there anyway. 18:21
jnthn wonders if he can get away with the s/Object/Mu/ in ng without too much pain.
mberends jnthn: JFDI. WFM. ;) 18:22
masak is still kinda boo-hoo t'wards Mu 18:23
jnthn masak: It's actually quite mnemonic for us, since it rhymes with Eww. 18:24
colomon jnthn: :)
masak jnthn: I thought it rhymed with 'Do'.
colomon I thought it rhymed with "Moo". 18:25
jnthn masak: Huh? You pronounce "eww" wrong?
moritz_ coding is hard, let's go rhyming :-)
jnthn ;-)
moritz_ colomon: re 123.split(2), it's not (yet) explicitly in the spec, but should work[tm]
colomon moritz_: dear heavens, why? 18:26
I mean, I get 123.split("2")...
moritz_ is there any reason why you'd want the user to force to coerce the 2 to Str first? 18:27
colomon is there any reason why you'd want to split on an Int variable? 18:28
masak yes.
many reasons.
colomon Would it be just Ints, or should Any.split(Any) work?
masak the latter.
colomon I dunno, easy enough to add, but it seems like it encourages bad programming to me... 18:29
masak There once was a Perl 6 class 'Mu' 18:30
Whose presence TimToady brought through
As 'Object' once spec'd
The spec's done gone wreck'd
Which made me and jnthn go 'Eww!'
mberends aaahh 18:31
masak colomon: I disagree. it's quite Perlish to do operations on the 'primitive' types without coercion first.
moritz_ aye 18:32
that's a big difference to javascript, for example
colomon masak: but this would let you do operations on any type with .Str.
18:32 lmc left
colomon It makes your code dependent on implementation-specific features.... 18:32
masak colomon: yes, and I would begrudge having to cast explicitly like that.
moritz_ where a + b could mean either addition or concatenation, depending on the type of a 18:33
masak colomon: implementation-specific? how so?
colomon There's no formal spec for how, say, a Num converts to a Str.
jnthn masak: <bow>
masak :)
colomon It's safe for Ints (I presume) but not much else.
jnthn (done gone wreck'd)++ 18:34
Wolfman2000 masak: Are you saying Mu is gone now?
masak colomon: I don't buy that argument. if you split on a non-string, you probably know what you're doing.
Wolfman2000: no. again, wishful thinking.
Wolfman2000 good. I like 無
pmurias would it be possible to lexically throw out .split like methods from Any
?
masak pmurias: 'lexically throw out'? 18:35
pmurias remove them from Any in a lexical scope
masak good question. 18:36
perhaps your best shot is to override them in a lexical scope using 'augment class Any'. 18:37
colomon ng: for 1.4e-2.split('.') { .say }
p6eval ng 69293d: 0␤014␤
18:38 justatheory joined
colomon ng: for 1.4e-2.split(.4e-2) { .say } 18:38
p6eval ng 69293d: No applicable candidates found to dispatch to for 'split'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
18:40 explorer__ left
colomon All right, masak & moritz_, I'll change it to any, but y'all have to write the tests... 18:42
masak colomon: :) just so you know, this has been up for discussion before.
ISTR pmichaud recommended making the signatures quite broad. I could even dig up the email if you want. 18:43
colomon Can't make him write the tests, he's too busy.
jnthn It's the same argument for the most part as why $a + $b should always do a numeric addition. 18:44
Even if $a and $b are strings.
colomon The difference there is that only num-y things are going to have a .Num method. 18:45
Odds are pretty much every class with have a .Str....
jnthn Aww.
My s/Object/Mu/ patch fails some tets.
colomon Arrrg. Method 'Str' not found for invocant of class 'Perl6Str' 18:48
ng: say "fdfsfd" ~~ Str
p6eval ng 1bbf3e: 1␤
colomon ng: say 33123 ~~ Str
p6eval ng 1bbf3e: 0␤
jnthn augment Str { method Str { self } } # no? 18:49
colomon hey, who changed ng? 18:51
jnthn colomon: Like, today? 18:52
Thee and I, it seems...
colomon It's your fault.
jnthn Usually is. :-P
colomon Just take me an extra five minutes to send the patch.
jnthn What have I done this time?
OK but...epic patch coming soonish too 18:53
colomon Give me five minutes?
jnthn sure
colomon You just checked things in so I couldn't push. No prob.
jnthn ah, ok
gah
I get some test fails still, so can't push yet anyways.
colomon jnthn: Is that the Mu patch?
jnthn colomon: yeah 18:54
colomon omgipatchedng 18:55
ng now has Any.split(Any). Hackers of the future, please forgive me.
Wolfman2000 colomon: ...why are you asking for forgiveness? 18:56
Wolfman2000 is too wrapped up on his pastebin project to fully follow the ngness 18:57
jnthn OH NO
jnthn thinks he knows what is wrong... :-/
18:59 jferrero joined
colomon Wolfman2000: because I'm inclined to think accepting Any for split's argument is more likely to let sloppy bugs sneak through than it is to enable cool hacks. But everyone else seems to think that's wrong, so I've implemented it their way. 19:00
moritz_ thinks it should be s/Any/Base/, but that's not spec (yet?)
colomon moritz_: I just got rid of the type altogether, so no worries there. 19:01
jnthn
.oO( Meme Driven Development )
OK, I have a compelte patch to swith us to Mu.
*complete
masak does not feel very solid approval towards the name 'Base', but likes the idea
jnthn Bad news is that it requires a Parrot version bump. 19:02
Tene pmichaud: keep me up to date on iterators/lazy interface.
moritz_ masak: think as "Base" being a metasyntactic variable (like Foo) holding a better name of that role :-)
masak moritz_: :)
Tene jnthn: you're also changing the parrot pmc's name?
colomon jnthn: Parrot bumps that work aren't a big issue, IMO. :)
jnthn Tene: nah
Tene: Just adding something to P6Object.pir.
Tene orly? 19:03
jnthn Tene: 1 line addition, should be backward compat.
Tene kk
jnthn Unless some poor soul using P6Object had a class called Mu, anyway. :)
Wolfman2000 jnthn: I somehow doubt it 19:04
jnthn Well, if they did, tough.
Tene Well, pmc always intended P6Object to be subclassable... 19:05
s/pmc/pm/
><
jnthn lol
Tene: It is and we do. ;-)
Will test that nothing we pull in with latest Parrot breaks things, and then push the Mu change. 19:06
In other exciting news, it's time to cook dinner.
colomon was just looking for recipes for chicken thighs and pesto
colomon might go with Panko-Pesto Chicken Thighs 19:07
masak shouldn't that be P6Mu nowadays? :/
jnthn masak: It's all gots.
19:07 rgrau_ joined
jnthn masak: And *that* would require a deprecation cycle and I ain't playing with that policy. 19:08
masak :)
jnthn even noted dep policy in his commit message :-)
Aww. Only 2 days left in Slovakia this year. 19:09
lol. Heavy rain in England. 19:10
jnthn notes that he'll be mostly afk Wednesday due to $journey
ooh...actually...I'm on the Train With Wifi. 19:11
\o/
oh f**k
colomon and power outlets? That's like a dream come true for me....
jnthn The Parrot bump has broken the Rakudo build.
colomon: yes, those too :-) 19:12
colomon: The only slgiht issue is that the train tends to be running late. :-/
moritz_ Method 'peek_ast' not found for invocant of class 'Regex;Match' 19:13
jnthn moritz_: That's exactly what I get. 19:14
summon pmichaud!
:-)
jnthn glances terrified at EXPR 19:15
Tene yay death!
Can I play too? /me updates.
wait, which rakudo? ng?
jnthn Oh great, now we've got arson too. ;-)
Tene: yes, ng.
oh, looks like an easy fix. 19:16
19:16 jferrero left
jnthn s/peek_ast/ast/ is what was done in EXPR for NQP. 19:17
Yes, that helps.
19:19 jferrero joined
jnthn Eww, we has Mu. 19:30
Tene jnthn: don't like Mu?
19:31 ng_feed joined, moritz_ sets mode: +v ng_feed
masak Tene: NO WE DON'T LIKE MU. 19:31
Tene Aw, I was kinda hoping for an answer of "Mu"
masak Tene: no, the answer is a clear 'no'.
diakopter masak: heyguesswhat 19:32
masak: want to talk regex funness?
masak diakopter: sure!
diakopter I've been tinkering with ways to do LTM with Perl 6 grammars 19:33
Wolfman2000 I like Mu
diakopter and I had this idea
masak listens attentively
19:35 colomon left, colomon joined
moritz_ ng: say Nil.defined 19:36
p6eval ng 719b51: 1␤
diakopter if a "want this token" expression can be expressed as a regular expression, then I can compile a new JS RegExp, and iteratively test a reversed version of it (the pattern) against a reversed/flipped string (of the input string), while changing the .lastIndex property of the JS RegExp
so that only 1 JS RegExp can be used to get its longest match 19:37
19:38 explorer__ joined
moritz_ and fail epically when matching against lazy streams :-) 19:39
masak rakudo: class A { method postcircumfix:<{ }>($k) { 1 } } class B { method m() { my &r = { my $a; } while False { if False { my $a; } } } }
p6eval rakudo 7347ec: Confused at line 2, near "class B { "␤in Main (file <unknown>, line <unknown>)␤
masak oh, right.
rakudo: class A { method postcircumfix:<{ }>($k) { 1 } }; class B { method m() { my &r = { my $a; } while False { if False { my $a; } } } } 19:40
p6eval rakudo 7347ec: Redeclaration of variable $a␤Confused at line 2, near "{ if False"␤in Main (file <unknown>, line <unknown>)␤
masak submits rakudobug
moritz_ diakopter: so you want to start at the end of string, try if it matches, and if try from somewhere else?
19:40 explorer__ left
jnthn masak: wow, nicely golfed 19:40
diakopter moritz_: well, no... just take a few chars, and if matches them all, take a few more and try again
moritz_ and do a binary search between the end of string and the current position, or something?
hm
masak jnthn: it's a really wonky bug.
19:41 explorer joined
diakopter I thought about a binary search, yeah 19:41
masak rakudo: class A { method postcircumfix:<{ }>($k) { 1 } }; class B { method m() { my &r = { my $a; }; while 0 { if 0 { my $a; } } } }
diakopter but maybe just start at "10 more chars" or something, and exponentially grow... at e/2 or something
p6eval rakudo 7347ec: Redeclaration of variable $a␤
moritz_ diakopter: do you want to do this for each branch of an alternation, or for the whole regex? 19:42
diakopter a whole pattern if the entire pattern is regular
(just to get the fated ltm length)
moritz_ and then how do you determine which branch matched? try again?
masak rakudo: class A { method postcircumfix:<{ }>($k) { 1 } }; class B { method m() { my &r = { my $a; }; if 0 { if 0 { my $a; } } } } 19:43
diakopter descend recursively, yeah
p6eval rakudo 7347ec: Redeclaration of variable $a␤
diakopter well, actually that's not strictly necessary
if each sub-match is in a defined group
then I just find the slot in the results array that's non-empty 19:44
masak rakudo: class A { method postcircumfix:<{ }>($k) { 1 } }; my &r = { my $a; }; if 0 { if 0 { my $a; } }
diakopter and the number of that slot will tell me which group provided the match
p6eval rakudo 7347ec: Redeclaration of variable $a␤
diakopter (b/c that's how JS RegExp groupings/results work)
moritz_ waitwaitwait... p6eval works with class definitions again without timeout? what happened?
diakopter didn't touch it (p6eval) 19:45
masak rakudo: class A { method postcircumfix:<{ }>() {} }; my &r = { my $a }; if 0 { if 0 { my $a } }
diakopter oh, it emitted the warning
p6eval rakudo 7347ec: Redeclaration of variable $a␤
masak moritz_: I'm not sure it ever had something to do with class definitions.
diakopter but didn't complete
moritz_ so the compile time runs
diakopter moritz_: since I'm constructing the textual representation of the JS RegExp object myself, I can keep track of which sub-pattern produced which grouping 19:46
moritz_ I don't know enough about JS regexes to comment that, but if it's possible that's great 19:47
diakopter I suspect the same strategy could be used in Perl REs
what's the limit on the number of groupings in a Perl 5 regex?
is there one?
moritz_ none that I know of 19:48
masak jnthn: that, by the way, is the bug that causes GGE::OPTable not to be able to be compiled. 19:49
diakopter what bug?
moritz_ ng: eval '++'; say "alive" 19:50
p6eval ng 719b51: alive␤
moritz_ ng: use Test; plan 2; eval_lives_ok 'die "foo"'; eval_lives_ok '++', 'bla';
p6eval ng 719b51: 1..2␤not ok 1 - ␤not ok 2 - bla␤# Looks like you failed 2 tests of 2␤
moritz_ ng: use Test; plan 2; eval_lives_ok '"foo"'; eval_lives_ok '1', 'bla'; 19:51
p6eval ng 719b51: 1..2␤ok 1 - ␤ok 2 - bla␤
19:52 ng_feed left
diakopter reads, flabbergasted, about perl5.10 (??{ code }) and (?&NAME) 19:53
19:53 colomon_ joined 19:54 colomon left, colomon_ is now known as colomon, ng_feed joined
ng_feed rakudo-ng: moritz++ 19:54
rakudo-ng: [t/spectest.data] 5 more test files won back, one passes that master never passed
pmurias diakopter: did you manage to get V8 working on a windows box?
moritz_ wonders why ng_feed didn't report anything before 19:55
diakopter pmurias: yep; with msvc... I haven't tried it with g++ under cygwin or msys
19:55 moritz_ sets mode: +v ng_feed
diakopter moritz_: I noticed it doesn't recover from netsplit sometimes 19:56
pmurias: msys(mingw32), I mean 19:57
pmurias diakopter: what changes did you do? 19:58
diakopter for msvc?
pmurias yes
diakopter for msvc 2008 and later, you have to send in some PATH info to scons (it essentially ignores the current environment values) 19:59
you'll also need some tiny subset of the Windows SDK installed
19:59 jferrero left
diakopter which is like 2GB or something 19:59
pmurias diakopter: i meant V8.pm not V8
diakopter right, but you have to build V8.pm with the same compiler used to build V8 (and perl, for that matter) 20:00
moritz_ diakopter: don't think too high of (??{ ... }) patterns ... fglock tried to compile Perl 6 regexes to Perl 5 regexes that way, and got lots of segfaults
diakopter heh
moritz_ they are marked experimental, and they are experimental. Really. 20:01
diakopter ok.
as in, "if it works for you, great!" :)
moritz_ right
diakopter actually, I just realized, I'll need only one JS RegExp object for each regular production 20:03
since I can just truncate the string input up to the starting position 20:04
(as well as reversing)
intriguing... 20:05
20:05 PacoLinux left
diakopter (: .ɹǝuuɐɯ sıɥʇ uı pǝddı1ɟ uɐǝɯ ʇ,uop ı puɐ 20:06
oh, hm
Wolfman2000 ...times like this I wonder WHY there are certain characters in Unicode 20:07
diakopter oh, ilbot2 got it right
I got a few boxes on my screen
irclog.perlgeek.de/perl6/2009-11-29#i_1782048 20:08
Tene jnthn: did you fix the issue with the parrot update?
jnthn Tene: yes 20:15
moritz_ diakopter: looks fine here... missing fonts? 20:16
diakopter it's the same font that's displayed on the webpage 20:17
20:18 quantumEd left
diakopter it's a putty+screen+irssi+pebcak issue 20:18
20:19 quantumEd joined 20:20 quantumEd left
masak rakudo: class A { method postcircumfix:<{ }>() {} }; my &r = {;}; if 0 { if 0 { my $a } } 20:21
p6eval rakudo 7347ec: Redeclaration of variable $a␤ 20:22
masak this is worse than I first thought.
now there are not even two declarations of the variable.
masak amends the RT ticket
does anyone have any idea about how to work around the above false-positive warning? 20:30
moritz_ don't use postcircumfix:<{ }> 20:32
masak right. 20:33
that is quite a sacrifice at this point.
but I will see what I can do. :)
moritz_ well, you asked for a workaround :-) 20:37
masak I did indeed. :) 20:39
I'm not going to do a reprise of use.perl.org/~masak/journal/38430 :) 20:40
moritz_ :-) 20:44
pmichaud back 20:45
Wolfman2000 ...piece of advice if you guys ever feel like rewriting Perl 5 modules into Perl 6.
Make sure Devel::Cover works faster than it presently does, especially when working with other modules like DBIC and Catalyst 20:46
20:46 quantumEd joined
mberends brian d foy talked about Devel::Cover and Perl::Critic at YAPC::2009, calling them "tarpits" ;) 20:47
Wolfman2000 mberends: meaning slower than molasses?
mberends you get hopelessly sucked in. (speaking from experience)
masak Wolfman2000: saying that such a module as Devel::Cover should be faster is one thing... having the algorithmic insight to produce such a speedup is another. :) 20:48
mberends Wolfman2000: you usee them during testing, not runtime. You become their coding slave.
Wolfman2000 mberends: ...in this case, isn't that a good thing? 20:49
mberends Wolfman2000: yes and no. Good code is nice, but aspiring to perfection is a time sink. 20:50
Wolfman2000 doubts his own computer can do things that much faster than Feather can.
mberends: As far as why I'm doing this...I want to avoid some of the mistakes I made in the past when dealing with ORMs and websites. I want to be absolutely sure I don't run into any bugs.
mberends Wolfman2000: that's good. just know when to stop worrying about all the nits they pick. 100% coverage is also very rare. 20:52
Wolfman2000 mberends: Thanks for that reminder. Considering the behavior of Syntax::Highlight::Perl6, I'm not expecting 100% on everything.
mberends :)
diakopter sweet
Wolfman2000 ...I forgot. Does Perl 6 include a round up/ceiling function? 20:53
diakopter I proved the concept in JS... it finds the ltm even when there are non-greedy quantifiers in the target pattern...
Wolfman2000 rakudo: say "3.4".ceiling
p6eval rakudo 7347ec: 4␤
Wolfman2000 rakudo: say rand * 6
p6eval rakudo 7347ec: 8.48909442421677e-316␤
Wolfman2000 rakudo: say rand 6 20:54
p6eval rakudo 7347ec: Confused at line 2, near "6"␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 rakudo: say rand(6)
...
great: I broke rakudo
p6eval rakudo 7347ec: too many arguments passed - 0 params expected␤in sub
mberends Wolfman2000: you're using random for syntax highlighting ? ;-) ;-)
masak Wolfman2000: is it integers you want?
Wolfman2000 masak: a random number between 1 - 6
masak rakudo: say (1..6).pick 20:55
Wolfman2000 mberends: testing different parts
p6eval rakudo 7347ec: 1␤
Wolfman2000 ...right, I forgot about that
masak Wolfman2000: rand() is one of the parts where Perl 6 limits in order to enhance thought. :)
thus, it's no longer a function with one optional parameter.
diakopter and actually, it needs only one test, duh 20:56
diakopter read S05.html#Longest-token_matching in an altogether new light :D 21:04
*reads
21:05 alester left
diakopter aha! this can work! 21:07
masak diakopter: only now did I catch your comments about your current LTM investigations. it sounds exciting! and quite fun, too.
diakopter it can meet the spec's requirements
yay
actually, I could apply this to STD.pm 21:08
afk&
mathw Hey 21:11
masak lolitsmathw 21:12
mathw not much lol 21:13
I did no perl 6 this weekend I'm afraid
masak we like you anyway. :) 21:14
mathw I find my mind consumed by the prospect of my interview on thursday... so I've been knitting
masak ooh, knitting!
Wolfman2000 ...and I just discovered through testing that my code was wrong. Joy.
mathw Wolfman2000: how lovely. Was it before or after giving it to a customer? Because last time that happened to me at work, it was after. 21:15
Wolfman2000 mathw: depends on if those that can access my github are customers.
mathw hmm
well they're not paying
mathw is still a little bitter about that particular QA team failure
Okay so tests are sometimes wrong or incomplete 21:16
And devs make mistakes
Wolfman2000 in this case, the test was right.
mathw but the QA team didn't even bother to run the tests for the very issue the release was meant to fix... and theirs covered a case mine didn't
moritz_ eats self-made Vanillekipferl 21:18
well, made by my girlfriend - close enough
mathw: that's frustrating
mathw moritz_: yes 21:19
Tene moritz_: sounds delicious. :)
moritz_ Tene: they are, yes :-) 21:20
mberends moritz_: that looked like Vanilla Perl at first glance ;) 21:23
21:23 PacoLinux joined 21:27 dakkar left 21:28 Jedai left 21:35 Guest39542 left
colomon ng: say Mu 21:37
p6eval ng 461974: Mu()␤
colomon ng: say Nu.notdef
p6eval ng 461974: Could not find non-existent sub &Nu␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon ng: say Mu.notdef; 21:38
p6eval ng 461974: Method 'notdef' not found for invocant of class ''␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon ng: my $a = Mu; say $a ~~ Mu;
p6eval ng 461974: 1␤
colomon say $a ~~ Int
jnthn colomon: I didn't add notdef. Feel free.
colomon ng: my $a = Mu; say $a ~~ Int;
p6eval ng 461974: 0␤
colomon jnthn: Am I attempting to use Mu correctly? 21:39
jnthn Looks like it so far...
21:39 hercynium joined
jnthn The results so far are what I expected anyway. 21:39
colomon But is the notion right? Where we would have formerly return undef, now we return Mu? 21:40
jnthn I'm still a bit hazy on when Mu and when Nil...
colomon (and I'm assuming augment class Mu { multi method notdef() { return true; } } is too simple...) 21:41
mathw I don't think you always return Mu instead of undef
you may find it more appropriate to return the type object for the type you'd be returning if it was defined
jnthn colomon: It's just !self.defined, no? :-)
colomon jnthn: is defined defined? ;)
jnthn rakudo: say Mu.defined 21:42
p6eval rakudo 7347ec: Could not find non-existent sub Mu␤in Main (file src/gen_setting.pm, line 324)␤
jnthn ng: say Mu.defined
p6eval ng 461974: 0␤
jnthn gah
:-)
Yes, it's defined.
ng: say Mu.new.defined
p6eval ng 461974: 1␤
jnthn \o/
colomon ng: say 10.defined
p6eval ng 461974: 1␤
Wolfman2000 ...Mu is nothingness! How can it be defined?
moritz_ colomon: !$.defined is the .notdef definition in Object.pm in master
jnthn Wolfman2000: When you make something from nothing.
;-) 21:43
Wolfman2000 jnthn++: I can't defeat that logic.
colomon Ummm.... does Mu.true work?
Wolfman2000 ng: say Mu.true
p6eval ng 461974: 0␤
21:43 snarkyboojum joined
Wolfman2000 ng: say Mu.new.true 21:44
p6eval ng 461974: 1␤
colomon ng: say 10.true
p6eval ng 461974: 1␤
masak rakudo: say Mu.defined
p6eval rakudo 7347ec: Could not find non-existent sub Mu␤in Main (file src/gen_setting.pm, line 324)␤
colomon The reason I ask is it is coded $.defined, and I had huge problems with $. as a sub call in the split functions this morning.
s/sub/method/ 21:45
moritz_ that's an old version of rakudo
jnthn use self.
masak ng: say Mu.defined
p6eval ng 461974: sh: ./perl6: No such file or directory␤
colomon jnthn: That's what I did to make it work. But I see Mu.true is method true { $.defined } 21:46
moritz_ oh, it was an svn lock in rakudo's parrot true
jnthn Hmm. That one seems to work.
21:49 pmurias left
ng_feed rakudo-ng: colomon++ 21:50
rakudo-ng: Mu.notdef defined.
colomon \o/ 21:53
Wolfman2000 hey, the ng_feed is back up 21:54
moritz_ public service announcement: tha "rakudo:" evalbot target will be not working for a few minutes or hours 21:55
Wolfman2000 :(
...wait, I have a better face
masak moritz_++ # thanks for your good work on evalbot 21:56
colomon indeed, bravo!
ng_feed rakudo-ng: colomon++ 22:03
rakudo-ng: Any.index now returns Mu if it doesn't find the string. Any.split(Any) checks for that, so that if the spliter string is at the first position of the string being split, things still work.
22:05 PacoLinux left
moritz_ rakudo: say 1 22:17
p6eval rakudo 7ce13d: 1␤
masak \o/
colomon ng: say 1
p6eval ng 2df628: 1␤
colomon ship it!
Wolfman2000 that...wasn't too long. moritz_++: what was the issue?
moritz_ Wolfman2000: two things... parrot's svn had a lock which I had to remove manually 22:18
Wolfman2000: second: parrot's build failed
and a realclean didn't help
so nuked the parrot's svn completely
Wolfman2000 ...that's one way of cleaning up a bird
colomon ng: for "is this a test?".split("is") { .say }
p6eval ng 2df628: ␤ th␤ a test?␤
moritz_ colomon++ 22:19
jnthn \o/
moritz_ ng: say 'is this a test'.split(/is/).join('|')
p6eval ng 2df628: | th| a test␤
moritz_ ng: say 'is this a test'.split(/is/, :match).join('|')
p6eval ng 2df628: Unexpected named parameter 'match' passed␤current instr.: 'perl6;Any;split' pc 206548 (src/gen/core.pir:12318)␤
colomon :match?
moritz_ ng: say 'is this a test'.split(/is/, :all).join('|')
p6eval ng 2df628: |is| th|is| a test␤
moritz_ colomon: misremembered the name
colomon ah. 22:20
22:20 cognominal_ joined
moritz_ ng: say 'is this a test'.split(/is/, 1, :all).join('|') 22:20
p6eval ng 2df628: is this a test␤
colomon moritz_++ # great (if slightly buggy :) initial implementation.
moritz_ ng: say 'is this a test'.split(/is/, 2, :all).join('|')
p6eval ng 2df628: |is| this a test␤
moritz_ colomon: what's the bug?
colomon moritz_: I fixed all the bugs I found. 22:21
Your version didn't handle the limit argument.
Also used $m.to when you wanted $m.from once. And a couple of other tiny things like that. 22:22
Stuff you'd have fixed in under five minutes if you'd been able to test it.
moritz_ reads git log -p
colomon++ # fixing my bugs 22:23
22:29 |Jedai| joined, IllvilJa joined 22:36 cognominal left
moritz_ off-topic question... I read (parts of) the silmarillion over the weekend 22:42
and I was a bit puzzled
because... Glorfindel died, after Gondolin fell
SirKay that's what Tolkein's books do.
moritz_ yet he rides out from Rivendell to help Frodo and the others 22:43
in LOTR 1
Tene GHOST
moritz_ vampire-elve? :-)
22:45 iblechbot left
masak moritz_: different Glorfindel? 22:46
moritz_ name reuse didn't seem to be Tolkien's style in other places
oh, wikipedia knows.
tolkiengateway.net/wiki/Glorfindel_of_Rivendell "He was distinctive because of his return to Middle-earth after death, acting as an emissary of the Valar, on a similar mission to the Istari who were to come several thousand years later." 22:47
22:47 mberends left
Tene See? Ghost! 22:47
colomon Er, would you consider Gandalf a ghost? 22:48
moritz_ Tene++ # intimate Tolkien knowledge :-) 22:49
ng_feed rakudo-ng: colomon++ 22:54
rakudo-ng: Pull Any.reverse from master.
Tene pmichaud: any progress on thinking about iterators and lazy? 22:55
lisppaste3 colomon pasted "S32-str/flip.t bus error in the debugger" at paste.lisp.org/display/91250 22:59
zaslon lolmasakhazblogged! masak++ 'November 29 2009 -- drowning in workarounds': use.perl.org/~masak/journal/39961?from=rss 23:00
colomon Extra frustrating because, as far as I can tell, we should pass all the unfudged tests....
moritz_ all tests except 9 pass 23:04
here
colomon: do you have icu installed?
moritz_ is particularly surprised that the 10th test pass 23:05
colomon no 23:06
afk dinner 23:07
23:32 hercynium left 23:35 nbrown joined 23:37 meppl left
diakopter ng: say Mu.WHAT.new 23:37
p6eval ng 7d3cac: Could not find non-existent sub &fail␤current instr.: 'perl6;IO;print' pc 237018 (src/gen/core.pir:23636)␤
masak WHAT! new? :) 23:49
diakopter ng: our sub fail { say $^a }; say Mu.WHAT.new
p6eval ng 7d3cac: Method 'Str' not found for invocant of class 'Mu'␤
masak "the ng branch is so primitive that you have to bring your own 'fail' routine to it just to be able to fail..." :P 23:50
Tene Um, I can fix that.
Well, kinda.
masak \o/
Tene Fail is supposed to do more than just die, isn't it?
23:50 snarkyboojum_ joined
Tene Return an object that dies if it's used, or somehting? 23:51
Are there tests?
masak I would think so.
yes, fail returns an unthrown exception.
Tene Which file has fail() tests? 23:54
I'm just stepping out right now to go set up class for tomorrow, but I can work on fail() tonight.
masak I'll try to locate such a file. 23:55
I can't guarantee success. :P
Tene masak: You mean you might fail? ;)
masak: you could always write one. *hopeful*
diakopter ng: say Mu.defined; say Mu.new.defined
p6eval ng 7d3cac: 0␤1␤
masak Tene: what about t/spec/S04-exceptions/fail.t ? 23:56
Tene masak: That looks great. 23:57