»ö« | 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 moderator on 10 October 2009.
jnthn carlin: Just build 32-bit...or wait a few days... 00:00
Or debug and patch it. ;-) 00:01
carlin Heh, I think I'll wait :-) 00:02
00:03 quietfanatic joined 00:11 FullMetalHarlot joined 00:24 dalek joined
sjohnson rakudo: $x = 1/3; print ($x == 1/3); 00:52
p6eval rakudo fca32d: OUTPUT«Symbol '$x' not predeclared in <anonymous> (/tmp/skrsGDRzVA:2)␤in Main (file <unknown>, line <unknown>)␤»
sjohnson rakudo: my $x = 1/3; print ($x == 1/3);
p6eval rakudo fca32d: OUTPUT«1» 00:53
sjohnson rakudo: my $a; for (1..10) { $a += 0.1; } if ($a == 1) { print "good"; } else { print "bad"; } 00:58
p6eval rakudo fca32d: OUTPUT«bad»
sjohnson rakudo: my $a = 0.0; for (1..10) { $a += 0.1; } if ($a == 1) { print "good"; } else { print "bad"; } 01:01
p6eval rakudo fca32d: OUTPUT«bad»
jnthn my $a = 0.0; for (1..10) { $a += 0.1; }; say $a;
rakudo: my $a = 0.0; for (1..10) { $a += 0.1; }; say $a;
p6eval rakudo fca32d: OUTPUT«1␤»
jnthn lol
rakudo: my $a = 0.0; for (1..10) { $a += 0.1; }; say $a == 1.0
p6eval rakudo fca32d: OUTPUT«0␤»
jnthn rakudo: my $a = 0.0; for (1..10) { $a += 0.1; }; say $a - 1.0
p6eval rakudo fca32d: OUTPUT«-1.11022302462516e-16␤»
jnthn :) 01:02
Never do exact comparrisons on floating point. It's always wrong. :-)
sjohnson i just wanted to see if perl6 had some sort of handling for this kinda stuff
jnthn It provides Rats instead, so you can choose the right tool for the job.
sjohnson tattoo's jnthn's advice on his arm
jnthn my $a = 0.0; for (1..10) { $a += 1/10; }; say $a == 1 01:03
rakudo: my $a = 0.0; for (1..10) { $a += 1/10; }; say $a == 1
p6eval rakudo fca32d: OUTPUT«0␤»
jnthn oh wait
rakudo: my $a = 0; for (1..10) { $a += 1/10; }; say $a == 1
p6eval rakudo fca32d: OUTPUT«1␤»
quietfanatic Seems unreliable
jnthn there we are (first time I init'd $a to a Num)
quietfanatic: my $a = 0; vs my $a = 0.0 01:04
quietfanatic Yeah
jnthn Those are rather different.
quietfanatic I mean you don't know if somebody's code will pass a Num instead of an Int
jnthn Sure, though if you care you stick a type constraint in. :-)
Or coerce it. 01:05
quietfanatic right...
jnthn That's nothing more than the usual "always validate your input" though. :-)
well, unless you know you can trust it.
quietfanatic rakudo: my $a = 0.0; for (1..10) { $a += 0.1; }; say $a.Rat.perl
p6eval rakudo fca32d: OUTPUT«1/1␤»
quietfanatic huh
jnthn
.oO( how magical )
quietfanatic rakudo: say 0.5.Rat.perl 01:07
p6eval rakudo fca32d: OUTPUT«1/2␤»
quietfanatic rakudo: say 0.333333333333333333.Rat.perl
p6eval rakudo fca32d: OUTPUT«1/3␤»
quietfanatic I guess it approximates a little
sjohnson rakudo: my $a = 0; for (1..1000) { $a += 1/10; }; say $a == 100 01:08
cognominal do Rakudo or parrot support non string hash keys?
p6eval rakudo fca32d: TIMED_OUT
cognominal I would have a good use of that :)
sjohnson uh oh
i broke the compiler
quietfanatic Not yet I think, though any object can be uniquely stringified with .WHICH
sjohnson pugs: my $a = 0; for (1..1000) { $a += 1/10; }; say $a == 100
p6eval pugs: OUTPUT«1␤»
jnthn cognominal: not yet, afaik. 01:09
sjohnson pugs: say 1/10 == 0.1;
p6eval pugs: OUTPUT«1␤»
jnthn Ooh, after 3am. Sleep!
o/
cognominal $a{ [0,1] } # that whould hash on the address?
sjohnson pugs: say (1/10).WHAT
p6eval pugs: OUTPUT«Rat␤»
cognominal or on the content?
sjohnson night jnthn !
cognominal jnthn++ 01:10
quietfanatic rakudo: %a = ([0, 1] => 'thing'); .say for %a.keys
p6eval rakudo fca32d: OUTPUT«Symbol '%a' not predeclared in <anonymous> (/tmp/uhP74ubiiM:2)␤in Main (file <unknown>, line <unknown>)␤»
quietfanatic rakudo: my %a = ([0, 1] => 'thing'); .say for %a.keys
01:10 lumi joined
p6eval rakudo fca32d: OUTPUT«0 1␤» 01:10
quietfanatic err
yeah
rakudo: my %a = ([0, 1].WHICH => 'thing'); .say for %a.keys
p6eval rakudo fca32d: OUTPUT«47452219244680␤»
colomon quietfanatic: Num.Rat has an optional parameter that allows you to specify how close the approximation is. 01:11
quietfanatic Oh cool
cognominal rakudo: %a = ([0, 1] => 'thing'); say $_.perl for %a.keys
p6eval rakudo fca32d: OUTPUT«Symbol '%a' not predeclared in <anonymous> (/tmp/vPxf3O8Dyt:2)␤in Main (file <unknown>, line <unknown>)␤»
cognominal oops
rakudo: my %a = ([0, 1] => 'thing'); say $_.perl for %a.keys
p6eval rakudo fca32d: OUTPUT«"0 1"␤»
cognominal rakudo: my %a = ([0, 1] => 'thing'); say $_.WHAT for %a.keys 01:12
p6eval rakudo fca32d: OUTPUT«Str()␤»
cognominal that may be good enough for what I want.
quietfanatic cognominal: The problem is that coincides with "0 1"
quietfanatic: duh... 01:13
sjohnson rakudo: my $a = Rat(0); say $a.WHAT;
arnsholt It should be possible to add type constraints on the hash keys, no?
p6eval rakudo fca32d: OUTPUT«invoke() not implemented in class 'Rat'␤in Main (file src/gen_setting.pm, line 288)␤»
sjohnson rakudo: my $a = Rat(); say $a.WHAT;
p6eval rakudo fca32d: OUTPUT«invoke() not implemented in class 'Rat'␤in Main (file src/gen_setting.pm, line 288)␤»
arnsholt So that you can't insert something with the key "0 1"
sjohnson rakudo: my $a = new Rat(); say $a.WHAT;
p6eval rakudo fca32d: OUTPUT«invoke() not implemented in class 'Rat'␤in Main (file src/gen_setting.pm, line 288)␤»
quietfanatic arnsholt: In the spec yeah, but I don't think it's implemented in Rakudo 01:14
rakudo: my %a{Array};
p6eval rakudo fca32d: OUTPUT«Confused at line 2, near "{Array};"␤in Main (file <unknown>, line <unknown>)␤»
01:14 agentzh joined
quietfanatic That's how you would do it if you could 01:15
arnsholt Ah, right 01:17
01:17 athomason joined 01:21 dalek joined
carlin Aww, we have ord() and chr() but no hex()? 01:22
pmichaud rakudo: say :16<ffff> 01:24
p6eval rakudo fca32d: OUTPUT«65535␤»
pmichaud rakudo: say +":16<ffff>" 01:25
p6eval rakudo fca32d: OUTPUT«65535␤»
01:36 orafu joined
dalek kudo: 9d76f3b | (Solomon Foster)++ | src/setting/Any-num.pm:
Add proto declarations for all the trig functions, allowing you to call them using named arguments.
01:39
pugs_svn r28848 | colomon++ | [t/spec] Unskip all the named argument tests (except for atan2, which still doesn't work). 01:41
colomon Should have said, jnthn++
carlin ah 01:42
pmichaud: Thanks
japhb Does Rakudo have heredocs yet? 01:43
pmichaud no.
japhb Where do I look to see what forms of quoting are supported? 01:44
02:07 JimmyZ joined 02:15 quietfanatic joined
carlin rakudo: my $s = IO::Socket::INET.new; $s.open('theintersect.org', 80); $s.send("GET /j\\nHost: theintersect.org\\n\\n"); my $r=$s.recv(); $r.=subst(/(.*\\n\\n)/, ''); print $r.subst(/\\%(\\w\\w)/, { chr ":16<$0>" }, :g); 02:22
p6eval rakudo 9d76f3: OUTPUT«I have too much time on my hands :-)␤»
carlin \\o/
TimToady rakudo: my $s = IO::Socket::INET.new; $s.open('theintersect.org', 80); $s.send("GET /j\\nHost: theintersect.org\\n\\n"); my $r=$s.recv(); $r.=subst(/(.*\\n\\n)/, ''); print $r.subst(/\\%(\\w\\w)/, { chr :16($0) }, :g); 02:25
p6eval rakudo 9d76f3: OUTPUT«I have too much time on my hands :-)␤»
TimToady rakudo: my $s = IO::Socket::INET.new; $s.open('theintersect.org', 80); $s.send("GET /j\\nHost: theintersect.org\\n\\n"); my $r=$s.recv(); $r.=subst(/(.*\\n\\n)/, ''); print $r.subst(/\\%(\\w\\w)/, { chr '0x' ~ $0 }, :g); 02:27
p6eval rakudo 9d76f3: OUTPUT«I have too much time on my hands :-)␤»
carlin rakudo: say 0x49; say :16<49>; 02:33
p6eval rakudo 9d76f3: OUTPUT«73␤73␤»
carlin Ohh :-)
TimToady rakudo: my $c = '49'; say :16($c); 02:34
p6eval rakudo 9d76f3: OUTPUT«73␤»
quietfanatic rakudo: my $c = 49; say chr '0x' ~ $c
p6eval rakudo 9d76f3: OUTPUT«I␤»
quietfanatic I see 02:35
So numification of strings sees radix notation. That's convenient.
nbrown Hi perl6 people, is anyone having issues with running the tests? 02:49
I updated my rakudo and now I get this error
"The procedure entry point Parrot_capture_les could not be located in the dynamic link library libparrot.dll" 02:50
This seems to only happen with the uninstalled rakudo, if I run a single test with the installed perl6, the test works 02:53
Does this make sense?
quietfanatic Perhaps your uninstalled rakudo is trying to use libraries from the installed rakudo? 03:02
JimmyZ yes, I got this error too.
nbrown I think so, but I can't figure out why
JimmyZ just perl configure --gen-parrot && make && make spectest. 03:03
carlin rakudo had a big branch merge earlier today
nbrown I did a clean install and still can't figure out how to make it work
carlin might have something to do with it
nbrown I saw that so I figured I'd ask before I spend too long banging my head against it
JimmyZ: That fixed it for you?
JimmyZ no, I just do that and then got the same error. 03:04
s/do/did/
nbrown Gotcha, but it seems to work if I run the installed perl6 03:05
hmmm, time to dig into the test harness
JimmyZ == SORRY! == 03:09
Unable to find Perl 6 dynops and dynpmcs library.
If you want to run Rakudo outside of the build directory, please make install.
03:10 eternaleye joined
nbrown JimmyZ: thanks for trying. I can run it outside, but I can't run the spectest because that's in the build directory 03:10
JimmyZ: it's not a blocker for what I'm playing with, but I wanted to see how the new merge worked 03:11
JimmyZ nbrown: I run 'perl6.exe'. It's failed.
nbrown JimmyZ: I haven't found a test it's failed yet
I'm sorry, I meant that for the installed perl6, the one in the build directory still fails
03:37 ShaneC joined 03:41 jaldhar joined 03:51 envi^office joined 03:56 synth joined 04:04 pnate joined 04:09 ihrd joined, ihrd left
dj_goku If I have failures during 'make spectest' is there a process I should go to submit these somewhere? 04:19
04:39 pnate joined
JimmyZ dj_goku: see rakudo.org/community 04:48
04:58 jaldhar joined 05:05 zloyrusskiy joined 05:11 [particle] joined 05:40 rfordinal joined 05:47 pnate2 joined 05:53 headrx joined
mathw jnthn++ 06:15
New signature binder didn't break Form.pm :)
06:17 Su-Shee joined
Su-Shee good morning. :) 06:17
carlin rakudo: my $s = IO::Socket::INET.new; $s.open('irc.freenode.net', 6667); $s.send("USER quux \\"localhost\\" \\"quux\\" :quux\\nNICK quux\\nJOIN #perl6\\nPRIVMSG #perl6 :OH HAI Su-Shee\\nQUIT :Bye\\n"); $s.recv(); 06:20
p6eval rakudo 9d76f3: ( no output )
06:20 quux joined
quux OH HAI Su-Shee 06:20
carlin :-)
Su-Shee Niiiice :) 06:21
06:22 hanekomu joined
carlin If I could figure out how to make recv() return something before the server disconnects life would be good ;-) 06:22
Su-Shee how about this super simple client-server example in the old perl cookbook? essentially it's just tcp-based echo, but a good example. 06:24
JimmyZ rakudo: my $s = IO::Socket::INET.new; $s.open('irc.freenode.net', 6667); $s.send("USER quux \\"localhost\\" \\"quux\\" :quux\\nNICK quux\\nJOIN #perl6\\nPRIVMSG #perl6 :OH HAI 董杰\\nQUIT :Bye\\n"); $s.recv(); 06:26
06:26 quux joined
quux OH HAI 董杰 06:26
p6eval rakudo 9d76f3: ( no output )
Su-Shee looks perfect. :)
JimmyZ It's not perfect on windows. 06:27
moritz_ good morning 06:38
sjohnson y0 06:40
carlin rakudo: my $s = IO::Socket::INET.new; $s.open('irc.freenode.net', 6667); $s.send("USER quux \\"localhost\\" \\"quux\\" :quux\\nNICK quux\\nJOIN #perl6\\nPRIVMSG #perl6 :OH HAI sjohnson\\nQUIT :Bye\\n"); $s.recv(); 06:42
06:42 quux joined
quux OH HAI sjohnson 06:42
p6eval rakudo 9d76f3: ( no output )
sjohnson thanks carlin 06:43
that was very nice of you :)
.. not to mention quite good coding skillz
carlin I'm too lazy to greet people, I make rakudo do it for me :-)
sjohnson is impressed 06:45
moritz_ is scared by the implications for spamming this has 06:48
sjohnson spamming on one hand, impressive coding for rakudo on the other 06:49
besides, the spammers will be forced to learn as they spam, and hopefully do good in the end 06:50
06:50 NorwayGeek joined 06:52 hcchien joined 06:58 hcchien joined 07:03 masak joined
masak oh hai 07:03
moritz_ \\o/ 07:04
sjohnson hi masak
masak hi there
moritz_ we have a new signature binder, and outer lexicals in classes. 07:05
dalek p-rx: 49572a7 | pmichaud++ | src/ (4 files):
Allow multiple alias subrule bindings (e.g., <abc=def=subrule>).
masak oh? the merge happened while I was asleep? :) cool! 07:06
07:06 pnate joined
moritz_ rakudo: say 'alive' 07:07
p6eval rakudo 9d76f3: OUTPUT«alive␤»
moritz_ rakudo: my $x = 5; class A { method b { say $x } }; A.new.b.
p6eval rakudo 9d76f3: OUTPUT«Confused at line 2, near "."␤in Main (file <unknown>, line <unknown>)␤»
masak rakudo: my $x = 5; class A { method b { say $x } }; A.new.b 07:08
p6eval rakudo 9d76f3: OUTPUT«5␤»
masak \\o/
07:10 hcchien joined
masak ooh, I see nested signatures are not far off on the grant agenda. 07:12
and multiple return values! \\o/
Juerd www.aaronbassett.com/2009/i-can-haz-lolsql/ 07:16
How long before there's a perl6 parser for this? :)
dalek p-rx: b0d3c56 | pmichaud++ | src/ (3 files):
Make use of <OPER=...> bindings to promote <prec> and <sym> to
07:17
masak I'M IN UR `table` SELECTIN UR `column` AZ `label` I CAN HAZ `column` LIEK `value` GIMMEH 5
brilliant.
I see this becoming the new industry standard.
MAKES ORDER `column` GOAS DOWN KTHNXBYE 07:18
moritz_ LIKES IT
Juerd I MADE U THIS `table` BUT I EATED IT. # if only I had any idea what it could do :)
moritz_ drop it? 07:19
masak OH NOES I HAZ LOST `table`
apparently.
moritz_ rakudo: say ?(undef ~~ / 'RT #67234'/) 07:20
p6eval rakudo 9d76f3: OUTPUT«0␤»
moritz_ autounfudge is being productive 07:22
07:23 rfordinal joined
JimmyZ 'perl configure --gen-parrot && make && make spectest' failed now. :( 07:24
07:24 lumi joined
mathw masak: There was merging, and I woke up and fed Form.pm through it, and it passes and I think the tests run faster, although I have no timings from the old version to compare 07:25
masak: But jnthn++'s figures say method calls are faster
masak nod.
mathw I should have done a pre-merge run
but I was impatient
moritz_ JimmyZ: at what step does it fail?
mathw must have the shiny
masak I half-promised to compare the pre-merge Rakudo against the current one. it's still possible, thanks to our revision control systems. 07:26
mathw This is true
I could roll it back to before the merge and get a comparison figure
07:26 eiro joined
JimmyZ moritz_: just run 'perl6.exe' 07:26
moritz_: got this error: The procedure entry point Parrot_capture_les could not be located in the dynamic link library libparrot.dll" 07:27
mathw masak: We should write a lolsql->sql translator in Perl 6, and win the internet
masak mathw: you're right. any thoughts on when? 07:28
mathw Well I'd say now
but all I can do here is make a github project
moritz_ JimmyZ: try removing the parrot_install directory, and try the whole process again
masak mathw: let's wait until there's tuits, I say.
mathw work--
masak: yes 07:29
Right now my dream job is 'do cool things with perl 6' 07:30
07:30 hanekomu_ joined
mathw sighs 07:30
JimmyZ oh, make realclean left perl6_group.o and other files. 07:31
moritz_ JimmyZ: then run 'git clean -dfx' # warning, will delete everything in that dir not under version control
masak mathw: I have that job, almost half-time. the pay is not good, but it's boat-loads of fun. :) 07:33
mathw yeah that's the problem
I kind of need a full time salary :(
masak hah. the merge broke the november smoke. 07:35
mathw aaw
masak I think I need to make it remove all the .pir files every time.
or simply run 'make clean'. 07:36
JimmyZ moritz_: still the same error. 07:37
07:38 jferrero joined, pnu joined
JimmyZ moritz_: wait, not the same error, but can't find libparrot.dll 07:39
moritz_ I'm not well-versed on windows, so I'm afraid I can't help much more 07:40
07:45 TiMBuS joined
carlin wants to be able to do $socket.recv(512) 07:46
masak patches welcome.
carlin Heh 07:47
I had a look a while back but it was beyond me
because Parrot's recv() doesn't take a parameter either 07:48
masak hm. yes, I imagine that complicates things.
07:49 mariuz joined
TiMBuS just make perls socket object keep a buffer. its how i added getline 07:51
mberends hello m<tab>, et al #perl6 08:00
masak mberends! \\o/ 08:01
carlin rakudo: my $s = IO::Socket::INET.new; $s.open('irc.freenode.net', 6667); $s.send("USER quux \\"localhost\\" \\"quux\\" :quux\\nNICK quux\\nJOIN #perl6\\nPRIVMSG #perl6 :OH HAI mberends\\nQUIT :Bye\\n"); $s.recv(); 08:02
08:02 quux joined
quux OH HAI mberends 08:02
p6eval rakudo 9d76f3: ( no output )
mberends jnthn's resig2 is awesome, flying thru teh spectests very quickly
carlin++ # saw it on the backlogs. crafty! 08:04
sjohnson .. and i thought it was just for me :] 08:05
mberends :]
carlin It's write-only at the moment, if I can get recv working I could take a stab at writing some sort of IRC bot 08:06
mberends carlin: the recv() hung on other protocols earlier as well, for example SMTP
masak I also have a feeling the spectests are going faster.
mberends jnthn++ beer++ # (because jnthn++ is a beer-2-code converter) 08:08
mathw so all we need to do is buy him beer?
moritz_ and meet him at conferences 08:09
mathw I need to go to one of these conferences 08:10
I shall make it a task for 2010
mberends yes we want to meet you!
moritz_ where's YAPC::EU 2010?
mathw YAPC::EU or something
mberends Pisa
moritz_ ooh, right 08:11
mathw Oooh
moritz_ it will be easy to persuade my girlfriend for that one
mathw That's achieveable
masak moritz_: our AFK encounter is long overdue.
moritz_ masak: indeed
mathw Yes I want to meet you as well, and talk Perl 08:12
It would be a great pleasure
moritz_ same with just about everyone here (I only met jnthn in real life, at GPW 2008)
mathw It's quite a long time until YAPC::EU though isn't it
masak I should give a fair warning: my beard is smaller than jnthn's.
mathw I have no beard at all! 08:13
Su-Shee no, it isn't. essentially, it's christmas and after that it gets easter fast and then it's summer and the YAPC.
so, in principle it's like next week. ;)
masak Su-Shee: easter fast? don't you mean lent fast? :P
mathw har har 08:14
Su-Shee (I should better never release a date handling module.. ;)
pugs_svn r28849 | moritz++ | [t/spec] epic #?skip unfudging, jnthn++ 08:16
mathw oooh 08:18
more tests pass?
08:19 NorwayGeek_ joined
moritz_ you could say so. 08:19
masak not only #?todo unfidging, but #?skip unfudging! 08:20
how come?
moritz_ rakudo: module A { sub foo() { return 42 }; say foo }
p6eval rakudo 9d76f3: OUTPUT«42␤»
moritz_ masak: autounfudge
masak no, I mean...
what is it that Rakudo can do now that it couldn't pre-merge? 08:21
moritz_ lots of things
outer lexicals in classes
masak oh, right.
moritz_ binding to two anonymous scalars in a signature
my latest p6eval input
masak we couldn't do that before? o.O 08:22
moritz_ masak: that was the just-closed RT #64876
mberends faw teh winz: use.perl.org/~JonathanWorthington/journal/39772 08:24
moritz_ just closed 7 tickets that autounfudge brought up 08:25
mathw makes jnthn's awaylog light up again by saying how marvellous jnthn is 08:27
masak well, he is! what will he pull off next -- nested signatures? 08:30
moritz_ rakudo: my $foo = { "Yay" }; say $foo(foo => 'bar');
p6eval rakudo 9d76f3: OUTPUT«Unexpected named parameter 'foo' passed␤in Main (file src/gen_setting.pm, line 288)␤»
moritz_ 8th ticket closed, Ilya++ for reporting 08:32
masak moritz_++ for closing 8 tickets! 08:34
moritz_ jnthn++ for making them closeable
mathw It's the simple things I miss when I write in Perl 5
like if $foo eq $bar { } 08:35
and for @list -> $thing { }
masak :)
mathw and "{embedded-closures()}"
So many little touches and tweaks and betterifications
carlin rakudo: grammar foo { rule TOP { 'lorem' | <.panic> }; method panic { die "The sky is falling!"; }; }; foo.parse('blah'); # RT 69228 08:39
p6eval rakudo 9d76f3: OUTPUT«The sky is falling!␤in method foo::panic (file /tmp/20eC7h2q0n, line 2)␤called from regex foo::TOP (file /tmp/20eC7h2q0n, line 2)␤called from Main (file <unknown>, line <unknown>)␤»
08:40 rfordinal left
moritz_ carlin: so barring test coverage that can be closed? 08:40
carlin moritz_: yep, not an NPMCA anymore 08:41
09:09 ilbot2 joined
moderator »ö« | 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!
jnthn morning 09:15
moritz_ oh morning 09:16
jnthn: I closed 8 tickets that autounfudge turned up
and I'm about to commit a few more unfudges 09:18
PerlJam: for the release you should regress on autothreading.t, which fails on amd64 (and will be fixed shortly after the release) 09:19
jnthn nbrown: If you didn't solve the problem, then it's probably because your Parrot is too old (you're using one that doesn't export the symbols).
pugs_svn r28850 | moritz++ | [t/spec] a few #?todo unfudges for rakudo, jnthn++ 09:20
09:20 lumi joined
moritz_ rakudo: say (-> { 'foo' }).('bar') 09:21
p6eval rakudo 9d76f3: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤in Main (file src/gen_setting.pm, line 288)␤»
jnthn Hmm...is that one a win or a fail? 09:25
jnthn makes coffee
mathw: I'm happy to hear I didn't break From. :-)
moritz++ # unfudging tests 09:26
09:27 kent\\n joined
pugs_svn r28851 | moritz++ | [t/spec] more unfudges 09:31
09:31 |Jedai| joined
jnthn moritz: Any guesses as to how many tests we won? 09:32
moritz_ jnthn: hard to say... maybe a hundred
jnthn Not bad. Do we have decent coverage of passing named args to positionals? 09:33
09:33 NorwayGeek|Away joined
moritz_ good question 09:34
we have many tests
but most cover the same simple cases
jnthn :-) 09:36
mathw rakudo: sub foo(Int $a, Str $b) { say "$a$b" }; foo(4, "hello"); foo(:b("hello"), :a(4)); 09:38
p6eval rakudo 9d76f3: OUTPUT«4hello␤4hello␤»
mathw yay!
masak jnthn: re 'win or fail': win.
pugs_svn r28852 | moritz++ | [t/spec] more unfudges
jnthn OK, I thought so (since no signature = params are do not want)
mathw indeed 09:40
09:50 hitsu joined 09:52 sdf joined
pugs_svn r28853 | masak++ | [S12-attributes/delegation.t] removed some tests as per recent spec change 09:54
jnthn We so have to write a lolsql grammar.
masak and post it as a comment to that blog post. 09:56
Juerd Yay, free PR
09:57 donaldh joined
masak and well-deserved, too. 09:57
09:59 NorwayGeek joined
dalek kudo: f5b38a0 | masak++ | src/builtins/guts.pir:
[src/builtins/guts.pir] arrays/hashes & handles

traits. These now behave as any other attribute, as per spec change r28846.
10:04
masak $ perl6 -e 'class A { has @.ar handles <push elems> }; my $a = A.new; $a.push("OH HAI"); .say for $a.elems, $a.ar.perl' 10:06
1
["OH HAI"]
jnthn masak: Nice, but 'fraid you missed some other relics in src/pmc/p6opaque.pmc 10:07
masak oh. let me check.
10:07 hanekomu joined
masak I did indeed. 10:08
man, that looks scary. :/
jnthn masak: It, erm, is. 10:09
masak I see a do_handles routine. 10:10
is that whole routine a relic?
jnthn No, I very much doubt that.
masak hm. 10:11
I was hoping I wouldn't have to grok it...
jnthn heh heh 10:12
Increasing bus number through the back door. ;)
10:12 kent\\n joined 10:18 bpetering joined
colomon rakudo: say sin(:x(90), :base('degrees')) 10:18
p6eval rakudo 9d76f3: OUTPUT«1␤»
colomon :) 10:19
dalek p-rx: 4e5addc | pmichaud++ | src/ (4 files):
Handle postcircumfix: parsing.
p-rx: 9bf6977 | pmichaud++ | src/ (3 files):
Handle postcircumfix: ast requirements.
p-rx: bcd5543 | pmichaud++ | src/cheats/hll-grammar.pir:
Correct stacked postfixish operators.
jnthn colomon: We won some tests from this, yes? :-)
colomon rakudo: say atan2(:x(1), :y(1)); 10:20
p6eval rakudo 9d76f3: OUTPUT«No applicable candidates found to dispatch to for 'atan2'␤in Main (file src/gen_setting.pm, line 288)␤»
jnthn aww
colomon jnthn: I didn't count, but yes.
jnthn: yeah atan2 doesn't work for some reason.
(all the rest do) 10:21
jnthn That's...odd. 10:22
rakudo: say &atan2.WHAT
p6eval rakudo 9d76f3: OUTPUT«␤»
jnthn rakudo: say &sin.WHAT
p6eval rakudo 9d76f3: OUTPUT«␤»
jnthn rakudo: say "alive" 10:23
p6eval rakudo 9d76f3: OUTPUT«alive␤»
jnthn rakudo: say 42.WHAT
p6eval rakudo 9d76f3: OUTPUT«Int()␤»
jnthn rakudo: say &sin.PARROT
p6eval rakudo 9d76f3: OUTPUT«Perl6MultiSub␤»
jnthn rakudo: say &atan2.PARROT
p6eval rakudo 9d76f3: OUTPUT«Perl6MultiSub␤»
jnthn Hmm
rakudo: say &atan2.candidates.elems 10:24
rakudo: say &sin.candidates.elems
p6eval rakudo 9d76f3: OUTPUT«1␤»
rakudo 9d76f3: OUTPUT«2␤»
mathw is surprised 10:25
apparently Attributes::Handler doesn't use no warnings 'redefine'
Perl 5 is weird
jnthn colomon: That above suggests it's missing the proto.
10:26 meppl joined
jnthn colomon: Since (rightly or wrongly) it'd show up as an extra candidate. 10:26
mathw Or is it that I should've used that
doh
it's my fault isn't it
mathw hides in the corner
colomon jnthn: but the proto is there, right? I didn't dream adding it? 10:27
colomon wonders if there is still an "is export" floating around causing trouble....
but that's it, Num.atan2 is export 10:28
s/but/bet/ 10:29
jnthn Oddness.
ah
colomon give me a min
colomon would swear his son gained five pounds over the weekend.... 10:32
bingo! 10:33
"is export" considered evil
moritz_ colomon: maybe put your wisdom into docs/guide_to_setting.pod?
10:34 hitsubunnu joined
pugs_svn r28854 | moritz++ | [t/spec] more unfudge 10:34
10:34 hitsubunnu joined 10:37 edgar joined, Woodi joined
colomon jnthn: getting rid of the "is export" made atan2 work okay when called with named args by hand, but the test suit still has issues. 10:39
jnthn colomon: Oh hm....but is getting rid of "is export" the Right Thing...
edgar exit
jnthn fail
colomon may take me a while to unsort them, typing very slow with surprisingly heavy 13 month old cradled in one arm 10:40
moritz_ jnthn: it's our accepted workaround for now
jnthn: since 'is export' kills multi dispatch right now 10:41
feel free to correct that, though :-)
up to 11 closed tickets, if I counted correctly 10:42
colomon :)
jnthn moritz_: I suspect that may well be a bug.
(closing tickets)++ 10:43
moritz_: Including one of the oldest ones, IIRC. ;-)
moritz_ aye, filed by diakopter++ 10:44
dalek p-rx: 7591d1c | pmichaud++ | src/ (4 files):
Add list associativity.
10:44 kent\\n joined
colomon ah, atan2 test suite problem was that I removed the default value from x in an attempt to get things working last night. 10:44
jnthn ...what on earth time is in in pmichaud++'s timezone?! :-)
colomon 5:44am?
moritz_ you don't want to know :-)
10:45 mikehh joined
moritz_ rakudo: say pi 10:48
p6eval rakudo 9d76f3: OUTPUT«3.14159265358979␤»
colomon rakudo: say pi.Rat 10:49
p6eval rakudo 9d76f3: OUTPUT«3.14159292035398␤»
colomon rakudo: say pi.Rat.perl 10:50
p6eval rakudo 9d76f3: OUTPUT«355/113␤»
10:50 Praveen_ joined
jnthn masak: did you manage to figure out what to remove? 10:51
moritz_ rakudo: say pi.Rat(1e-6).perl 10:52
p6eval rakudo 9d76f3: OUTPUT«355/113␤»
moritz_ rakudo: say pi.Rat(1e-8).perl
p6eval rakudo 9d76f3: OUTPUT«103993/33102␤»
nbrown jnthn: thanks for the tip, I'm using the parrot reccomended by build\\PARROT_REVISION (41901
is that too old?
jnthn masak: oh crap, I may have sent you on a wild goose chase... 10:53
masak: It appears that we already had an array shared between all attributes for handles thingies. :-/
oh, no, that couldn't have worked...
hmm...how on earth did it work... 10:55
:-)
masak: ah well, don't worry about it :-)
nbrown: No, that sounds right... :-S
You're using --gen-parrot, yes?
nbrown jnthn: yep
jnthn Oddness.
nbrown jnthn: also I can't update parrot right now, I'm getting weird svn errors. So that's why I was asking 10:56
"SSL negotiation failed"
jnthn nbrown: Glancing the Parrot channel, I think you're not the only one. 10:57
nbrown jnthn: ok, I have to get to work. So I'll check in tonight, just wanted to say thanks and make sure I wasn't being a total idiot 10:59
jnthn OK. Let us know if updating Parrot (when the svn works again) doesn't help. :-)
nbrown will do. Have a great day 11:00
mathw realises he has some tuits tomorrow 11:04
I've got the day off work
I need to clean the house and go to aikido, but I should be able to do an afternoon of Perl 6 :D
Or maybe the morning
jnthn is off to the Italian Perl Workshop on Thursday o/ 11:06
moritz_ jnthn: make sure to bother tim bunce about DBDI :-) 11:07
and have fun!
jnthn moritz_: Yes, that was in my plans. ;-) 11:08
mathw yay!
are you giving a talk?
jnthn 2, even. 11:09
:-)
jnthn looks a the Perl 5 he just wrote, and realizes how much shorter it coulda been in Perl 6. :-) 11:11
mathw I do that a lot 11:12
what're your subjects
I assume you're talking about how awesome perl 6 is?
jnthn They're basically the same as I gave at YAPC::Asia.
But with some corrections/tweaks/updates.
Which in theory would make preparing easy. 11:13
However in reality, the slides were half English, half Japanese.
mathw excellent
jnthn So I now need to re-organize them to just be in one language.
has_a ('original_image' => from_table => 'tempimages', 11:14
er, oops 11:15
mathw heh
obviously that's right-associative
jnthn It's Perl 5, it's just a list. ;-) 11:16
mathw original_image => (from_table => 'tempimages')
boo
jnthn But yes.
mathw spoiled it now :(
jnthn Actually I may port my web framework to Perl 6 some day.
11:16 payload joined
mathw :) 11:16
11:17 quux joined
jnthn I'd probably open source it too...and fix all the things I dislike about it. 11:17
mathw \\o/
carlin quux: say I can see
quux I can see
carlin \\o/
11:17 pnate joined
jnthn quux: buy Jonathan a beer 11:18
...aww.
carlin quux: say Sure thing but you have to pay
quux Sure thing but you have to pay
moritz_ quux: say rakudo: say "hi"
quux rakudo: say "hi"
p6eval rakudo 9d76f3: OUTPUT«hi␤»
colomon is wondering how his changes to atan2 could have broken t/spec/S12-attributes/delegation.t 11:20
colomon is wondering if he should blame "git pull" and masak's last change... 11:21
jnthn colomon: Probably masak's may have, but also you may have out of date delegation.t
(I saw masak commit to both)
colomon That would certainly make for a simple fix! :) 11:22
carlin quux uses a hack to recv to make recv(Int) work, so it can see things before the server disconnects. I'll try and write a decent way of doing it this weekend. 11:23
colomon jnthn: nope, even after svn up delegation.t fails -- planned 66 tests but ran 53 11:26
jnthn colomon: Oh. Did masak forget to change the count? 11:28
When removing tests?
moritz_ if so, just change it to plan *; ... done_testing();
colomon plan * FTW 11:32
11:33 masq joined
masq Hey. 11:33
pugs_svn r28855 | colomon++ | [t/spec] Switch to plan *.
Su-Shee masq: hi. ;) 11:34
masak hm. I did change the count, but in a file I didn't commit. :/ 11:35
jnthn masak++ fail 11:36
masak ;/
colomon Is dalek down? I pushed my atan2 change three minutes ago.... 11:37
pugs_svn r28856 | colomon++ | [t/spec] Unskip atan2 tests that now work. 11:39
11:40 payload joined
colomon rakudo: say pi 11:40
p6eval rakudo 9d76f3: OUTPUT«3.14159265358979␤»
11:42 pnate2 joined
dalek kudo: 1ab0699 | (Solomon Foster)++ | src/setting/ (2 files):
Remove troublesome atan2 is export declarations to make atan2 work properly.
11:42
colomon oh hey, there it is. 11:45
rakudo: say pi 11:50
p6eval rakudo 9d76f3: OUTPUT«3.14159265358979␤»
11:53 pnate2 joined
masak rakudo: sub foo($a, $a) { say $a }; foo(42, 5) 11:58
p6eval rakudo 9d76f3: OUTPUT«5␤»
masak jnthn: your new binder has no complaints about that one? 11:59
hm, maybe it's more of a parsing issue...
12:00 payload joined
jnthn masak: That one shouldn't really make it so far as the binder, I suspect. 12:01
std: sub foo($a, $a) { say $a }; foo(42, 5)
p6eval std 28856: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (from line 1) at /tmp/Qmv8r0g2jT line 1:␤------> [32msub foo($a, [33m⏏[31m$a) { say $a }; foo(42, 5)[0m␤ok 00:02 114m␤»
jnthn Oh, only a warning.
mberends carlin: please show your recv() hack, however crude, before the weekend! 12:02
masak jnthn: yes; which makes it interesting to speculate about the semantics of it. 12:03
jnthn: I submitted a ticket the other day which hinges on that.
jnthn masak: I'm not sure. If it's an error, it should not make it so far as the binder. If it's not an error, I think the binder is handling it correctly. 12:04
That is, the spec says we bind left to right, and you're getting the right-most value.
12:06 takadonet joined
takadonet morning all 12:06
12:06 am0c joined
masak rakudo: sub foo(Str $x, Int $x) { say $x }; foo("OH HAI", 42) 12:06
p6eval rakudo 9d76f3: OUTPUT«42␤»
masak takadonet: \\o
rakudo: sub foo(Str :$x, Int :$x) { say $x }; foo(:x('OH HAI'), :x(42)) 12:07
p6eval rakudo 9d76f3: OUTPUT«Nominal type check failed for parameter '$x'; expected Str but got Int instead␤in Main (file src/gen_setting.pm, line 288)␤»
takadonet masak: how are you doing?
masak takadonet: I'm full of sushi! \\o/
takadonet hehe 12:08
masak so, very good, thanks.
takadonet: and you?
takadonet takadonet: just got to work and ready to write some more perl5 code
masak talking to yourself again? :P 12:09
anyway, sounds good.
Perl 5 is a great language.
takadonet hehe 12:10
just noticed that
masak: perl 5 really makes bioinformatics a lot easier
masak nod.
rakudo: { &^c("$^a, $^b") }.("g'day", "perl6ers", &say) 12:11
p6eval rakudo 9d76f3: OUTPUT«Nominal type check failed for parameter 'c'; expected Callable but got Multi instead␤in Main (file src/gen_setting.pm, line 288)␤»
masak jnthn: what's a "nominal type check"?
12:12 envi^home joined
jnthn masak: Constrast: 12:14
rakudo: sub foo(Int $x where { $x > 42 }) { say "ok" }; foo(4.2)
rakudo: sub foo(Int $x where { $x > 42 }) { say "ok" }; foo(41)
p6eval rakudo 9d76f3: OUTPUT«Nominal type check failed for parameter '$x'; expected Int but got Num instead␤in Main (file src/gen_setting.pm, line 288)␤»
rakudo 9d76f3: OUTPUT«Constraint type check failed for parameter '$x'␤in Main (file src/gen_setting.pm, line 288)␤»
masak ah. gotcha. 12:15
jnthn I think distinguishing them helps give a better error.
masak I parsed 'nominal' wrongly as meaning 'something we only say we're doing'.
jnthn Before we used to get odd things like "got Int, but expected Int"
carlin mberends: gist.github.com/214213 12:16
bpetering jnthn: that would be LTA :)
carlin It is very wrong :-)
jnthn Yes, that's why I fixed it. :-) 12:17
bpetering masak: yay for sushi! :D
masak \\o/
bpetering jnthn: Programmers are dealing with the two most destructive forces etc etc - so they should have nice helpful error messages to keep their stress levels down. :) 12:18
jnthn++ # Thank you!
hi masak-san 12:19
mberends carlin: thanks anyway, it's a nice starting point for some improvement :)
jnthn We can haz Perl 6 ircbot? :-) 12:20
.oO( it's gotta be smarter than purl )
12:21 lumi joined
masak hi bpetering 先生 12:24
bpetering no tests yet :( 12:26
but i have been using ruby's CSV and am inclined to agree with your reader/writer split 12:27
masak bpetering: cool.
bpetering: looking forward to picking up that trail again.
bpetering: but no worries in the meantime; I, too, have tasks looking for tuits... 12:28
bpetering Don't we all? 12:30
masak I mean Perl 6 stuff.
bpetering Ah. 12:31
mathw has some spare tuits up for grabs tomorrow...
masak I'll have some tonight, but they are ear-marked for Web.pm. 12:32
mathw I don't know what to do with mine tomorrow 12:33
I need to decide, or I'll fritter them away playing with the cat
12:37 kent\\n joined
jnthn -> slovak, bbl 12:38
bpetering this isn't a troll - why is Perl 6 called "Perl 6", and not something else entirely? 12:42
because I see the language as being in a different category to the previous 5 Perls
masak bpetering: since you ask so nicely... :)
mathw Because it's the next version of Perl
12:42 lumi joined
masak bpetering: I don't see it as not being a version of Perl. 12:43
just because it builds a new compiler/runloop doesn't make it not Perl.
12:43 ruoso joined
bpetering masak: I accept that... 12:44
but isn't a mutable grammar a rather fundamental change?
i.e. - does any other language around today have that? 12:45
Su-Shee I think, user wording will decide after a few years, wether it's still called perl or if it's going to be rakudo or even rakudo perl..
mathw Lisp
It's Perl
It still has Perl's principles in it 12:46
It's just a chance to do something even more like Perl than Perl 5
bpetering mathw: ah ok, that has some weight 12:47
masak Perl 6 is the logical and historical conclusion of Perl 5, but Perl 5 will probably never get there, or will get there partially and unsatisfactorily.
s/conclusion/consequence/
mathw Perl 6 is a massive shift, because Larry said let's go ditch backwards compatibility this time
But it's a much, much better language as a result 12:48
masak yes; ditching backwards compatibility is one step more drastic than just forking off and working on the side.
mathw Still feels like Perl to me though
masak same here.
mathw The syntax is (mostly) familiar and comfortable 12:49
bpetering Su-Shee: but "Perl 6" is a spec, not just the rakudo implementation
masak and I'm not at all ruling out a Perl 7 in my lifetime.
mathw The crazy levels of power and long lengths of rope with which to hang yourself are still there
It's got a kick-ass awesome regexp language to go with it
masak it's just that it's nuclear chainsaw rope this time. :P
12:49 pnate joined
Su-Shee bpetering: yes, but usally users start naming things by talking about them and we'll see if rakudo gets to be synonym with "perl 6" 12:50
bpetering: if I talk to people about Perl 6, I usally say things like "well, when pugs perl started.." or "in rakudo perl, there's ..." 12:51
bpetering Su-Shee: you mean like how people name the PC case "the hard drive"? :) (does that happen in germany too?)
Su-Shee bpetering: they call it often "the calculator" (literally translated) :) 12:52
mathw bpetering: or when people say 'PC' but they don't mean to include things running OS X or Linux or BeOS
12:53 SmokeMachine joined
masak I often manage, just barely, to give a strained smile to people who call the chassi of the computer 'the hard drive', and then look around, seeking approval. 12:53
mathw well 12:54
at least they've heard of hard drives
and have connected it with the big box
bpetering hey, it looks hard
mathw 'What web browser do you use?' 'Windows'
masak :P
mathw
.oO(Ah, so Internet Explorer then)
Su-Shee masak: don't you think Perl 7 will be the natural order if new releases show up?
mathw There'll be a Perl 7 one day I expect 12:55
masak as this article points out, it.slashdot.org/article.pl?sid=09/05/18/134222 -- you don't call the auto shop an tell them that your engine is broken when your radio breaks.
mathw But hopefully not for some time, Perl 6 should be quite flexible in the long term
Especially since you can add new syntax :)
moritz_ bpetering: actually Perl 5 also has mutable grammar, in a very limited way 12:56
bpetering masak: no, but theres not the "geek stigma" with cars. it's cool to look dumb about computers.
masak Su-Shee: I'd expect Perl 7 to be at least as disruptive as Perl 6. and probably as long in the coming, too.
moritz_ bpetering: adding prototypes to subroutines does change the grammar
mathw moritz_: that barely counts though
Su-Shee masak: hm. Perl 7 codenamed "bio perl" :)
mathw and there are all kinds of weird things with prototypes
Su-Shee
.oO(quantum perl.)
12:57
masak Su-Shee: "coming soon to a pet near you!"
bpetering masak: :P
mathw Su-Shee: why not? There's Quantum ML...
Su-Shee masak: oooh REAL perl-lolcatz? :)
masak in Perl 7, junctions will run on actual qubit superpositions.
mathw One day, if we ever get quantum computers, we'll want to run Perl on quantum machines
moritz_ bpetering: one more thing... "Perl" is not only defined by the language, but by the underlying principle - timtowtdi, "easy things should be simple, hard things possible", DWIM, natural language readability, huffman coding etc 12:58
mathw yes see we've already got some of the structures in place
we'll need qubit rotate and things though
masak "did you remove the file?" -- "um, dunno, the wave hasn't collapsed yet".
moritz_ bpetering: we keep these principles high iin Perl 6, even if the language itself is quite different, in some way
mathw knows little about quantum computing theory, but sat in on a few talks on it when he was trying to get a PhD
bpetering moritz_: regarding the last point, agree completely 12:59
*2 points
mathw bpetering: that's what I was trying to say about Perl 6 still being Perl 13:00
13:00 gfldex joined
moritz_ I should blog about that 13:00
some day[tm]
bpetering mathw: that's what i said had some weight :) 13:01
PerlJam good $localtime all 13:02
bpetering moritz_: doesn't adding prototypes to subs just change how things are parsed - not actually change the grammar proper?
masak good $lolcat-time 13:03
bpetering good time quanta
mathw I bought me a Wispa
moritz_ bpetering: when you have sub foo(&), the { in 'foo {' is parsed a block, not as a hashref, leading to different grammar rules being applied to that piece of text 13:04
mathw But I haznt eated it
moritz_ bpetering: to me that looks very much like "change the grammar"
it's a small change, but it's one, afaict
bpetering moritz_: wouldn't you distinguish between changing which grammar rules are applied and changing the grammar itself?
moritz_ bpetering: I would, if it served my argument :-) 13:05
bpetering moritz_: and words mean what you define them to mean ;)
moritz_ :-)
but you're right, it's a rather drastic contrast to what Perl 6 offers 13:06
bpetering well, i fully accept that Perl 6 is Perl in the sense of "this is where we've been heading and want to go" 13:08
and that it "feels the same"
and has the TIMTOWDI spirit
y'all sense a 'but' coming? ;) 13:09
mathw therefore
it's Perl
nope
you're completely convinced
13:09 synth joined
mathw and now you're going to go out and preach it to the world 13:10
bpetering O_O
yes. master.
mathw and singlehandedly remove all misconceptions about Perl 6
13:10 NorwayGeek joined
PerlJam you'd be the Johnny Appleseed of Perl 6 memes 13:10
bpetering "Perl 6 even does your dishes. After all, it has a kitchen sink." 13:11
mathw class Dishwasher does Dishes { ... }
PerlJam sounds like the beginning of a good example for the book 13:12
mathw Bit too cute
PerlJam mathw: See Camelia
bpetering the but exists mainly on a technological level. 13:13
mathw PerlJam: also too cute 13:14
bpetering i mean, isn't it a "next-generation" language as opposed to a "this-generation" language?
moritz_ yes
frettled Camelia isn't too cute. If she had been a pony, she might have been too cute.
Now I suddenly see small plasticky packages of My Little Camelia. 13:15
bpetering so isn't it bad marketing to not reflect that difference in the name? 13:16
mathw bpetering: But the number went from 5 to 6, and we don't really want people to think this is a hard new language 13:17
moritz_ bpetering: well, I don't see this kind of marketing as a problem 13:18
masak naming it "Perl" is a pretty intuitive way to indicate that it's still Perl.
moritz_ bpetering: when we have something to show to the masses, they'll see that Perl 6 rocks, technologically
bpetering: the trouble is more to convince them it actually exist and is coming
bpetering masak: true... and Perl6/Perl7 has the whole penultimate-perfect / perfect language thing going for it 13:20
moritz_: i guess i'm worried that people won't bother looking because they associate Perl without write-once-read-never and all that other nonsense 13:21
s/without/with/
13:21 NorwayGeek joined
Su-Shee bpetering: in the minute that there is some shiny project written in Pler 6 they'll look at it. 13:22
bpetering Su-Shee: now that argument i buy.
we need a killer app. 13:23
moritz_ we need many killer apps :-)
Su-Shee bpetering: there are also many Perl lovers really waiting for a Perl 6 coming up.
moritz_ and I believe that grammars are a killer app in itself 13:24
Su-Shee also, I personally think it depends on the books and documentation - if that's as nice as with Perl 5, that will be another good argument.
masak something which isn't an app cannot be a killer app.
bpetering moritz_: one has historically been sufficient :)
Su-Shee moritz_: indeed. I already made a list what should be ported from our office code.
moritz_ bpetering: aye :-)
Su-Shee also, I believe the "smoothness" of coding Perl 6 will be convincing. 13:25
Woodi just wonders if p6 will be scripting language for unix admins...
parrot is big thing... 13:26
Su-Shee Woodi: why not? consider a domain grammar for example and you don't have to use classes and roles, if you just need the typical "script"
Woodi Su-Shee: i think shift was made from scripting language to dynamic...
sa not so good for fast tools... 13:27
Woodi just asks...
PerlJam Woodi: fast, powerful, expressive ... pick two ;) 13:28
moritz_ how are scripting languages not dynamic, or the other way round?
Su-Shee Woodi: hm, have of my script don't really require "speed" as a main concern..
bpetering moritz_: re: convincing ppl it exists and is coming: a "try rakudo" (a la "_why's try ruby") would go a long way towards doing that - globally 13:29
Su-Shee moritz_: I think he means the underlying parrot.
masak Woodi: there are some one-liners that I already prefer to write in Perl 6 rather than Perl 5. it's not only speed, but also ease of use, and familiarity, that comes into play.
PerlJam bpetering: When Rakudo* is released, that's the time to have a "try rakudo"
Su-Shee nevertheless, I agree that Perl 6 also should be fast some day. 13:30
frettled Woodi: those who want fast perl-ish tools may still be using Perl 4
moritz_ somebody just needs to write it
masak bpetering: we're working hard to have a 'Try Rakudo' ready for April.
Woodi is #!/usr/bin/perl6-with-parrot-on_boards is realy what primary perl users (admins) need ?
bpetering PerlJam: why not simultaneous?
frettled Woodi: for some misunderstood concept of fast, perhaps.
bpetering masak: ah, wasn't aware - how's it progressing?
frettled You keep losing your kanelbulle. 13:31
masak frettled: I'm a log-outer.
PerlJam bpetering: I didn't say "after" did I?
moritz_ bpetering: we'll have an announcement on Friday
frettled masak: and not log-inner :D
masak frettled: well, that too. :D
bpetering PerlJam: no, my apologies. I think we're in agreement. 13:32
PerlJam bpetering: no worries :)
moritz_ bpetering: we're basically writing a book that introduces programmers to Perl 6, based on real-world examples
bpetering: /join #perl6book for details :-)
masak bpetering: it's awaiting further changes to Rakudo, I think. there's no use putting one online with the one-line-one-compilation-unit unfeature still in place, for example. we want to parade Perl 6, not shame it. 13:33
Woodi love p6 new features too... was studied for monads last 2 days :) just need that everything in command line :)
bpetering moritz_: great news - i shall :)
masak bpetering: after that, it's just the little matter of duplicating the wildly insane hack that made "Try Pugs" work. :)
Su-Shee just needs working dbi with postgres and more speed and then I change the office code. :) 13:34
PerlJam Su-Shee: how much more speed? (the other two are easy by comparison :)
masak Su-Shee: Squerl has SQLite, and Tene++ is allegedly working on MySQL. no Postgres yet...
bpetering masak: any reason some of _why's TR code couldn't be put to use? (or are you talking purely backend?)
masak bpetering: maybe it could. I didn't realize it was public. 13:35
bpetering: but we still retain the Try Pugs code.
bpetering github.com/whymirror/TryRuby
masak has a look
"The current implementation doesn't use persistent processes like irb. What it does is it stores all previous successfully run commands in session['previous_commands'], and runs them all first (disabling stdout)." 13:37
eeew.
what if I run along for loop -- then all commands after that will be really slow... :/ 13:38
no, a real solution basically has to be talking to a running Rakudo process, exchanging input/output in some way.
Su-Shee PerlJam: Until I tested real segments of our code in 5 and 6, I can't be really precise, but my collegue tried to port our stuff to ruby and python 2 years ago which was too slow. Don't know the details yet, though.
bpetering hmm... that impl may be more in line with the easier nature of try ruby. are we aiming for something more sophisticated with Try Rakudo? 13:39
what are we aiming for?
masak good question. 13:40
I see two use cases:
Su-Shee PerlJam: and the new code already was a clean-up version - we surely have speed deficits because of "old, crappy hacks, don't do that again."
masak (1) introduce newcomers to Perl 6. needs a good interactive course, like the one in Try Ruby.
(2) allow anyone to write arbitrary Perl 6 commands. 13:41
bpetering masak: s/arbitrary/arbitrary modulo security concerns/
masak of course.
sandboxed.
bpetering (3) convince doubters Perl 6 is not vaporware 13:43
Su-Shee I would love to see 1) - but like taking the input of the user and suggesting better/other features on that base :)
like if a user did print "hello world"; suggesting him to try say "hello world"; - but nicer.
PerlJam Su-Shee: interactive Perl Best Practices?
Su-Shee PerlJam: cool idea. 13:44
bpetering Sounds like a great idea... :)
Su-Shee like a code thesaurus :)
bpetering and also shows off the best bits of Perl 6? ("Oh hey, I can do that?")
Su-Shee would probably be also very inspiring if you need a new idea :) 13:45
bpetering Try Ruby didn't have any of that "suggest a better solution" stuff since it was all scripted - IIRC 13:46
PerlJam perl6> sub fact ($n) { return 0 if $n < 2; return $n * fact($n-1); }
Perhaps you wanted [*] 1..$n ?
:-) 13:47
bpetering \\o/
mathw Perl 6 Cookbook
PerlJam (yes, I notice that my fact sub is buggy)
Su-Shee PerlJam: well yes - though Perl 6 would be probably a detailed timtoady-list like "well, maybe you like this better.. or try that one.. or do you need it role-based? and how about an entire class..." ;) 13:48
PerlJam Su-Shee: "I notice that you're inheritance hierarchy is 7 levels deep, are you *sure* you don't want to use L<delegation> or L<roles> to flatten it somewhat?" 13:49
Su-Shee: ah, that would give more voice to Camelia! 13:50
When Perl 6 talks to you, it uses Camelia's voice. 13:51
masak rakudo: ((Temporal::DateTime.new(date => Temporal::Date.new(:year(2010), :month(4), :day(1)), time => Temporal::Time.new(:hour(0), :minute(0), :second(0))).epoch - time) / (60 * 60 * 24)).ceiling.fmt("%d days left until April!").say
p6eval rakudo 1ab069: OUTPUT«Use of uninitialized value␤Use of uninitialized value␤Use of uninitialized value␤Use of uninitialized value␤Use of uninitialized value␤163 days left until April!␤»
masak a lot can happen in 163 days. 13:52
but we're the ones who need to do it.
bpetering masak: can it ever
moritz_ aye
and I'm focusing on the book for now
mathw std: class A { method m($invocant where { ~$_ eq "Hello" }:) { ... } }
p6eval std 28856: OUTPUT«ok 00:02 115m␤»
mathw whoa 13:53
moritz_ rakudo: class A { method m($invocant where { ~$_ eq "Hello" }:) { say self } };
p6eval rakudo 1ab069: ( no output )
moritz_ rakudo: class A { method m($invocant where { ~$_ eq "Hello" }:) { say self } }; A.new.m
p6eval rakudo 1ab069: OUTPUT«A()<0x2ac9b531ad20>␤»
moritz_ so it's just ignored
mathw The reason I asked STD is that I didn't think Rakudo would already do it 13:54
PerlJam That's a strange place to put an emoticon.
mathw I wanted to know if it's conceivable
bpetering PerlJam: that's what i was thinking ... err, :)
13:55 KyleHa joined 13:56 mikehh joined
bpetering good night all 13:58
mathw night
PerlJam g'night
bpetering hoping to be free of $workproj and contributing a bit more soon. :)
masak bpetering: 'night 13:59
14:00 meppl joined 14:12 ruoso joined 14:18 hexmode left, hercynium joined
moritz_ rakudo: sub f1 ($a, $b) { WHAT($a) ~ WHAT($b) }; say f1(a => 42, 23) 14:20
p6eval rakudo 1ab069: OUTPUT«Str()␤»
moritz_ wtf?
rakudo: sub f1 ($a, $b) { $a.WHAT ~ $b.WHAT }; say f1(a => 42, 23) 14:21
p6eval rakudo 1ab069: OUTPUT«Int()Int()␤»
masak what happened there in the first one?
moritz_ I have no idea. 14:22
masak: care to submit? :-)
masak submits
jnthn back
14:23 nihiliad joined
mathw jnthn: just as moritz_ finds you another exciting bug 14:23
moritz_ rakudo: sub f1 ($a, $b) { $a.WHAT ~ $b.WHAT }; say f1(:!a, 23)
jnthn uh, wtf
p6eval rakudo 1ab069: OUTPUT«Int()Int()␤»
jnthn Why on earth would it matter that one is a Str and the other not?
moritz_ and it's only one Str() 14:24
jnthn: btw that's also wrong
:a and :!a both construct a bool
jnthn yes, but that's nothing newly wrong
We've had those wrong for months.
(and a ticket)
moritz_ rakudo: sub f1 ($a, $b) { $a.WHAT ~ $b.WHAT }; say f1(:a, 23)
p6eval rakudo 1ab069: OUTPUT«Int()Int()␤»
moritz_ oh.
jnthn Yup, should be Bool()Int() there. 14:25
rakudo: sub f1 ($a, $b) { WHAT($a) ~ WHAT($b) }; say f1(a => 42, 23)
p6eval rakudo 1ab069: OUTPUT«Str()␤»
jnthn rakudo: sub f1 ($a, $b) { WHAT($a) ~ WHAT($b) }; say f1(23, a => 42) 14:26
p6eval rakudo 1ab069: OUTPUT«Str()␤»
moritz_ rakudo: sub f1 ($a, $b) { WHAT($a).perl ~ ' ' ~ WHAT($b).perl }; say f1(23, a => 42)
p6eval rakudo 1ab069: OUTPUT«Str()␤»
moritz_ parsing bug with WHAT()?
jnthn moritz_: my $a = 42; my $b = 23; say WHAT($a) ~ WHAT($b) 14:27
oh
rakudo: my $a = 42; my $b = 23; say WHAT($a) ~ WHAT($b)
moritz_ rakudo: sub w($x) { $x.WHAT }; sub f1 ($a, $b) { w($a) ~ w($b) }; say f1(a => 42, 23)
masak mathw: where-clauses on invocants... interesting.
p6eval rakudo 1ab069: OUTPUT«Str()␤»
rakudo 1ab069: OUTPUT«Int()Int()␤»
moritz_ yep
masak mathw: some kind of method for only certain instances.
jnthn moritz_: It's nothing to do with calling, it seems.
mathw masak: well they were talking about some unholy role concoction thing on p6l, so the thing that immediately sprang to my mind was 'where clause'
moritz_ rakudo: sub w($x) { WHAT($x) }; sub f1 ($a, $b) { w($a) ~ w($b) }; say f1(a => 42, 23)
p6eval rakudo 1ab069: OUTPUT«Int()Int()␤» 14:28
masak mathw: :)
moritz_ jnthn: my bet is parsing issues with WHAT()
masak mathw: it's a really interesting question, is all.
mathw masak: so I thought I'd see if the idea of a where clause on the invocant was entirely forbidden, and it seems it's not... yet
jnthn std: class XXX { method foo($x where { .defined }: $arg) { ... } }
p6eval std 28856: OUTPUT«ok 00:01 109m␤»
jnthn Hmm
masak :)
mathw jnthn: rakudo appears to ignore them completely
jnthn I'd thought that was forbidden.
mathw: Well, yes... 14:29
masak apparently not.
mathw jnthn: not even saying they're wrong
jnthn mathw: My expectation was std would refuse it too.
So I didn't bother to handle it in the binder.
masak it feels slightly spooky for some reason.
jnthn However, std seems OK with it.
The thing is that at present we're handling the invocant out of band-ish.
mathw I was led to the idea by the p6l thread on unusual invocants
I really have no idea if it's possible or desirable to handle it 14:30
jnthn It's not a big deal to make it work. 14:31
moritz_ another ticket to close, this time by ruoso++
jnthn Or at least, shouldn't be.
I just hadn't expected we'd need to, that's all.
ruoso which onw?
mathw jnthn: Well it's possible I managed to uncover a use for it, so... 14:32
moritz_ ruoso: rt.perl.org/rt3/Ticket/Display.html?id=64344
pugs_svn r28857 | moritz++ | [t/spec] unfudge some tests, and correct some in pairs.t
mathw Although I do think some of the speculation about multiple role composition is getting a little out of hand
jnthn I've not had time to read that thread yet. 14:33
And it keeps on growing.
14:33 mikehh joined
PerlJam jnthn: also, I think it has strayed from the original question quite a bit. 14:33
jnthn It's of interest, but I suspect there's going to be a lot of the usual over-complicated suggestions that such threads tend to bring up. 14:34
moritz_ coming up with simple suggestions is hard :-) 14:35
frettled at least _useful_ simple suggestions 14:36
I can do counter-productive simple suggestions any time.
mathw jnthn: yes, it's got a lot of overcomplicated suggestions and missing the point 14:45
IMO, anyway
14:46 __ash__ joined
jnthn Some good stuff comes out on p6l, but I find there's a lot of noise too. 14:47
Which I guess is somewhat to be expected.
14:48 alester joined
moritz_ has a radical suggestion which won't solve most of the problems at hand, but might give some food for thought 14:48
let's introduce another syntax for method calls which are resolved at compile time 14:49
$obj.\\foo or so, intentionally ugly
jnthn hmm
14:49 icwiener joined
moritz_ but that way a role can use its own version of a method 14:49
jnthn Yeahbut
moritz_ and doesn't accidentally get a wrong one through composition
jnthn When a method is composed into a class, it gets associated with that class' methods table. 14:50
However, it's still in a lexical scoping relationship with the role.
I'm wondering if we could say that a method from a role looks at other methods declared in its lexical scope before looking at others in the class it was composed into. 14:51
14:51 carlin_ joined
masak rakudo: role A { my $foo = "OH HAI"; method bar() { say $foo } }; class B does A {}; B.new.bar 14:51
jnthn Not sure if anyone proposed that yet.
p6eval rakudo 1ab069: OUTPUT«Null PMC access in type()␤in Main (file src/gen_setting.pm, line 288)␤»
PerlJam moritz_: don't we already have something like that? Can't we say something like $obj.Role::method() ?
masak haha!
jnthn shit...what?
masak gleefully submits rakudobug
jnthn PerlJam: Yes, you can.
moritz_ PerlJam: yes, but it's not quite what I proposed :-) 14:52
jnthn PerlJam: That'd be the Simple Solution. :-)
But I guess since that exists and people are having a discussion, they want something better or that solves a different problem.
PerlJam jnthn: my reading of the thread makes me think that people are looking for a technical solution to a social problem. 14:53
jnthn Heh. People trying to solve social problems by other means is nothing new.
moritz_ well, there's a problem it doesn't solve 14:54
jnthn points at UK government thinking an economic solution (make boos more expensive) will help reduce a social problem (binge drinking)...
moritz_ sometimes you want the role to call a method that's polymorphically resolved
and you can have that in two different roles
both want the same name
mathw jnthn: where mustard gas would be far more effective
moritz_ but you want to polymorph them to different names
=> kaboom
KyleHa moritz_++ # epic unfudging
jnthn++ # signature work 14:55
mathw moritz_: yes, that's largely where the thread went
jnthn hadn't seen polymorph used as a verb before.
;-)
mathw you have two roles with methods with the same name which do very different things
moritz_ KyleHa++ # marking tests with ticket numbers
mathw so... what do you do
does the role risk using the other role's version of the method when it calls it inside?
moritz_ KyleHa: that really helped... autounfudge.pl just throws out patches...
jnthn Yes. That's something that makes the case for compile time detection of collisions. The issue seems to be, how do you resolve this.
mathw (lexical scopey priority, that would be nice)
yeah 14:56
moritz_ KyleHa: which I can just grep for RT #\\d+
PerlJam mathw: also, the roles are opaque. You have to assume that you can't modify them directly :)
mathw PerlJam: yes
moritz_ KyleHa: and then I can close those tickets :-)
KyleHa moritz_: Excellent!
moritz_ found about 12 closable tickets that way
mathw PerlJam: the solution is for the class you're composing into to use containment instead of composition, maybe, but then you lose the typey goodness
so the specualtion ends up being around ways of reconciling these conflicts in a sane manner 14:57
jnthn Well, the problem seems to be not about the decision the class makes, but how that then affects the roles that have been composed when they want to call another method in the role, and assume it's their method.
mathw mmm
that too
PerlJam mathw: this is why it feels more like a social problem to me. The problem itself is probably a design smell.
moritz_ mathw: you can get the typey goodness with other features
mathw In which case what you said earlier about a role preferring its own methods to ones its composing class got from another role
moritz_: not if it has to pass ~~ Role1 and ~~Role2 but you can't compose them both without causing a mess 14:58
moritz_ std: class A provides Int { }
p6eval std 28857: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unable to parse class definition at /tmp/A9Ts5DmD8f line 1:␤------> [32mclass A [33m⏏[31mprovides Int { }[0m␤ expecting trait␤FAILED 00:02 104m␤»
mathw moritz_: but in that case maybe you've got design smell, as PerlJam says
moritz_ mathw: I thought there was a mechanism for that
mathw moritz_: you could play with their ACCEPTS maybe :P 14:59
moritz_ mathw: no, because that's called on the type being checked, not on your object
mathw moritz_: yeah so you play around with the type being checked
what else is monkey patching for?
moritz_ :-)
mathw can we monkey patch roles?
jnthn No, they're immutable.
mathw aaaw 15:00
jnthn That's one of the big differences between roles and classes.
mathw that's probably a good thing, actually
moritz_ in first approximation all computer memory is writable :-)
PerlJam Even if roles preferred their own method implementations, what recourse has the developer when he needs to provide his/her own implementation for that method that's present in two roles?
mathw moritz_: no, even I'm not going to open THAT can.
moritz_ mathw: :-)
15:00 ejs joined 15:01 Psyche^ joined
mathw PerlJam: point 15:01
15:01 snearch joined
mathw Ultimately I guess some role compositions are just going to be impossible 15:01
And we'll end up with a set of guidelines on designing roles to minimise conflicts
with the first rule being 'don't compose too many roles into your classes' 15:02
prefer containment to composition or inheritance
sounds familiar...
PerlJam mathw: tell that to Ovid :)
mathw PerlJam: I'm not going to try and tell Ovid anything unless I'm extremely awake
ooh
home time
[gone]
__ash__ roles may be immutable but they always have to be part of an object, you can monkey patch the object 15:03
jnthn __ash__: s/object/class/ but yes
15:04 ruoso joined, dakkar joined 15:05 hudnix joined
PerlJam __ash__: except that you have to somehow say "when you call *this* method, use Dog::bark, but when you call this other method, use Tree::bark" So you have to know where all of the bark() methods are called and provide implementations that DTRT 15:05
15:05 darkwolf joined
moritz_ 'Tree' doesn't sound like a good role anyway :-) 15:05
PerlJam stands very still and sways with the wind. 15:06
jnthn I does a tree.
slavik jnthn: environmentalist, eh?
jnthn If it sounds silly, it's probably not menat to be a role. :-)
slavik: No, I just have a plant fetish. 15:07
DarkWolf84 Hi #perl6
:)
jnthn hi DarkWolf84
slavik haha
jnthn Well, thought I'd branch out from the usual ones. 15:08
PerlJam jnthn: does that mean that vegetarians are really plant pornographers?
DarkWolf84 I tried the new rakudo and it's really fast
:)
jnthn DarkWolf84: Really fast, or really faster? ;-)
moritz_ compared to tree growth, sure :-)
DarkWolf84 jnthn++
jnthn moritz_: :-P 15:09
PerlJam It's fast in geologic time scales
Su-Shee *hihi* :)
jnthn oh hai, Su-Shee
Su-Shee did I mention that I love perl's documentation and hate confusingly written books? 15:10
DarkWolf84 rakudo: class A { method x { say hello; }} my $a = A.new; $a.x;
p6eval rakudo 1ab069: OUTPUT«Confused at line 2, near "my $a = A."␤in Main (file <unknown>, line <unknown>)␤»
jnthn DarkWolf84: Needs a semi after the }
moritz_ DarkWolf84: ; after }
PerlJam DarkWolf84: you need a semicolon
DarkWolf84 rakudo: class A { method x { say hello; }}; my $a = A.new; $a.x;
p6eval rakudo 1ab069: OUTPUT«Could not find non-existent sub hello␤in Main (file src/gen_setting.pm, line 288)␤»
PerlJam DarkWolf84: and there are no more barewords :)
jnthn you need quotes
DarkWolf84 oops 15:11
sorry
jnthn :-)
DarkWolf84 i forgot the ''
rakudo: class A { method x { say 'hello'; }} my $a = A.new; $a.x;
p6eval rakudo 1ab069: OUTPUT«Confused at line 2, near "my $a = A."␤in Main (file <unknown>, line <unknown>)␤»
__ash__ you also need a semi colon after the last class closing } 15:12
since your writing it all on one line for the eval bot to parse
15:12 pnate joined
__ash__ scary thought, putting all your code on 1 line 15:12
masak would you guys use a Schwartzian transform to emulate @array.pick(*) in Perl 5?
DarkWolf84 rakudo: class A { method x { say 'hello'; };}; my $a = A.new; $a.x;
p6eval rakudo 1ab069: OUTPUT«hello␤»
DarkWolf84 ok
moritz_ masak: no, just use List::Util::shuffle
PerlJam compiles rakudo and runs "make spectest" to see if there's any noticable speed improvement 15:13
masak moritz_: ok :)
15:13 silug joined
DarkWolf84 the REPL gives me "Re-declaration of type A at line 1, near "; my $a = " when I try this 15:13
__ash__ in the command line, it retains class declarations and subs 15:14
but not variables
so if you do class A { }; 2 times in a row you get that
you can do class A is also { ... };
the "is also" means your extending the current A class
DarkWolf84 now it gives me npmc 15:15
with is also
__ash__ npmc?
moritz_ the REPL... is not good 15:16
null PMC access
__ash__ oh, that
i wish those would be more descriptive at times, but i am sure tahts being worked on
jnthn Well, I can replace them with "Oh noes, Rakudo screwed up" 15:17
masak :)
DarkWolf84 maybe I have to bug report this 15:18
__ash__ jnthn: "and boom goes the dynamite"
gets my vote
DarkWolf84 jnthn: I like that
15:18 mikehh joined
DarkWolf84 :) 15:18
moritz_ jnthn: you can still print the rest of the stack trace after that
jnthn Yeah, somebody just went and merged this branch that got a load of tickets closed, so we need some new ones.
moritz_ rakudo: say 12/500 15:19
p6eval rakudo 1ab069: OUTPUT«0.024␤»
moritz_ it close about 2% of the tickets out there ;-)
*closed
a thorough sweep through RT might reveal even more 15:20
masak just need to merge 49 more branches, then. :)
jnthn OK, time for some hacking... 15:21
jnthn works on improving the new binder a bit
masak yay! 15:22
is there a Parrot release today?
[particle] masak: yes
moritz_ yes
dukeleto is the man, I think
masak and a Rakudo release in a couple of days.
jnthn Aye.
masak and a perl6book release after that. 15:23
jnthn Yeah, exciting times. ;-)
dukeleto wow, fun times
masak fun times!
PerlJam As I said yesterday, "Release week!"
masak x 3
that's enough release for anybody. :P
moritz_ PerlJam: did you already pick a PM group name?
PerlJam moritz_: Thousand Oaks
masak bele. 15:24
PerlJam For no particular reason other than they had a perl6 hackathon and I like the name :)
masak +1
jnthn
.oO( no, the "oh, branch out a bit" pun has already been made too many times already today )
moritz_ PerlJam: wfm
15:25 mikehh joined
Su-Shee moritz_: we should initiate a perl mongers group in 66706 Perl :) 15:28
moritz_ Su-Shee: heh :-)
Su-Shee (gee, how I would like a po box there.. :) 15:29
+much
moritz_ Su-Shee: when I placed some adsense ads on my blog once, I got all those "Hotels in Perl" ads
quite annoying
pmichaud good morning, #perl6 15:30
Su-Shee moritz_: yeah, same problem when I was googling "jobs perl" ;)
moritz_: I really didn't want the security guard job _in_ Perl. ;)
moritz_ Su-Shee: oh, I thought you'd fancy a job change once in a while :-) 15:31
jnthn morning, pmichaud
pmichaud++ # commits all night, still awake in the morning 15:32
moritz_ wonders if pmichaud is actually human and alive
jnthn moritz_: He appeared to be both at YAPC::EU... 15:33
masak morning, pmichaud
jnthn ...but that was some months ago now.
moritz_ well, could be some sekrit coding bot :-)
masak pmichaudbot!
it says something both about the Perl 6 community and its bots, that we constantly suspect each other of being bots, and it doesn't feel (1) improbable, (2) very degrading. 15:34
15:35 pmurias joined
jnthn Well, not until we start comparing people to purl.. 15:35
15:36 mikehh joined
PerlJam jnthn: earlier I was thinking it would be nice if rakudo's REPL was purl-like 15:36
masak jnthn: note the marked absence of purl on this channel...
PerlJam then you could say "no, class A { ... }
when you wanted to redefine a class
15:36 athomaso1 joined
jnthn masak: Yeah...I miss her *so* much. ;-) 15:37
masak no you don't. :)
jnthn "But class A is already defined, PerlJam"
masak *lol*
moritz_ :-)
Su-Shee are you fellows actually _gossiping_? ;) 15:38
15:38 zaphar_ps joined
moritz_ sure, why not? 15:38
PerlJam guys don't gossip as much as they commiserate 15:39
:)
Su-Shee because I've never read you gossiping before. ;)
moritz_ Su-Shee: you must be new here :-) 15:40
__ash__ REPL could use some improvements, it would be nice if you could do things on more than 1 line... and possibly retain variables
pmichaud REPL is likely to be fixed in nqp-rx
PerlJam __ash__: I think those are more than "it would be nice" things for April
pmichaud (and then ported into rakudo when we move rakudo to nqp-rx)
moritz_ there's a ROADMAP... :-) 15:41
diakopter wow. backlogging on J2ME Opera Mini took.... a _long_ time.
15:41 mikehh joined
moritz_ speaking of the ROADMAP, it seems that A. B. and C. are mostly done by now 15:42
pmichaud A is mostly done? 15:43
moritz_ in progress :-) 15:44
jnthn We can remove at least one priority 1 item now. ;-)
__ash__ where is the roadmap? is it on like rakudo.org ?
moritz_ __ash__: docs/ROADMAP in the repo
pmichaud we need a link to it on rakudo.org, though. 15:45
moritz_ aye
__ash__ ah, well i never read the docs, that will show me
moritz_ don't - jnthn's passwords are stored in there! 15:46
15:46 mikehh joined
[particle] so, i intended to do some rakudo hacking last week on vacation. 15:46
got my environment set up, made sure to have the latest repo pulls
*repos pulled.
moritz_ jnthn: do it!
[particle] and then, i found out, rakudo isn't building with msvc 15:47
PerlJam [particle]: sounds like something to hack on! :)
jnthn [particle]: That surprises me
moritz_ I thought jnthn builds with msvc?
jnthn [particle]: Given that, erm, that's what I build with. :-)
[particle] yes, if i had any msvc documentation with me, or access to the net, i would have hacked it
it's a manifest problem
jnthn [particle]: Wait, you run...Vista?
[particle] activestate perl, msvc2008, windows 7 x64 ultimate 15:48
jnthn oh, serves you right
[particle] note that perl and msvc are 32-bit
jnthn The problem doesn't manifest itself on XP.
;-)
[particle] jnthn: you use AS perl?
jnthn [particle]: Yeah
[particle] harumph
jnthn If it's a problem with the manifest though...
[particle] no
jnthn ...that explains why I've never seen it.
[particle] it's a problem creating the perl6.exe file 15:49
not the file named MANIFEST
during exe generation, there's a utility that footprints the binary
adds a list of dlls used or something, called a manifest
i'll do some research and get back to it when i catch up with work 15:50
jnthn [particle]: Yes, I understodo where the problem is... 15:51
[particle]: But I dont know how you fix it.
:-(
[particle] i'll post a list item, or ask rblashke directly 15:52
jnthn [particle]: I'm not sure what on earth they require a manifest like that for. :-/
OK, thanks. :-)
[particle] me neither, and not sure how to turn it off
jnthn I seem to recall that on Parrot, we had to actually make a manifest.
Before it'd work on Windows Fail Edition. 15:53
*Vista
[particle] yeah, i didn't have enough context while disconnected to fix it
and tuits were lower than expected, since playing with nieces and nephews is too much fun 15:54
dalek kudo: f76c57e | moritz++ | docs/ROADMAP:
[docs] update ROADMAP

  * biding positionals by name now works
jnthn [particle]: fun++ :-) 15:55
moritz_: Happily, Parrot's calling conventions were less of a block to Rakudo than we thought they'd be when we wrote the ROADMAP.
15:56 mikehh joined
jnthn Not sure what else we have in the roadmap that was marked as depending on 'em. 15:56
15:58 justatheory joined
dalek p-rx: 7451fb8 | pmichaud++ | src/ (3 files):
Allow nextterm specifier, nulltermish tokens.
16:00
PerlJam pmichaud: btw, you have a note in one of the files that O is the letter O and not the number zero. For the sake of an extra character you can eliminate that confusion I think and maybe make that subroutine a little more mnemonic. call it "OP" instead 16:01
pmichaud PerlJam: I'm following STD.pm there. 16:02
STD.pm stashes stuff in <O>
jnthn pmichaud: I didn't find <O( in STD.pm - what am I missing?
masak pmichaud: in docs/ROADMAP, mind if I change 'The Parrot Grammar Engine (PGE) will be undergoing some significant refactoring in summer 2009' to '...is currently being replaced by a parser written in NQP'?
pmichaud masak: +1
masak changes
jnthn pmichaud: oh, I found <O> 16:03
pmichaud jnthn: <O(...)> is my version of --> Additive
jnthn Aha, ok.
__ash__ what is nqp-rx? not quiet perl? some extension to it?
pmichaud ash: it's a new version of nqp that provides regex and grammar support
it also provides a new regex engine that is able to handle protoregexes and (eventually) longest token matching semantics
__ash__ ah, kk
pmichaud jnthn: p6 question.... if I have sub foo( --> XYZ ) { ... } is XYZ a type coercion or a constraint on the return value? 16:04
(I could look it up in S06, but it's easier to ask the implementer :-)
moritz_ thinks constraint 16:05
PerlJam thinks constraint too
let's take a vote! ;)
moritz_ The return type may also be put inside the parentheses:
sub NAME (PARAMS --> RETTYPE) {...}
S06/Named Subroutines/
PerlJam pmichaud: it may be easier to ask the implementor, but is it easier to actually get an answer? :)
pmichaud I suspect that STD.pm is using it as a coercion (more) 16:06
jnthn pmichaud: constraint
pmichaud at any rate, I decided to side-step the return-type issue in STD.pm altogether by introducing a <O(...)> subrule 16:07
jnthn Then STD is using it wrongly.
pmichaud so that instead of
token infix:sym<+> (--> Additive) { <sym> }
we end up with
token infix:sym<+> { <sym> <O( %additive )> } 16:08
jnthn Works for me.
pmichaud which sets the <O> named capture
jnthn *nod*
pmichaud (which is why it's called <O(...)> )
it also means we can do
jnthn Yeah, if STD is expecting it to coerce, it's not what the spec seems to indicate --> does.
moritz_
.oO( <O(...)> )
pmichaud token infix:sym<+> { <sym> <O( { %additive, :nextterm<something> } )> } 16:09
which allows us to easily mix-in special per-token operator flags.
instead of doing
16:10 quietfanatic joined
pmichaud token infix:sym<+> { <sym> { $<O><nextterm> := 'something' } } 16:10
anyway, this approach seemed a bit more straightforward to me than the return type approach; perhaps STD.pm will adopt something similar 16:11
jnthn Yeah, that is kinda nice.
pmichaud I'm going to keep this approach for the non-Rakudo languages that get built with nqp-rx, at any rate.
jnthn I suspect it's a bit easier to parse as well. 16:12
pmichaud since I don't have hash composers in nqp-rx yet, it actually uses strings 16:15
thus it ends up being
token infix:sym<+> { <sym> <O( q{ %additive, :nextterm<something> } )> }
but as a string the resulting hash is cached and re-used, so we aren't creating a new <O> hash for every operator that gets parsed :)
jnthn That could get costly if we did. 16:16
pmichaud yup
dalek kudo: 0a9860f | masak++ | docs/ROADMAP:
[docs/ROADMAP] updated wrt nqp-rx
16:17
pmichaud when we have constant hash composers, we can eliminate the q and it'll work out the same :)
jnthn Heh. I just got us to create a bunch less PMCs per dispatch, but it didn't actually win us much on performance. Better memory footprint though I guess...
pmichaud I've been coming up with all sorts of optimizations to add to PAST
jnthn Er, per binding, not per dispatch...
optimizations++ 16:18
pmichaud so we may get some big performance wins soonish
jnthn That'd be nice.
Did you see the performance win stats I blogged last night?
pmichaud I haven't read any blogs or email or backlogs or much of anything :)
jnthn See towards end of use.perl.org/~JonathanWorthington/journal/39772 16:19
pmichaud reading
PerlJam jnthn: where is your benchmark code? 16:20
pmichaud (reading whole article, not just end)
16:21 TopoMorto joined
jnthn PerlJam: tools/benchmark.pl 16:21
pmichaud jnthn++ # outstanding work
okay, short break here, then I might be ready to start on the new nqp implementation
I think I have the operator precedence parser finished :) 16:22
Tene jnthn: so "Startup: 76%" means that it starts up in 76% of the time, or startup time has been improved by 76%? 16:23
jnthn Tene: In 76% of the time we used to.
Tene: I did try to make that clear in the paragraph above the numbers, but evidently failed. :-) 16:24
Tene jnthn: ETOOMANYLETTERS 16:25
Maybe try it again without any vowels. Or with just the vowels. 16:26
masak or just the spaces between the words. 16:27
jnthn rakudo: say "The figures below are the percentage of time it now takes to run some micro-benchmarks on specific language constructs compared to before I started working on the signature and binding improvements. So for example, 10,000 method dispatches now take about 26% of the time they used to.".subst(/<[aeiou]>/, "", :g)
p6eval rakudo 1ab069: OUTPUT«Th fgrs blw r th prcntg f tm t nw tks t rn sm mcr-bnchmrks n spcfc lngg cnstrcts cmprd t bfr I strtd wrkng n th sgntr nd bndng mprvmnts. S fr xmpl, 10,000 mthd dsptchs nw tk bt 26% f th tm thy sd t.␤»
jnthn Tene: ^^, hope is clear now, kplzthnxbai
16:28 Confield joined
jnthn Who wants attributive parameters? 16:29
Meh. You're getting 'em anyway. 16:31
jnthn hackhackhacks
diakopter tries to get into hackhackhack mode
__ash__ jnthn what do you mean attributive parameters? 16:33
jnthn __ash__: method eat($!nom) { ... } # binds to the attribute instead of to a lexical
__ash__ ah, sweet, thats useful 16:34
jnthn \\o/ somebody wants!
PerlJam aren't they part of the spec anyway? 16:35
ergo, TimToady wants
__ash__ can you define a method as a mutating one? or how would you go about that?
jnthn PerlJam: Yes, they're part of the spec. :-)
__ash__ or does it just look up any ol' method on the object in question and assign the result to the variable 16:36
PerlJam __ash__: I think it looks up the method you named rather than just any method ;) 16:37
jnthn __ash__: If you try the eat($.nom) form then you'd better have used "is rw" on the attr. :-) 16:38
__ash__ PerlJam: that sounds more useful than my way of doing things
jnthn: most my classes are is rw by defualt these days, so i don't have to do it on every attr 16:39
well, i have to go to class, bbl 16:40
masak takes down 'writing "is rw" on a $.foo parameter when the corresponding attribute isn't rw' as another possible thing to check statically 16:41
jnthn masak: Hmm, I'm not sure what 'is rw" would mean in the context of an attributive parameter anyway. 16:42
masak: I mean, you're binding to the attribute.
masak jnthn: what makes you say that?
jnthn masak: Well, sub foo($x is rw) { ... } # w00t, now I can change $x 16:43
masak nod.
jnthn method foo($!x is rw) { ... } # OK, so we require the thing that is passed to be assignable I guess...
Do we really expect not writing that to bind something read-only to $!x though? 16:44
oh, it's not binding
Reading carefully:
"then the argument is assigned directly to the object's attribute"
*assigned*
OK, that makes life easier. :-) 16:45
(I'd been meaning to check if it said one way or other, just hadn't got to that part of the impl yet.)
Anyway, that still makes things a bit "huh" 'cus you're assigning rather than binding the incoming value. 16:46
masak nod.
jnthn And presumably assigning (or trying to assign) to a mutable container.
masak that would mean that 'is rw' is pretty meaningless on the $!foo and $.foo parameter forms.
jnthn masak: Right, that's my point. :-) 16:47
masak seems a pity, though.
jnthn So I was trying to figure out what you were getting at. :-)
(Still kinda...haven't.)
masak or should I say, it seems that we're not torturing the implementors enough there... :P
jnthn :-P 16:48
masak let me rephrase the question: in method foo($.attr) { ... }, what is defined in the environment inside foo? 16:49
jnthn masak: nothing, so far as I can tell
masak: I mean, it doesn't imply that we also create a lexical $attr 16:50
masak oh, good.
then there's practically nothing to torture the implementors about.
dalek kudo: 7eed769 | jonathan++ | (6 files):
Make Rakudo_binding_bind_signature actually take a low level signature object rather than an already unpacked one - this will make it far neater to recurse into the binder later. Also, cache the nameds to positionals hash. Doesn't actually win much performance, though we're building probably several less PMCs per dispatch, so less memory overhead for sure. Also remove a leak.
16:51
jnthn It's OK, you've already got hundreds of other delayed-effect toturings lined up in RT. :-)
masak mwhahaha.
and 'is rw' on such a parameter is essentially meaningless. 16:52
quietfanatic jnthn: allocating fewer PMCs ought to give a good performance boost in realtime applications where GC is an issue
masak one could have a static warning about that, I guess.
jnthn quietfanatic: Aye, it's a worthwhile thing.
16:52 desertm4x joined
jnthn quietfanatic: It was an easy change, I just didn't want to do things I didn't have to before the branch merge. 16:52
quietfanatic Ah, I see 16:53
jnthn (All I did was cache something I was building each time. I even had a TODO comment saying to do it later. :-))
quietfanatic And I had just checked out the rakudo before that commit. Recheckouting. :) 16:54
s/the rakudo/rakudo/
16:55 DarkWolf84 left, payload joined
quietfanatic Makefile:431: *** missing separator. Stop. 17:00
D:
jnthn ...co?
o... 17:01
quietfanatic This is from running make on Rakudo.
jnthn quietfanatic: pull again, re-configure... 17:02
:-/
dalek kudo: 55fd86e | jonathan++ | build/Makefile.in:
jnthn-- puts tabs in the makefile again.
17:03 cdarroch joined
alester rt.perl.org/rt3/Ticket/Display.html?id=69887 is anyone watching spam? 17:04
I know I'm not.
moritz_ alester: I am, from time to time
alester: but it would make far more sense to disable comments entirely
the signal/noise ratio is just too low
alester: can you do that?
alester I could
moritz_ then I'll do a final sweep and delete the remaining spam comments
quietfanatic Aah, much better 17:05
alester ok, I changed it to not autopost comments 17:08
moritz_ alester++
quietfanatic Wow, I was right. Since last month gamebase has had a huge speed improvement. jnthn++ 17:09
and (whoever else helped)++ 17:10
jnthn quietfanatic: I'm happy to hear that it's had a noticable effect on real life code too.
Micro-benchmarks for specific language features only tell part of the story. 17:11
masak I've still to test it scientifically, but I'm pretty sure there was a speed boost.
diakopter mberends: I've almost got symbolic/operator multi declaration/installation working 17:27
17:34 Chillance joined 17:39 frederico joined 17:40 justatheory joined 17:41 justatheory joined 17:43 nihiliad joined, REPLeffect joined
mberends diakopter: is that going to be in misc/*.js ? 17:44
diakopter no; the dispatcher is in Act.js 17:47
a fallback from the main opcode dispatcher
mberends thanks, I'm still getting used to how it all fits together :) 17:48
jnthn whee 17:55
> class Food { has $!nom; method eat($!nom) { say "ok" }; method test() { say $!nom } } 17:56
lambdabot <no location info>: parse error on input `class'
jnthn > my $mmm = Food.new; $mmm.eat("marshmallow"); $mmm.test;
ok
marshmallow
pmichaud mmmmmmmm mmmmarshmallow
mberends ok 17:57
jnthn Running spectests to make I didn't screw anything up, and while it happens going for dinner. :-)
bbl
*make sure # yeah, need higher blood sugar... 17:58
17:59 NorwayGeek joined 18:01 meppl joined 18:05 lumi joined 18:11 icwiener joined 18:13 __ash__ joined 18:16 nbrown joined 18:22 stephenlb joined 18:23 jaldhar joined
moritz_ jnthn: don't forget #ps ;-) 18:28
18:38 zloyrusskiy joined 18:42 NorwayGeek joined 18:46 zloyrusskiy joined 18:57 __ash__ joined
pugs_svn r28858 | moritz++ | [perl6.org] clean up files from old site 19:06
19:06 SmokeMachine joined
edenc blist 19:06
woops 19:07
19:09 tarbo2 joined
moritz_ jnthn, pmichaud: I'm looking for a way to forbid sockets in Safe.pm... can I somehow just remove a full class with inline PIR? 19:13
pmichaud you could eliminate its protoobject 19:16
that might not eliminate the class itself, but it'd be hard to get to from Perl 6 w/o dropping into inline PIR 19:17
null $P0
set_hll_global ['IO'], 'Socket', $P0
or something like that
moritz_ pmichaud: I'll try that, thanks 19:19
japhb Does Safe.pm disallow inline PIR? 19:20
moritz_ no
if there's a way to do that, I'd like to hear it ;-)
japhb Hide the relevant portion of the grammar?
moritz_ I don#t think rakudo's grammar is mutable enough yet :/ 19:21
japhb Of course, then you also have to kill cross-HLL eval
moritz_ s/#/'/
japhb: aye
though I'm kinda attached to having blizkost in there
all in all we need a parrot level solution 19:22
japhb If blizkost is there, then people can do socket stuff, regardless of parrot
19:23 lumi joined
moritz_ yes 19:23
but if it actually becomes a problem, blizkost is easy to remove
inline PIR isn't
japhb nodnodnod
maybe the most reasonable solution is to put a hard firewall around the VM the evalbot is running in 19:24
moritz_ well, it needs an IRC connection :) 19:25
japhb moritz_, sure, but only on one TCP pair ... 19:26
Especially if the evalbot on (re-)launch notified the firewall about what port it was planning to use, and the firewall adjusted accordingly.
Tene Um, why not just confine it with an selinux sandox? 19:27
moritz_ well, if anybody builds that for me, I'm happy ;-)
I just have no experience with that
Tene I can do that. I just need a server to run it on that has selinux enabled.
japhb Tene, if the ircbot has rights to initiate a socket to IRC, how do you prevent the code it runs from doing the same?
Hmmm, I guess the ircbot could do the necessary selinux magic to enforce tighter restrictions on its children. 19:28
Tene japhb: right.
selinux-policy-utils actually ships with a binary called "sandbox" that does it for you
japhb Oh, nice!
Tene so just have the bot invoke sandbox with appropriate arguments
japhb never used selinux on purpose, because all of my previous interactions with it were unpleasant ... 19:29
moritz_ now that would be awesome
Tene <3 selinux
japhb But this seems like a valid use case. ;-)
Tene the original inspiration for the guy who wrote sandbox was browser helper applications, like pdf reader 19:30
in case you have malicious pdfs
japhb makes sense
jnthn moritz_: er, oops, I forgot #ps
Tene I was planning to start renting a VM server sometime soon... I'll make the necessary modifications to evalbot if someone can harass me about that 19:32
dalek p-rx: b179ffb | pmichaud++ | src/ (4 files):
More quote_EXPR and quoting improvements.
Tene afk work 19:33
colomon rakudo: class A { has @.b; multi method new(@x is copy) { self.bless(*, b => @x); }; }; A.new(@c); 19:49
p6eval rakudo 55fd86: OUTPUT«Symbol '@c' not predeclared in <anonymous> (/tmp/BdhppMX7QM:2)␤in Main (file <unknown>, line <unknown>)␤»
colomon rakudo: class A { has @.b; multi method new(@x is copy) { self.bless(*, b => @x); }; }; { A.new(@c); } my @c; 19:50
p6eval rakudo 55fd86: OUTPUT«Confused at line 2, near "my @c;"␤in Main (file <unknown>, line <unknown>)␤»
colomon rakudo: class A { has @.b; multi method new(@x is copy) { self.bless(*, b => @x); }; }; { A.new(@c); }; my @c;
p6eval rakudo 55fd86: OUTPUT«Null PMC access in does_pmc()␤in Main (file src/gen_setting.pm, line 288)␤»
19:50 ruoso joined
colomon bingo 19:50
jnthn Yes, and don't bother filing a ticket.
We already have loads like "omgz I used a variable then declared it" :-)
moritz_ though you must admit that this one is particularly creative ;-) 19:51
pugs_svn r28859 | diakopter++ | [sprixel] implement operator sub declarations (no typed/named parameters yet) for the setting. Implement sub infix:\\<+> in the setting's Int.pm using it: multi sub infix:\\<+> { jseval 'this.result = new ctx.classes.Int.ctor(args[0].v.add(args[1].v))'} 19:53
diakopter looks askance at the < 19:54
(and yes, that multi will be just for Int $a, Int $b 19:56
)
KyleHa Remark from Facebook: So... there's not a funny-dressed guy, blowing into a big horn yelling 'Raaakuuudooo"?
colomon jnthn: Okay, just making sure (hit this one in practice just now with what I now know was an incorrect variable rearranging).
KyleHa: That reminds me that I want to shotgun the name "Star of Rakudo" for a tune I need to write early next spring. :) 19:57
19:58 SmokeMachine joined 19:59 zamolxes joined
diakopter rakudo: multi sub infix:<+>(Int $a where $a == 1, Int $b) { say 5 }; say 1+1 20:00
p6eval rakudo 55fd86: OUTPUT«5␤1␤»
diakopter cool
rakudo: multi sub infix:<+>(Int $a where $a == 1, Int $b) { say 5 }; say 1+1; say 2+1; # less cool 20:01
p6eval rakudo 55fd86: OUTPUT«5␤1␤5␤1␤»
moritz_ rakudo: multi sub infix:<+>(Int $a where { $a == 1 }, Int $b) { 5 }; say 2+1 20:03
p6eval rakudo 55fd86: OUTPUT«3␤»
moritz_ I think the where-clause with braces confuses rakudo
*without 20:04
20:06 nbrown joined
mberends studies the 9 updated sprixel files :-) 20:08
jnthn rakudo: multi sub infix:<+>(Int $a where { $a == 1 }, Int $b) { 5 }; say 1+1; say 2+1; 20:09
p6eval rakudo 55fd86: OUTPUT«5␤3␤»
jnthn Hmm. It appears you're right, moritz_.
diakopter that's weird. svn didn't commit the latest setting/Int.pm
oh, nm; it did. 20:10
20:11 SmokeMachine joined
diakopter std: multi sub infix:<+>(Int $a where $a == 1, Int $b) { 5 } 20:11
p6eval std 28858: OUTPUT«[31m===[0mSORRY![31m===[0m␤Preceding context expects a term, but found infix = instead at /tmp/e0lfGxBVcN line 1:␤------> [32mmulti sub infix:<+>(Int $a where $a ==[33m⏏[31m 1, Int $b) { 5 }[0m␤FAILED 00:02 116m␤»
20:11 Su-Shee left
diakopter ok... I guess braces are required? 20:12
moritz_ without braces it will do a smartmatch
diakopter std: multi sub infix:<+>(Int $a where { $a == 1 }, Int $b) { 5 }
p6eval std 28858: OUTPUT«ok 00:02 113m␤»
diakopter oh
std bug then?
moritz_ so it smartmatches 3 against 3 == 1
3 against False
which is... False
still doesn't make much sense 20:13
let's just say it's confused ;-)
diakopter but should std accept that?
moritz_ dunno, but the error message looks like LTM fail to me
it talks about infix =
instead of infix == 20:14
diakopter std: multi sub infix:<+>(Int $a where $a 4, Int $b) { 5 } 20:15
p6eval std 28858: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unable to parse signature; couldn't find final ')' at /tmp/3oDqkAC0FH line 1:␤------> [32mmulti sub infix:<+>(Int $a where $a [33m⏏[31m4, Int $b) { 5 }[0m␤ expecting any of:␤ bracketed infix␤ constraint␤ infix stopper␤ param_sep␤
.. standard stopp…
dalek kudo: af3872d | moritz++ | docs/announce/2009-10:
[docs] initial release annoce for 2009-10
kudo: 7e34de6 | moritz++ | docs/ChangeLog:
mention new signature binder in ChangeLog
moritz_ PerlJam: the release announce is mostly just a stub, feel free to change it any way you like
20:16 lumi joined 20:17 [particle]1 joined
diakopter std: multi sub infix:<+>(Int $a where $a = 4, Int $b) { 5 } 20:18
p6eval std 28858: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't put required parameter after optional parameters at /tmp/KWnr1eUMRr line 1:␤------> [32mub infix:<+>(Int $a where $a = 4, Int $b[33m⏏[31m) { 5 }[0m␤ expecting any of:␤ constraint␤ parameter␤ trait␤ whitespace␤FAILED
..00:02 116m␤»
diakopter well that's certainly a bug
dalek kudo: 95d2f43 | moritz++ | lib/Safe.pm:
disallow IO::Socket in Safe.pm
20:20
20:23 hercynium joined 20:31 pinchyfingers joined
dalek kudo: 26bf858 | (Kyle Hasselbacher)++ | docs/announce/2009-10:
[announce/2009-10] typo fixes
20:37
moritz_ Infinoid: any news on getting the CREDITS file from parrot and rakudo merged for dalek? 20:38
(feel bothered)
pugs_svn r28860 | moritz++ | [t/spec] tests for RT #69228, calling methods from a grammar 20:45
dalek kudo: ec7e91e | moritz++ | t/spectest.data:
add S05-grammar/methods.t to spectest.data
20:49
moritz_ KyleHa: ping 20:55
KyleHa Pong.
moritz_ KyleHa: I'm currently looking at Test::Util... 20:56
KyleHa OK.
moritz_ specifically lines 43..52
KyleHa That's the given expected... 20:57
moritz_ without the $diag_ok it could just be unified to $attr_good = $got{$attr} ~~ %expected{$attr};
because $thing ~~ $code actually invokes $code with argument $thing
KyleHa Far out. I had no idea. 20:58
moritz_ but I don't understand why the you set $diag_ok unconditionally in the default case
is there a good reason for that?
if not, I'd just simplify it away 20:59
KyleHa That's the only one where I think the expected thing is a string which I can meaningfully output in the 'diag()' call later.
moritz_ ah.
that makes sense
so that's something I can factor out easily 21:00
$diag_ok = %expected{$attr} ~~ Str|Num
or something
KyleHa Yes.
moritz_ rakudo: class Foo { method BUILD() { } } 21:02
p6eval rakudo ec7e91: TIMED_OUT
moritz_ that should produce a warning, which I'm trying to test with Test::Util 21:03
21:03 lumi joined
KyleHa It says to me, "BUILD declared as a method; you probably wanted to declare it as a submethod." 21:04
moritz_ aye
woot
this is beautiful it makes me weep ;-) 21:05
KyleHa Heh.
moritz_ you'll see the commit in a minute ;-)
KyleHa I'm looking forward to it. 8-) 21:06
moritz_ { out => '', err => /BUILD/ & /submethod/ },
pugs_svn r28861 | moritz++ | [t/spec] simplify Test::Util to use smart-matching more generally
r28862 | moritz++ | [t/spec] test for RT #66120, a method BUILD should warn
moritz_ using smartmatching means I can just us a junction of regexes
all for free ;-) 21:07
KyleHa That's really cool!
moritz_ and that's not limited to this testing utility - *everything* that uses smartmatching gets it for free 21:08
KyleHa++ # for Test::Util, and making my life easier
KyleHa moritz_++ # code review and lesson in smartmatching 21:09
moritz_ I've started to read www.itworld.com/open-source/78271/m...page=0%2C0 which has been recommended on perlmonks
maybe we can get explicit mentoring in the Perl 6 community 21:10
KyleHa I'll start reading that, thanks. 8-) 21:11
moritz_ who would be willing to mentor newbies? please raise hands! 21:12
I would, and I think I already do, more or less
__ash__ so... has anyone tried using parrot/rakudo in the iphone yet?
21:13 Lorn left
__ash__ since parrot's just plain C (and some perl pre-processoring) it should work just fine, i think i am going to try that, and see if Link::C works with ObjC, would be neat if you could, then you could write iPhone apps in perl6 21:14
KyleHa moritz_: I agree, you already do mentor newbies. 21:16
__ash__ moritz_: i'd help with the mentoring, but i wouldn't really qualify myself as a very experienced perl user, but if i have to explain it to someone else it forces me to understand it better 21:17
jnthn moritz_: If I get hungry and eat my newbie by accident, is that a failure? 21:19
I mean, uh, I can probably mentor.
:-)
moritz_ __ash__: well, you can still help, pointing people to the right websites, and to tell them whom to ask about specific question 21:20
jnthn
.oO( must learn to be nice )
moritz_ pmichaud for regexes, jnthn for multi dispatch, me for test suite etc.
jnthn: eating newbies is fine, if you later share a beer with them ;-)
PerlJam digested newbie + beer doesn't sound at all appetizing ;) 21:21
21:23 Confield_ joined
__ash__ so.... proto keeps complaining about: Use of uninitialized value in -d at ./proto line 33. 21:27
umm, masak made proto right?
jnthn Yes
21:28 tak11 joined
jnthn __ash__: Also, masak really likes to receive bug reports. Encourage people to file them! ;-) 21:28
moritz_ but not the installed-modules branch (if that's what you're looking at)
jnthn
.oO( mwahaha )
21:28 masak joined
masak oh hai 21:28
moritz_ indeed he does. There's a bug tracker on github for proto
jnthn masak++!
__ash__ lol, i notice all the bug reports he puts in on rakudo
jnthn ;-)
__ash__ masak: have you seen Use of uninitialized value in -d at ./proto line 33. with proto? 21:29
masak __ash__: don't think I have, no.
21:29 Confield_ left
masak feel free to ticket it. 21:29
I just came in to comment a bit on rt.perl.org/rt3/Ticket/Display.html?id=68086
we discussed it earlier today, or was it yesterday? 21:30
anyway, it's not an error, by our current knowledge.
21:30 Whiteknight joined
masak hence, the test is wrong. 21:30
__ash__ hmmm i removed me config file to let it regenerate it, and now it does: "Building proto...done Segmentation fault"
masak :/
__ash__ hmm
masak I'm pretty sure it shouldn't do that.
moritz_ masak: re ticket, what should rakudo do? 21:31
masak on the bright side, it got done building proto :>
moritz_: complain, according to me.
__ash__ lol
masak 's likely wrong having two of the same.
moritz_ then why is the test wrong?
masak unless they're anonymous, 'course.
moritz_: because it's eval_dies_ok
it's not _that_ wrong.
__ash__ is there a like verbose flag or something i can set on proto? to find where its seg faulting
masak std: sub foo($a, $a) {} 21:32
p6eval std 28862: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (from line 1) at /tmp/Fc0W5HGtDg line 1:␤------> [32msub foo($a, [33m⏏[31m$a) {}[0m␤ok 00:01 107m␤»
moritz_ and you think it shouldn't be detected at compile time?
masak __ash__: no, just the old, hard way.
__ash__ i have perl v5.8.9 (which version does proto need/recommend?)
masak moritz_: didn't say that.
moritz_: just saying STD.pm approves, but complains.
moritz_: so maybe Rakudo should too.
__ash__: it doesn't do anything fancy in Perl 5. just enough to get Perl 6 running. 21:33
jnthn masak: Aye, it's only a warning.
__ash__ masak: so its calling perl 6 eventually in there? (I haven't checked the script yet) so it might be perl 6 thats dying? 21:34
jnthn We can have a ticket saying it's missing the warning that STD gives.
masak __ash__: aye. my guess is that it's Perl 6 dying.
moritz_ well, just because STD.pm doesn't fatally complain doesn't mean it has to survive compilation
masak __ash__: does the segmentation fault occur on a separate line, or on the same line as 'done'?
moritz_ IMHO it's best to wait for an explicit spec clarification on that one 21:35
masak moritz_: well, do you find anything in the spec that says it isn't allowed?
__ash__ masak: alright, ima run my rakudo tests real fast, to make sure its not rakudo
new line
masak __ash__: then I'll bet it's Perl 6 dyin'.
__ash__ kk, i am going to run my rakudo tests to see if i can find the place its dying
moritz_ masak: no. But does it have defined semantics?
jnthn Only in so far as, we bind the signature left to right. 21:36
That is spec'd.
So we know that having the first parameter's value in $a would be wrong by the spec, for example.
It should either do what Rakudo does now, or be a compile time failure, anyway, imo.
masak I see no reason not to be strict here. 21:37
moritz_ would vote for compile-time error too 21:38
jnthn You'd have to do something fairly convoluted to actual make it useful. ;-)
I suspect compile time error will catch mistakes and get in the way of nothing useful.
So gets my vote too. 21:39
masak then we just need to make sure that the spec aligns with the spectest. :) 21:41
moritz_ masak: I'm currently distracted, so if you don't get to it I'll do it 21:42
s/so/but/
in half an hour or so
masak I'm distracted too, but I'll give it half a shot. 21:43
good to know you're there as a backup should I fail or forget.
jnthn After dealing with $emergency, /me works on finishing up the attributive parameters patch 21:48
__ash__ masak: should the Rakudo directory be /usr/local if i have it installed in /usr/local? 21:52
masak sounds about right. 21:53
I don't really know how proto will deal with an installed Rakudo. :/
__ash__ will that add stuff to /usr/local/lib/proto? or something?
hmm
masak no, the Rakudo dir and the projects dir are separate beasts. 21:54
pugs_svn r28863 | jnthn++ | [t/spec] Unskip/untodo and correct some tests for attributive parameters.
jnthn There we go. :) 21:55
__ash__ so the project dir is where things end up? 21:56
is it bad that i installed perl6 and parrot?
since i am trying to use proto, i mean
does perl 6 have a normal lib dir it checks? like /usr/local/rakudo/? 21:57
colomon What's the syntax for using ... to get a series that counts by 1/3s?
dalek kudo: 0f6203f | jonathan++ | src/ (5 files):
Implement attributive parameters.
colomon __ash__: pretty sure perl 6 does not have a normal lib dir. yet.
__ash__ ah
hm
sad day
masak colomon: 0, 1/3 ... *
colomon masak: that works?!
masak colomon: dunno. 21:58
__ash__, colomon: ~/.perl6/lib
or some such. I forget.
thank mberends++ for sneaking in that one. :)
moritz_ yes, that's the dir
colomon masak: that's actually in rakudo now?! \\o/
__ash__ sweet
colomon rakudo: say (0, 1/3 ... 3) 21:59
p6eval rakudo ec7e91: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in Main (file src/gen_setting.pm, line 288)␤»
colomon rakudo: say (0/1, 1/3 ... 3/1)
p6eval rakudo ec7e91: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in Main (file src/gen_setting.pm, line 288)␤»
colomon rakudo: say (0, 0.1 ... 3)
p6eval rakudo ec7e91: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in Main (file src/gen_setting.pm, line 288)␤»
masak that's cmp which can't handle Rat right there.
fix that, and you'll have your nice syntax.
colomon Rat or Num?
moritz_ right 22:00
masak Rat, for sure.
colomon sure, make me fix rakudo. ;)
any idea what src/setting file I should be looking at?
oh, operators.pm 22:01
or is it cmp that needs to be fixed?
moritz_ it is cmp... is that in the setting yet? 22:02
btw isn't cmp one of those operators that should dispatch to a method?
colomon cmp is not in the setting yet.
colomon thinks that probably rules out fixing the bug while cooking dinner... 22:03
moritz_ ;-)
pugs_svn r28864 | masak++ | [S06] same-named non-anon positionals are a compile error 22:04
moritz_ I thought the spec had an example of providing two or three different names for the same named parameter
jnthn moritz_: Me too
moritz_ but ack ':\\w+\\(\\w+\\/' doesn't find it
masak we'll sort out contradictions as they come. :)
jnthn moritz_: The new binder supports 'em too, we just don't parse them yet.
alester what are you trying to find that has a trailing slash?
and you don't need to quote that trailing slash. 22:05
not that that should matter.
jnthn moritz_: Also, why the trailing slash? :-)
Should it not be a ( ?
moritz_ erm 22:06
jnthn moritz_: yes, there is one
sub globalize (:g(:global($gl))) {...}
22:06 lumi joined
moritz_ ack ':\\w+\\(\\w+\\(' is what I meant to type 22:06
jnthn :-)
moritz_ ah, missing the second :
jnthn Ah, that too :-) 22:07
moritz_ masak: (r28864) is there a good reason to limit that to positional parameters? 22:08
masak moritz_: it's like this.
oh wait. 22:09
moritz_ sub x($a, :b(:a($y))) { ... }
masak the currently specced things about duplicate nameds is about duplicate named _arguments_.
dalek kudo: 073d5ed | jonathan++ | docs/ChangeLog:
Additions to ChangeLog.
jnthn Right.
masak (which I'd love to see gone, too)
jnthn And I'm not even sure tre a good idea.
I would *so* love to see those gone. 22:10
masak moritz_: feel free to edit away 'positional' from my paragraph.
I'm heading off to bed.
moritz_ good night
masak see y'all tomorrow.
jnthn It's like, you have a parameter :@foo, and suddenly just because two :foo(...) arguments were passed, the fact that it was meant to be passed 1 thingy that does Positional matters no more.
night masak
masak tips his hat
pugs_svn r28865 | moritz++ | [S06] extend uniq name constraint to named parameters too 22:15
22:23 __ash__ joined
diakopter mberends: any thoughts/comments? 22:37
mberends :)
pugs_svn r28866 | mberends++ | [sprixel] add operators - ~ and x similar to +
22:38 Confield joined
mberends I feel uncertain whether this is the right place for all operators, it didn't work for ==, eq 22:39
japhb rakudo: fail "foo" 22:40
p6eval rakudo 073d5e: OUTPUT«Can't return outside a routine␤in Main (file <unknown>, line <unknown>)␤»
japhb Known?
Certainly LTA
moritz_ I've seen that before, don't know if it's ticketed
japhb And us without a masakbot 22:41
moritz_ ;-)
mberends sprixel: say "V8 " x 8
p6eval sprixel 28865: OUTPUT«NYI: infix__S_x␤»
japhb rakudo: sub foo { fail "foo" }; foo() 22:43
p6eval rakudo 073d5e: ( no output )
japhb It seems fail is full of FAIL
mberends sprixel: say 11111222223333344444 + 22222333334444455555
p6eval sprixel 28865: OUTPUT«33333555557777799999␤»
japhb Which VM does sprixel run on? 22:44
V8?
mberends yup
jnthn japhb: Why is it less than awesome?
japhb Is that an intrinsic limitation, or just hysterical raisins? 22:45
22:45 lumi joined
jnthn japhb: fail is just a return that happens to return a Failure object. 22:45
japhb jnthn, I fully admin I may be just really out of date, but shouldn't fail be caught at the top level and at least say something that includes the fail message?
er, admit
mberends sprixel: sub f { say "foo" }; f 22:46
jnthn I think in void context it may well be meant to give the message there and then.
p6eval sprixel 28865: OUTPUT«Sprixel Error: TypeError: Cannot read property 'T' of undefined␤»
diakopter heh
Tene perl6: fail "O HAI"
p6eval pugs: OUTPUT«*** Cannot use this control structure outside a 'routine' structure␤ at /tmp/uE3e4QYYRc line 1, column 1 - line 2, column 1␤»
..rakudo 073d5e: OUTPUT«Can't return outside a routine␤in Main (file <unknown>, line <unknown>)␤»
..elf 28866: OUTPUT«Undefined subroutine &GLOBAL::fail called at (eval 124) line 3.␤ at ./elf_h line 5881␤»
pmichaud no, fail in void context needs to do a return 22:47
diakopter sprixel: sub f { say "foo" }; f "noop"
japhb jnthn, that would make more sense in the DWIM way
pmichaud but at the top level it needs to be caught somehow
p6eval sprixel 28865: OUTPUT«foo␤»
jnthn pmichaud: I meant if you call something that fails in void context.
pmichaud oh, that might be.
jnthn sub foo { fail "omg out of beer" }; foo; # this doesn't discard the failure, iirc.
mberends sprixel: sub f { say "foo" }; f() 22:48
p6eval sprixel 28865: OUTPUT«foo␤»
diakopter heh
yeah, the double-parsing of the setting really adds a lot of time/overhead. 22:49
mberends that's okay for now, it's more important to broaden the functionality 22:50
diakopter it wouldn't need parsed at all by STD (because STD would use the .syml files when parsing the input text with the setting, and sprixel would load the setting context/interpreter state from disk)
22:50 tak11 joined
dalek p-rx: 725c893 | pmichaud++ | src/ (3 files):
Clean up quote handling a bit. Work around TT #1125 by avoiding
22:50
p-rx: 86d5495 | pmichaud++ | src/HLL/ (2 files):
More quoting escapes, better handling of quote constructs.
p-rx: 64c960f | pmichaud++ | src/NQP/ (2 files):
Add Q quoting form to NQP.
p-rx: b917679 | pmichaud++ | src/NQP/ (2 files):
Add single angle bracket quoting to NQP (non-splitting for the moment).
mberends diakopter: sure :) 22:51
japhb perl6: sub foo {fail "foo" }; my $foo = foo(); say "bar: $foo";
p6eval elf 28866: OUTPUT«Undefined subroutine &GLOBAL::fail called at (eval 129) line 5.␤ at ./elf_h line 5881␤»
..pugs: OUTPUT«*** foo␤ at /tmp/iGkYfb1i23 line 1, column 29-39␤ /tmp/iGkYfb1i23 line 1, column 10-21␤»
..rakudo 073d5e: OUTPUT«foo␤bar: ␤»
japhb rakudo: sub foo {fail "foo" }; my $foo = foo(); say "bar: " ~ $foo; 22:52
p6eval rakudo 073d5e: OUTPUT«foo␤bar: ␤»
japhb What's the proper way to get the failure message out of a Failure? 22:53
__ash__ japhb: a CATCH?
japhb __ash__, really? That seems kinda heavy weight for something like fail, which I imagine to be light weight. 22:54
"light" in the sense of "can be treated as fatal or nonfatal, and DWIMs either way"
Maybe an error in my expectations.
jnthn Indeed - CATCH is for exceptions.
As in, die 22:55
rakudo: sub foo { fail "oh noes" }; my $x = foo; say $x.WHAT
p6eval rakudo 073d5e: OUTPUT«Failure()␤»
jnthn that's right then...
rakudo: sub foo { fail "oh noes" }; my $x = foo; say $x.^methods
p6eval rakudo 073d5e:
..OUTPUT«definedhandledACCEPTSperlacosroundchoptanhsplitexpmatchacoshwordscancotanatan2lcfirstucsrandkeysmappolarcislogsubstrminmaxpickfirsttransevalfilesinIntacosecjoinsubstsinhcosechacosechabselemsendchompindexceilingtrimp5chompasecpairssechordrandtruncatesortrindexsqrtasinintatanhcoshcos…
jnthn rakudo: sub foo { fail "oh noes" }; my $x = foo; say $x.^methods(:local)
p6eval rakudo 073d5e: OUTPUT«definedhandledperlACCEPTS␤»
jnthn Hmm. 22:56
rakudo: sub foo { fail "oh noes" }; my $x = foo; say $x
japhb rakudo: sub foo {fail "foo" }; my $foo = foo(); say "bar: " ~ $foo.perl;
__ash__ or for a more readable
diakopter mberends: what do you mean it's not the right place to put == ?
p6eval rakudo 073d5e: OUTPUT«oh noes␤␤»
rakudo 073d5e: OUTPUT«bar: undef␤»
__ash__ rakudo: sub foo { fail "oh noes" }; my $x = foo; say ~$x.^methods
p6eval rakudo 073d5e: OUTPUT«defined handled ACCEPTS perl cosech lcfirst roots map cis comb log atan min acos max bytes chop sin 1 tanh 1 values asinh acosech abs end ceiling p5chomp keys kv floor asech ord capitalize pick round 1 1 split 1 acosh words p5chop lc join sinh cotan acotan atan2 srand reduce
..trim …
__ash__ aww it trimmed it
diakopter mberends: oh! I didn't see you added stuff 22:57
jnthn I only cared about the local ones anyway.
rakudo: sub foo { fail "oh noes" }; my $x = foo; my $message = ~$x; say $message;
p6eval rakudo 073d5e: OUTPUT«oh noes␤␤»
jnthn ah, there's a way
diakopter mberends: say 433 - 55
mberends: oh, you're not sprixel
sprixel: say 433 - 55
japhb jnthn, that's lying. As soon as you ~'ed it, it got errored out. You didn't actually capture the message.
p6eval sprixel 28866: TIMED_OUT 22:58
jnthn japhb: oh, damm
diakopter heh
jnthn japhb: You're right.
I can only guessed there's a spec'd way that Rakudo just doesn't implement yet. 22:59
japhb jnthn, OK, fair enough.
jnthn We obviously store it in there.
So in theory it's just returning an attribute.
japhb goes back to using die ...
nodnod
mberends mberends r28866: 433 - 55, er, a tad under 400?
__ash__ rakudo: sub foo {fail "foo" }; my $foo = foo(); say ~$foo.^attributes; 23:00
p6eval rakudo 073d5e: OUTPUT«Attribute()<0x2b9623a07260>␤»
mberends sprixel was not up to the last commit when it was last eval'ed 23:01
Confield Des Perl 6 hope to have a performance improvement over 5?
diakopter sprixel: say 433 - 55
p6eval sprixel 28866: OUTPUT«378␤» 23:02
mberends sprixel: say "V8 " x 8
diakopter Confield: hope springs eternal.
p6eval sprixel 28866: OUTPUT«V8 V8 V8 V8 V8 V8 V8 V8 ␤»
jnthn So in theory it's just returning an attribute.rakudo: sub foo {fail "foo" }; my $foo = foo(); say $foo.^attributes>>.name; 23:03
gah, what
rakudo: sub foo {fail "foo" }; my $foo = foo(); say $foo.^attributes>>.name;
p6eval rakudo 073d5e: OUTPUT«$!exception␤»
jnthn There ya goes.
__ash__ rakudo: sub foo {fail "foo" }; my $foo = foo(); say $foo.exception;
p6eval rakudo 073d5e: OUTPUT«Method 'exception' not found for invocant of class 'Failure'␤in Main (file src/gen_setting.pm, line 295)␤»
__ash__ failure :-(
mberends sprixel: say "a" eq "a"
japhb Confield, as someone not actually implementing Perl 6, eventually I expect some things will be faster and some slower. Perl 6 as specced is considerably more powerful than Perl 5, which would slow things down, but it is also capable of certain optimizations that Perl 5 is not.
p6eval sprixel 28866: OUTPUT«NYI: Chaining␤»
jnthn __ash__: well yes, there isn't a method, just an attribute 23:04
The question is what the method should be called.
:-)
__ash__ there is no way to read the value of the attribute though?
mberends diakopter: ^^ was hindering multi sub infix:<eq> 23:05
Confield japhb: thanks.
diakopter mberends: yeah... I haven't yet ported over Chaining from the previous sprixel 23:06
mberends ok, I can sleep while U do it ;)
diakopter heh
japhb Confield, np
mberends bedtime \\o 23:08
diakopter rakudo: say "hi" x 0 23:09
p6eval rakudo 073d5e: OUTPUT«␤»
diakopter pug: say "hi" x 0
pugs: say "hi" x 0
p6eval pugs: OUTPUT«␤»
Confield So it's probably not going to be as fast as Java, right?...that's what I should of asked instead of comparing it to 5. Thanks again. 23:23
jnthn Confield: I imagine for many things, the developer time it takes to do the same task in Java will probably outweigh the savings achieved by faster runtime anyway. 23:24
Runtime performance is just one consideration when considering the overall efficiency of working in a language.
And as japhb said, it depends entirely on the problem domain. 23:25
It'll vary between tasks.
japhb Confield, also note that the people writing Java VMs have had a LOT of time to invent new ways to be efficient. We're now seeing the same thing happening in the web browser JavaScript VM space. I expect that down the line the same thing will happen in the Perl 6 VM space. 23:26
jnthn *nod* 23:27
On top of that, Perl 5 has also had time to be optimized. 23:28
japhb Confield, the history of new languages is that they are almost always slower than their predecessors (unless being faster was their primary goal) until people have time to figure out how to optimize them.
Confield, over the weekend I was just reading an academic paper from the 90's that explained that common wisdom was that functional languages simply could not be as fast as imperative languages. The paper then went on to explain why this was untrue -- it's just that researchers in algorithmic complexity did not previously have the tools to understand why, or to make faster data structures for them. 23:30
When in doubt, bet on history repeating itself. :-) 23:32
23:34 lumi joined
japhb What does the error message 'rtype not set' mean? 23:37
(from Rakudo)
23:42 szabgab joined
japhb jnthn, pmichaud? I'm particularly stumped because the error message claims unknown line number 23:42
Hmmm. Is 'is rw' broken in Rakudo? 23:44
23:44 quietfanatic joined
japhb That would be the single biggest change I made since the last time this code worked -- changing a couple hash parameters to 'is rw' and changing them directly, rather than making new hashes. 23:44
Confield jnth, japhb: I guess I should of included fast and/or powerful instead of just 'is it *fast*'. I'm new to obviously new to programming languages. :) Thanks again for the reply back, I appreciate it...that helped. 23:46
japhb Confield, you're welcome 23:47
23:47 tak11 joined, ihrd joined
jnthn japhb: Are you trying to do binding to a hash or array element? 23:49
japhb jnthn, yes. 23:50
jnthn japhb: Do assignment instead. :-)
japhb jnthn, Ah.
Is that a Rakudo-ism, or a genuine Perl 6 thing?
jnthn Rakudo-ism. Generally assignment will work out a lot better than binding in Rakudo right now.
And yes, we'll fix it. :-) 23:51
japhb jnthn, Ah, OK, thanks. I've gotten used to binding because of all the NQP code I've been writing. :-)
jnthn I think we even discussed how to fix it. I hope pmichaud++ remembers what we came up wiht. :-)
Well, I think *he* came up with it anyway, and I just nodded and smiled and agreed it should work. :-)
23:52 Limbic_Region joined
jnthn oh yay...I'd thought my flight on Thursday was teh early, but it's not until 11:35am. \\o/ 23:56
japhb jnthn, where are you headed? 23:57