»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by diakopter on 25 January 2010.
lichtkind moritz_: machst du was diesjahr beim perl workshop? 00:44
lue hello there. 01:37
colomon o/ 01:54
lue ...yes? 01:58
ng: loop(my $i=0; $i<=3; $i++){say $i;} 01:59
p6eval ng 8faeb9: OUTPUT«Whitespace required after 'loop' at line 1, near "(my $i=0; "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤»
lue ng: loop (my $i=0; $i<=3; $i++){say $i;}
p6eval ng 8faeb9: OUTPUT«0␤1␤2␤3␤»
colomon o/ is smiley-ish for waving hand, ie hello. 02:00
or \o
\o/ is great excitement, like jnthn fixing file I/O.
lue ah, that's what that is. I say yes? because nothing much is going on.
\O/ is when your mouth is surgically torn bigger. And it hurts. 02:01
eternaleye and /o\ is covering your head, like after one makes a bad pun 02:09
lue |o| is your hands straight in the air. 02:10
colomon I sometimes thing |o| should be "touchdown!" 02:11
eternaleye I thought it looked more like a field goal... 02:13
lue or a tight-knit game of ping pong. 02:16
colomon \o\ /o/ \o\ /o/
lue the wave? 02:17
colomon I was thinking more some sort of happy dance. 02:18
.o. .o. |O| .o. strikes me as a bit more wave-like.
lue I wonder, do the symbols ≤ and ≥ work like they should in perl 6? 02:21
or are they treated as brackets?
eternaleye \o/ /`o'\ /o_ /o\ 02:22
lue YMCA
rakudo: say "hello w/ quotes"; say <hello w/ angle brackets>; say ≤hello test≥;
p6eval rakudo 1d4928: OUTPUT«say requires an argument at line 10, near " \u2264hello te"␤in Main (file src/gen_setting.pm, line 2593)␤»
eternaleye rakudo: say 1 ≤ 2 02:23
p6eval rakudo 1d4928: OUTPUT«Confused at line 10, near "\u2264 2"␤in Main (file <unknown>, line <unknown>)␤»
lue rakudo: say 1<=0; say 1≤ 0;
p6eval rakudo 1d4928: OUTPUT«Confused at line 10, near "\u2264 0;"␤in Main (file <unknown>, line <unknown>)␤»
lue wonder if those symbols would be legal perl6?
colomon rakudo: sub infix:<≤>($a, $b) { $a <= $b; } say 1 ≤ 2
p6eval rakudo 1d4928: OUTPUT«Confused at line 10, near "say 1 \u2264 2"␤in Main (file <unknown>, line <unknown>)␤»
colomon They should be legal perl 6, wonder why it's not working there? 02:24
lue pugs: say 1 ≤ 2;
p6eval pugs: OUTPUT«*** ␤ Unexpected "\8804"␤ expecting operator, ":" or ","␤ at /tmp/6e3pm2rgNl line 1, column 7␤»
eternaleye rakudo: multi sub infix:<≤>( $left, $right ) { $left <= $right; }; say 1 ≤ 2
p6eval rakudo 1d4928: OUTPUT«1␤»
colomon rakudo: sub infix:<≤>($a, $b) { $a <= $b; }; say 1 ≤ 2
p6eval rakudo 1d4928: OUTPUT«1␤»
colomon ah, it didn't work because I left off the (needed for one-liner) semicolon after the sub declaration. 02:25
rakudo: sub infix:<≤>($a, $b) { $a <= $b; }; say 11 ≤ 2
p6eval rakudo 1d4928: OUTPUT«0␤»
colomon rakudo: sub infix:<≤>($a, $b) { $a <= $b; }; say 2 ≤ 2
p6eval rakudo 1d4928: OUTPUT«1␤»
lue it should be. After all, you can use «» brackets, something I've almost never seen before perl6 :)
Thanks to perl 6, I have the urge to find the most obscure brackets to use, just because I can. 02:26
eternaleye lue: ≤ isn't in the unicode bracket set
Only things marked as brackets in unicode (with one exception I can't remember) can be used as such
I think. 02:27
If I'm wrong, someone please correct me
lue Makes sense. Logically, they aren't brackets. 02:28
I'm talking about brackets the typical englishman might not see (japanese quotes, for one)
eternaleye rakudo: multi sub infix:「≤」( $left, $right ) { $left <= $right; }; say 1 ≤ 2 02:33
p6eval rakudo 1d4928: OUTPUT«Malformed routine definition at line 10, near "infix:\u300c\u2264\u300d("␤in Main (file <unknown>, line <unknown>)␤»
eternaleye nope, apparrently not yet
lue I remember reading in the official specification, if the unicode says they're brackets, they are to work. (S01, i think...) 02:34
eternaleye Yeah, probably just NYI
lue rakudo: say "hello"; say <hello>; 02:35
p6eval rakudo 1d4928: OUTPUT«hello␤hello␤»
lue rakudo: say "hello"; say <hello>; say “hello”;
p6eval rakudo 1d4928: OUTPUT«say requires an argument at line 10, near " \u201chello\u201d;"␤in Main (file src/gen_setting.pm, line 2593)␤»
lue fun with brackets and symbols :D
eternaleye But when you use them as _delimiters_ in a quoting construct, it does balance them properly
rakudo: say q「foo」
p6eval rakudo 1d4928: OUTPUT«foo␤»
eternaleye (I study Japanese, so I have an input method that can produce those brackets conveniently.) 02:36
lue same reason (kinda) I can type ≤≥ quickly. 02:37
I wonder if ≤ ≥ and ≠ are legal perl6 operators? 02:43
lue if they aren't, then they should be. 02:50
lue ECHO EcHo echo... 03:00
eternaleye lue: They are legal, they just aren't defined. You can use the 'multi sub infix:<your_op_here>( $foo, $bar ) { ... }' syntax to define them 03:04
lue hooray! Now for inequality TIMTOWTDI 03:08
lue So, putting them in the ng code is perfectly OK? 03:14
colomon No, ng isn't set up to allow user-defined operators yet. 03:15
they work fine in master, however. 03:16
lue I mean, as part of the official spec type thing (putting in operators.pm, for example)
colomon oh, sure. you have to add them to the grammar.
cl58 moritz_: ping 03:17
lue I'll add them in later if no one beats me to it. I have to go do stuff. 03:20
colomon lue: I don't think there's any particular reason to add them... 03:22
might be a good exercise just to see how it is done, on the other hand.
eternaleye lue: When I said 'legal, but not defined' I didn't mean 'in the spec, but NYI' - I meant 'are legal Perl 6 if you define an operator with that name' 03:53
I don't know if they are in the spec
colomon I'm pretty sure they're not, see perlcabal.org/syn/S03.html#Operator_precedence 03:54
eternaleye Thought so
lue: ^^^ Thus, they shouldn't go in operators.pm. 03:55
lue Too bad. They sure would be fun to have though. (we're -Ofun remember?) 04:06
eternaleye Hm, perlcabal.org/syn/S03.html#Comparison_semantics talks about how cmp is basically eqv that checks ordering rather than just equivalence, but while it says === checks .WHICH, it doesn't give any clues on how a type may impose an ordering on its values using methods. Is overriding cmp the canonical Way To Do It, or is there a method I'm not seeing which fits the mapping of { ++ => '.succ', === => '.WHAT' } et al?
colomon eternaleye: I don't think there is a canonical way to do it yet. 04:07
lue ...the synopsis can change... right? 04:08
eternaleye err, s/.WHAT/.WHICH/
lue Who, me? I'm not acting suspicious, youre acting suspicious!
eternaleye lue: Yes, that's the main reason I asked the question
colomon Right now, for instance, before and after are implemented in terms of cmp. But when I did that, pmichaud suggested it might make sense to do it the other way around.
eternaleye colomon: But before and after are still operators, rather than methods. Does that mean that there should be .before and .after methods? 04:09
colomon no, you'd just use multi operators to define it for different types. 04:10
overriding cmp, or overriding after/before, whichever turns out to be correct in the final analysis. 04:15
lue I only thought of the ≤ ≥ when playing around with the third-level on my keyboard and happening upon those symbols. 05:20
(I would personally implement it in my perl6 projects because it looks cleaner.) 05:21
lue rakudo: my $cale=NaN; say $cale; 05:37
p6eval rakudo 1d4928: OUTPUT«NaN␤»
lue rakudo: multi sub infix<•>($a, $b){$a*$b;};say 5•4; 05:38
p6eval rakudo 1d4928: OUTPUT«Malformed routine definition at line 10, near "infix<\u2022>($"␤in Main (file <unknown>, line <unknown>)␤»
lue rakudo: multi sub infix:<•>($a, $b){$a*$b;}; say 5•4;
p6eval rakudo 1d4928: OUTPUT«20␤»
lue rakudo say "echo"*3; 05:43
rakudo: say "echo"*3;
p6eval rakudo 1d4928: OUTPUT«0␤»
lue heh, old python habits :) 05:44
this silence is ear-splitting. 05:53
I can hear the evalbot recompiling ng.
ng: say "hello"; 05:54
p6eval ng 8faeb9: OUTPUT«hello␤»
lue hm, what _was_ that noise then? 05:55
lue is trying to instill life into the irc. Going into the future to find hope. 06:00
lue is back from the future. Will not reveal details of the past, because I saw I didn't. 06:04
lue beh. Nothing going on here. G'night. 06:26
dalek kudo/ng: c5dda73 | (Martin Berends)++ | (4 files):
Add qx{} and qqx{}, except for hash_to_env() because %*ENV is missing
07:56
moritz_ good morning 08:22
mathw Morning 08:24
james hi 08:27
dj jj 08:29
dalek kudo/ng: 98b4632 | (Martin Berends)++ | src/builtins/control.pir:
[builtins/control.pir] implement time()
10:20
masak oh hai, #perl6 10:23
moritz_ \o/ 10:24
masak: do you already know when you'll be present at the Open Source Days in Copenhagen? 10:25
masak moritz_: no, I haven't thought about transportation at all. 10:26
moritz_ has a possibly cheap means of transportatioin as long as he doesn't travel on a Friday
masak I'm open to arriving early and doing touristy things/hacking/last-minute procrastination. 10:27
moritz_ could arrive on Thursday, possibly 10:28
mberends Planless testing slightly annoys me. Is there any objection to me putting test counts back into plan lines where the counts are known and stable? 10:52
masak not from me.
mberends :) 10:53
masak but I must admit to being entirely sold on planless testing nowadays.
so I'd be interested to hear more about what annoys you.
mberends as long as planful testing is ok with you too
masak yes, it's OK in the sense that I don't fight against it. 10:54
mberends the annoyance is the inner workings of tools/test_summary.pl
masak but I usually default to planless in my own apps.
oh, an extrinsic reason! :)
mberends the spectest suite is a mix of planless and planful 10:54
moritz_ mberends: please coordinate with KyleHa and colomon 10:56
mberends: afaict they mostly use planless testing
mberends will do
they mainly applied planless in the wave of 10000 extra trig tests, it was an effort saving device 10:58
masak planless is always an effort savind device.
it's letting the computer do what it does best: count.
mberends testing can re-count and verify, I don't mind the minor edit work. test_summary.pl tells you the count you need anyway. 11:00
moritz_ if rakudo can run the test
and fudging didn't confuse it
which happens
masak well, mst had a number of good points about planless. 11:01
mberends moritz_: that's where planless is better
moritz_ mberends: not quite... but I need to get some lunch before I continue this discussion :)
masak one of the subtler ones, but which I liked, is that planful doesn't scale over several developers, because merges might get the plan count wrong.
moritz_ true 11:02
masak goes looking for that post
moritz_ www.shadowcat.co.uk/blog/matt-s-tro...g-no_plan/
it helps if you remember the title :-)
masak just found it too 11:03
mberends it would be good to discuss the issue here and then choose either 100% planless or 0% 11:04
moritz_ I see no need for a definitive decision
I'd be fine with planless testing for files where it's non-trivial to count 11:05
either because it's large, or because it's more complicated somehow
mberends the big generated test scripts for example 11:06
moritz_ also note that mst is talking about Perl 5 11:09
perl 6 compilers often die without error message
really afk & 11:10
jnthn oh morning 11:10
masak jnthn: \o 11:11
lunch &
mberends good localtime() jnthn
jnthn Hmm...akshually....I see it is no longer morning. Oops. :-) 11:12
mberends ng: say time() 11:13
p6eval ng 98b463: OUTPUT«1265713262.29492␤»
jnthn Well, that clearly confirms it's afternoon.
;-) 11:14
mberends++ # qx, qqx \o/
mberends thanks for the tips, they were 90% of the work :) 11:15
jnthn Knowing what to change is often a big part of things in Rakudo, yes. :-) 11:23
mberends Knowing into which file new code must go was also difficult. The docs are.. hmm... 11:28
the time() function took at least 5 attempts 11:29
mberends plans to do run() next, because proto needs it
jnthn The docs? What docs? 11:32
Oh, wait...that's the problem.
jnthn did attempt to do better by writing a metamodel one
colomon o/ 12:06
mberends \o 12:07
jnthn o/ colomon 12:09
mathw o/ 12:10
\o
\o/
o/
/| 12:11
/ \
colomon oooo, complete stick figure!
jnthn ASCII. Who said we'd ever need more? 12:12
huf we dont. 12:13
moritz_ does
huf but it's good to have the option not to use the rest ;)
huf even my moonspeak langauge is perfectly useable with just ascii 12:13
colomon jnthn: got a new version of what I presume is the old dispatch issue last night. 12:14
colomon I was working on writing another infix:<...> last night, and tried for the one that has an array on the left and a Whatever on the right. 12:15
jnthn colomon: I also hit it in S06-multi/typed-based.t last night. 12:16
colomon: We really, really need a fix/workaround for that.
moritz_ if the tests catch it, the tests are good :-)
moritz_ pats audreyt, colomon, KyleHa, himself and a lot of others
colomon when I tried it in the REPL, it called the version with scalars on both ends, putting the .elems of the array on the left-hand side.
moritz_: actually, that problem is so bad it blows up dozens if not hundreds or thousands of tests. 12:17
I don't think Rat or Complex math will work correctly until it is fixed.
jnthn colomon: OK, let's try and find a fix today. 12:19
colomon will be excited when pmichaud gets list assignment fixed, so he can try using the series.t test file to test the series work he is doing.
\o?
\o/
jnthn colomon: Hopefully Pm will be around and we can work something out.
colomon hmmm... \o? was a typo. but I kind of like the idea of mixed celebration and head scratching. 12:20
mberends jnthn: into which file would the "set up %*ENV" etc of old/builtins/globals.pir now go? builtins/Code.pir? 12:29
moritz_ %*ENV !~~ Code 12:31
but I don't know the answer either :/ 12:32
jnthn mberends: Perhaps src/glue/env.pir
moritz_: Well, it's not like there's One Perfect Answer. :-)
mberends glue/run.pir ? # '!fire_phasers'('INIT') ;) 12:33
jnthn Cool, INIT? 12:34
:-)
mberends: Well, the other option is to make an INIT phaser.
mberends %*ENV should be created before INIT, methinks 12:35
although it's probably splitting hairs 12:36
jnthn mberends: Yeah 12:38
Well
BEGIN maybe :-)
jnthn finally wins the jar fight with Tomcat.
mberends how about run()? in builtins/control.pir or builtins/Str.pir ? (or core/Str.pm?) 12:41
moritz_ maybe builtins/system.pir (then run, runinstead, qx etc. could go there) 12:42
jnthn mberends: In general, please don't add built-ins that are called directly into .pir files - even a wrapper in a .pm file with Q:PIR are better than that.
jnthn mberends: I'd suggest a system.pm perhaps. 12:42
src/core/system.pm
mberends: !qx is just "glue" so I don't mind that in .pir file, fwiw.
That is, we never call it directly. 12:43
Every built-in function that's declared in a .pir file rather than the core will hurt us later though.
mberends ok, will ponder all this and carefully decide. I'd been reluctant to create more files but that seems to be a popular suggestion too. 12:44
jnthn mberends: Personally, I'd rather have more files with names that make it obvious what they contain, than a bunch of possibles to look through.
And yes, I know, there's grep. :-)
mberends :-) 12:45
masak by the way. I tried and failed yesterday to get statement_mod_loop:sym<for> working in ng. 12:45
I got as far as making it loop the right number of times.
jnthn That's progress. :-) 12:46
jnthn masak: In what way did you haz a fail? 12:46
masak the point I got confused/stuck on is that there seems to be no analog to declare_implicit_function_vars in ng.
moritz_ wasn't declare_implicit_function_vars for blocks, and the <for> statement modifier works on a thunk, not a block? 12:47
masak also, a minor thing: it's <cond.=EXPR> in if, unless, while and until, but that name hardly seems appropriate for for :)
moritz_: line 162 of src/parser/actions.pm in master. 12:48
colomon jnthn: when you say "will hurt us later", do you mean that it makes Rakudo's core less portable to other p6 implementations, or is there some other reason I don't know to be against pir? (Other than my not knowing much pir, of course!)
jnthn colomon: That is one reason, but there's others. One is that auto-threading doesn't work, for example. 12:49
colomon: At least, not without extra effort.
moritz_: I've never quite got the thunk/block distinction, fwiw. 12:50
moritz_ jnthn: a block is something that's enclosed by { ... }
jnthn masak: Hmm. You only really need a $_ param in the block, mind.
moritz_: OK, at a Perl 6 level, yes.
moritz_ jnthn: a think is a bunch of code that runs only conditionally 12:51
jnthn moritz_: At a lower level, I'm not sure what (if anything) divides them though.
masak jnthn: yes, but I don't know how to plumb the plumbing, so I'm officially teh stuck.
jnthn calls Dave the Plumber
masak moritz_: what jnthn said. is there even a difference between a thunk and a block? 12:52
jnthn masak: Let me check it.
masak \o/
anyway, it didn't seem hard apart from that.
moritz_ jnthn: I've never looked at the low level aspect of thunking
colomon masak: was your implementation lazy?
masak but then t/spec/S04-statement-modifiers/for.t blows up on the third test because it can't shift a range :)
colomon: the question makes no sense to me. 12:53
colomon masak
masak colomon: I was quite tired when I tried, if that's what you mean.
moritz_ masak: 'for' and 'map' are both lazy, and only become eager in void context
masak yeah, but I didn't implement any of them.
moritz_ s/void/sink/ 12:54
masak I just tried to switch them on by generating the PAST.
colomon masak: for should work with iterators, but right now standard block for in ng isn't.
jnthn masak: So essentially you've made a PAST::Block?
masak falls off the deep end in details
jnthn: no, I was just adding a few lines in the grammar and actions files.
averaging down, I didn't do a thing. :) 12:55
masak s/averaging/rounding/ 12:55
jnthn :-P
masak: Got a diff? :-)
masak: But essentially I think you need to do something akin to what is in method pblock 12:56
masak well, I cleaned out my attempt, but I can easily recreate it in a few minutes.
ok.
jnthn e.g. to create a $_ signature for the LHS
hanekomu interesting, a translation of the Perl6 Advent Calendar into Japanese: d.hatena.ne.jp/uasi/ 12:56
jnthn erm
for your block.
masak: It'll look at bit like: 12:57
my $signature := Perl6::Compiler::Signature.new();
my $parameter := Perl6::Compiler::Parameter.new();
$parameter.var_name('$_');
masak hanekomu: yes, Tene and I have found that independently too. guess people on Twitter run across it sooner or later. :)
jnthn $parameter.is_parcel(1);
$signature.add_parameter($parameter);
add_signature($block, $signature, 0);
masak jnthn: thanks. I'll digest that and try making a better patch, rather than trying to recreate my old one. 12:58
jnthn masak: It's tasty because we actually have compile-time objects to represent parameters and signatures. :-) 12:59
masak \o/
takadonet morning everyone 13:10
masak takadonet: \o 13:13
pmichaud good morning, #perl6 14:04
mberends good morning!
colomon o/
masak lolitspmichaud!
takadonet morning 14:05
moritz_ that's a good occasion to continue our discussion about the Open Source Days in Copenhagen
and who will be there on which day
masak right.
masak is flexible
pmichaud I'm about to book tickets, but I plan to arrive CPH on the 4th and depart on the 10th 14:06
moritz_ iirc there was a "core" hackathon planned for Monday, right?
pmichaud yes, "core" hackathon planned for 8th and 9th
moritz_ and 9th. Ok
pmichaud (at least, that's what I'd like to see, depending on who can make it)
moritz_ then I'll try to depart on 10th too
masak ok, me too. 14:08
not decided on when to arrive yet.
pmichaud although I'd really like to go, I don't think I'll be able to make it to the dutch perl workshop
mberends I can stay only until about 7pm Sunday 7th because of $work :-( 14:09
pmurias mberends: re not using i plan, i think done_testing removed the need for declaring the plan, it protects against the test duing in the middle and avoid having to deal with maintaining an annoying number
mathw I wish I could go :(
Another time, though.
moritz_ mathw: what keeps you? $work?
mathw moritz_: money 14:10
so $work in a sense 14:12
because they need to pay me more
moritz_ :/
mathw or decide that my attending Perl events is a critical business need and let me expense it :D
mathw Basically I need plenty of notice and some planning, but I'll manage it at some point 14:14
Oh yes, and a new passport. Hmm. 14:15
I keep forgetting that expired
mberends pmurias: thanks, I know done_testing writes the 1..n line at the end instead of the beginning. It's a small change of the TAP format, which usually has the count at the beginning. Recent test harnesses (but not all old ones) can handle both layouts. 14:16
jnthn pmichaud: I'll be arriving to be there on the 6th, and be around until *. :-)
pmichaud: Though I do have some bits to do on the 10th, so those dates work out nicely. :-) 14:17
jnthn sets 8th and 9th aside for hackathoning 14:18
moritz_ I've sent my mail; I'll probably can't come earlier because I might have to move during this week 14:26
afk
colomon that's 8th and 9th of March? 14:32
jnthn Aye 14:33
pmurias mberends: if the harness doesn't see the 1..n line at all it assumes something is wrong 14:35
pmichaud the plan is to have hackathon activities on mar 6 + 7, and "core hacking" on 8 + 9
jnthn pmichaud: wfm. 14:37
I'll probably be more concious on 8th and 9th. :-) 14:39
pmichaud okay, looks like I have ticket reservations :-) 14:46
jonasbn pmichaud: for Copenhagen? 14:50
pmichaud jonasbn: yes. 14:51
jonasbn \o/
pmichaud jonasbn: I'll submit my talk this morning. Sorry I didn't do it earlier -- been out of town the past weekend
jonasbn pmichaud: great, don't sweat it
seen jnthn 14:52
masak ENOPURL 14:56
but jnthn was last seen half an hour ago :)
jnthn jonasbn: I'm about. 15:01
jonasbn hey, jnthn 15:01
jnthn (hidden in a debugger) :-)
jonasbn: hi :-)
jonasbn jnthn, when will you have a synopsis ready?
jnthn: hello :) 15:02
jnthn It's ready, I just need to submit it :-)
jonasbn super
jnthn jonasbn: Will do today.
jonasbn I just need dates from all of you guys, so I can book some accomodation
jnthn jonasbn: Arrive on the morning of the 6th
jonasbn jnthn: did you see my mail? - if you can fill in the template, that would be nice, then I can collect data on all of you guys 15:03
jnthn Yeah, but my mail client messed up the layout. :-/
I'll reply anyways.
mberends jonasbn: can I just let you know here? I need accommodation for Saturday only.
jonasbn okay I will make notes 15:04
hehehe
*lazy*
jnthn jonasbn: Plz I can haz also a pony? :-)
<grin>
jonasbn jnthn: did you eat your vegetables?
jnthn Yes!
jonasbn jnthn: did you submit you paper?
jnthn Onions and potatoes, anyway...
jonasbn: I have an email window open for doing so :-) 15:05
jonasbn hehehe
jonasbn jnthn: if you want ponies you should go to NPW in Iceland 15:05
land of ponies 15:06
jnthn: how long are you staying? 15:07
jnthn I'm SO going!
jonasbn: I figure I may as well stay around while Pm is also around. 15:08
jonasbn okay
jnthn jonasbn: That said, I guess Pm has a morning flight on the 10th, so I may as well head off on the 9th to crash at my own place in Lund.
It's not like it's all that far away. :-) 15:09
And plenty of trains into the evening.
jonasbn okay
noted
masak I might do the same, then.
proabbly take a late train back up to Uppsala. 15:10
jonasbn masak, are you coming in friday, there is a Nokia event friday night
pmichaud oops, gotta run. bb in 2 hrs
jonasbn masak: or saturday morning
pmichaud (might be able to connect at destination) 15:11
masak a Nokia event? is that one of those with the Copenhagen birds singing the Nokia tune?
I've heard of those :)
jonasbn Copenhagen birds?
I think it is just beer and food
masak yes. don't remember which type.
might have been starlings. 15:12
news.cnet.com/2100-1033-257826.html
seems it is primarily starlings, yes.
masak jonasbn: I don't know yet when I'll show up. I might come early, but not sure a Nokia event is reason enough. socializing with moritz_ and mberends would definitely be, though. 15:16
jonasbn mberends: will be here Saturday morning together with Jonathan
masak oh, ok. 15:17
jonasbn masak: but it is okay, I can spend the evening with the family, Saturday evening will be the 'Scroll bar' anyway
mberends we're driving overnight from Dutch Perl Workshop, probably arriving very early 15:18
masak ah, right. DPW. now I remember.
jnthn masak: Saturday's talk will need a lot of coffee. :-) 15:19
masak I'd recommend at least a brief lunch nap that day. :)
jnthn mberends: 7am is going to be the earliest I've been awake for *ages*, but I'm happy that I'll be achieving it by staying up all night, not having to get up early. ;-) 15:20
jonasbn napathon?
jnthn hehe
mberends drive-by hacking
jnthn masak: Short naps tend to give me headaches, annoyingly. :-/
jonasbn hehehe
masak jnthn: hm, I'm usually so wired up after a night without sleep that I don't notice headaches :) 15:21
jnthn :-) 15:31
jnthn -> Slovak
dalek kudo/ng: 3049f65 | (Martin Berends)++ | (2 files):
[tools/test_summary.pl] do per-test timestamps, begin calculating benchmarks
15:34
Trashlord hey, do you think Perl 6 is mature enough to depend on it for general purpose coding? 15:37
xinming Trashlord: I don't think so. :-) 15:40
Trashlord: Wait for the synopsis to be more stable. 15:41
Trashlord alright
I'm just reading perl6 code, and it looks promising. cleaner and better organized
moritz_ could somebody with root access please reset my password on feather3 and /msg me the new password please? 15:44
Juerd msg you? :) 15:45
moritz_: feather1:~moritz/feather3.pass 15:46
moritz_ Juerd: thanks
colomon Trashlord: I wouldn't worry about the specification being stable enough, but for sure there is not an implementation stable enough at the moment. 15:47
pmichaud hello again 15:48
colomon \o 15:50
pmichaud looka like I can irc from my phone :)
colomon \o/
colomon needs to get a better phone one of these days.
Trashlord colomon: what about modules (like CPAN), is there anything like this at all for Perl 6? 15:50
moritz_ Trashlord: there are only the basics of an installer
colomon Trashlord: Just a very simple script making it easier to install the random assortment of modules that people have played with so far. 15:51
moritz_ Trashlord: and some few modules
pmichaud afk again
moritz_ public service announcement: the timtowtdi.org server is going to be unavailable to us starting from next week (masak, pmurias, japhb have accounts there) 15:55
Trashlord alright, cool then 15:56
moritz_ oh, and wolfman2000
Trashlord do I need my shebang to have /usr/bin/parrot instead of /usr/bin/perl ? 16:09
Su-Shee perl6 16:09
Trashlord oh 16:10
pmurias moritz_: where will the evalbot migrate to? 16:25
moritz_ pmurias: it's already on a different server 16:26
on a machiine provided by diakopter++
Juerd Why the hell is the first byte of /etc/group missing on feather1? 16:30
It says "oot" instead of "root" :)
Juerd inserts an r :)
moritz_ misuse of vim? :-)
Juerd Probably
I noticed when doing ls -l
Suddenly all these files were owned by root:oot 16:31
jnthn back 17:13
Juerd: Aww...missed opportunity to put it back as a w :-)
masak hm. seems I have an hour of bonus time to hack on ng. 17:21
thusly, I will try jnthn++'s suggestions from earlier today. :)
colomon \o/ 17:22
TimToady is massivel backlogging; did you foax every figure out the <-> thing? 17:23
*ever
namely, that lambda is listed in the terminators?
masak oh! that didn't occur to me. :/ 17:24
that makes a lot of sense, though.
TimToady and *massively 17:25
wow, that y moved quite a few positions
masak :P
(hm, isn't there a bash.org quote with the same punch line?) 17:26
arnsholt So many, in fact, that I'd suggest it was two separate errors =)
masak bash.org/?35955
TimToady I dunno, I have some pretty strange delay loops in my brane.
pugs_svn r29663 | mberends++ | [t/spec] update some plan counts to make spectest progress stats more accurate 17:33
masak TimToady: why is infix:sym« p5=> » still defined in STD.pm, when S03 says it's not part of the Perl 6 grammar? 17:34
TimToady: also, I grepped through STD.pm looking for signs that <-> is treated as a terminator. didn't really find something. do you have a line number? 17:36
TimToady actually it's in infixstopper, line 4024 17:41
jnthn TimToady: Now, didn't figure out that one. :-)
masak ah. I see it now.
jnthn TimToady: But didn't spend too long on it either, knowing somebody like you would know the answer. :-)
masak these Perl6::Compiler::Signature and ::Parameter classes make me very happy! 17:45
TimToady
.oO(If all you have is introspection, everyone begins to look like neurotic...)
17:46
s/like//
masak better than everything appearing psychotic, I guess. 17:47
TimToady I am sufficiently psychotic to believe that instrospection should generelly be encapsulated inside a pattern language, and if binding isn't sufficiently powerful, it should be mae so 17:50
*made
masak jnthn: trying to grok what pblock is doing in Actions.pm. what does 'if $*IMPLICIT' test?
TimToady: does the 'and' in that sentence close over 'I am sufficiently psychotic...', or just over 'introspection should generally...'? 17:51
TimToady as far as I can see, the only spot in the Perl 6 design that mandates arity inspection right now is the right side of a series operator
masak what about map and grep? 17:52
TimToady I've said this about five times by now...map and grep should just fall naturally out of binding a sig as a subsig, just like subpatterns can be used withing a larger pattern 17:52
the sig's arity might not even be deterministic 17:53
TimToady series is special because we have to know how many old values to keep around 17:53
masak I must have either missed those earlier times you said it. :/ 17:54
...or not been ready for the truth. :P
I think I get it. just haven't used subsigs much.
TimToady the tricky thing that pm and I were discussion last week is how map/grep tell the sig that it's really a subsig 17:55
masak can the unresolved .reduce issue be resolved with the same thinking?
TimToady which .reduce issue?
masak I think I missed that subsig discussion as well...
TimToady but, yes, probably 17:56
masak well, ruoso once tried to generalize .reduce to multisubs.
I don't think a good way to do that was ever arrived at.
TimToady yes, I think it would solve that
masak \o/ 17:57
I don't see it, but I'm glad it might.
TimToady it has something to do with dispatching on a CaptureCursor rather than just a Capture 17:57
much like STD passes around cursors to track the current match pos 17:58
diakopter masak: how in the world did you find that bash.org allusion
TimToady and match results can tell you the endpoint
masak diakopter: I don't know, I'm good at guessing...
masak TimToady: yes, but won't multi dispatch be different with a variable number of arguments? 17:59
for example :($a, $b) and :($a, $b, $c) would both match in a .reduce scenario. 18:00
but the latter would be more specific, I guess.
TimToady yes, some kind of LTMish notion would presumably be operating there 18:01
masak right. 18:02
that's what I like about the concept :) it's a skewed, cursory kind of MMD :)
TimToady and is likely to drive jnthn++ mad...er...madder 18:03
masak ruoso was going to use it for dispatching on URLs, IIRC.
TimToady speaking of mad... :)
masak well, Catalyst already does something similar, but without the nifty .reduce method. 18:04
masak jnthn: so, I now have a Perl6::Compiler::Signature and a PAST::Op. They don't really combine, do they? 18:09
TimToady the main problem I see is how to get the new CaptureCursor state back from the dispatcher if it's immutable 18:10
masak right. 18:11
TimToady STD works by never returning anything *but* cursors
masak nod.
frettled TimToady: so what does a cursory inspection reveal, then? :) 18:12
masak many thanks, sir. 18:12
I will have to leave my kanelbulle at the door though, when I leave in half an hour. 18:13
frettled As long as you recycle.
masak I really try. 18:14
frettled Now I'm worried that TimToady will come up with a horrible retort.
TimToady only alchemists use horrible retorts 18:15
frettled As long as it's not a tort, that's fine. 18:18
masak it's a tort the first time, but later uses makes it a re-tort. 18:19
TimToady first you cycle, and then you re-cycle
masak yeah. I usually re-cycle home from work.
frettled and before you return, you have to turn
TimToady before you retire, you have to tire 18:20
hmm...
masak it's harder to get respect than just spect.
TimToady now yer just playin with werds 18:20
frettled do you have a ceipt for that?
masak I thought I something else, but I can't member it... 18:21
TimToady no, but had a pretty good cipe the other day
masak .duce 18:22
frettled member, member, the fifth ember 18:23
Or, as a friend's t-shirt reads:
Haikus are easy
frettled but sometimes they make no sense 18:24
refrigerator.
masak :D
TimToady I'm ally luctant to gard your joinder as splendant parté.
masak is getting ady to leave
TimToady *splendent 18:25
masak ooh, correcting typos under a projection!
frettled I'm not feeling jected, you know.
TimToady I ject your premise
TimToady *pmise 18:26
masak 哈哈 18:26
oh, we're not only doing pfixes now?
masak *we' 18:26
TimToady hmm, now thinking of chinese characters with missing radicals
mberends then I'm mbends 18:27
frettled TimToady: I suppose they're in jail.
masak mberends: I got a visual image of you as a steel robot with a drinking problem. :)
mberends lol
TimToady we could chop 日 [ri4] out of a lot of characters
masak few things are more radical than the sun, I s'pose. 18:28
TimToady though it's gonna make it difficult to speak 本語
masak at least to read it. 18:29
MaL0 hi 18:29
TimToady howdy
masak hello.
masak jnthn: I think I learned a bit more by trying to get the signature in there, but now I feel like learning more about PAST, in order to understand where I'm failing :) 18:33
masak also, I have that other thing I wanted to implement, the... um. 18:34
the anon enums.
so I'll probably give this up for the time being and try that instead.
masak mberends: uh, did you just add timestamps to all Test.pm output by default? 18:36
I'm not saying I mind, I'm just slightly surprised by this. :) 18:37
masak I mean, it'll affect all Perl 6 projects with tests. 18:37
probably not significantly, but still. 18:38
PerlJam timestamps? 18:38
masak it's in the latest ng commit, 3049f6
colomon woah, those are freaky. 18:39
# t=1265740722.65674
ok 1 - simple
# t=1265740722.67646
ok 2 - # SKIP calling positional params by name
# t=1265740722.68134
starting time and the time between each test.
masak I'm not sure that's what we want to do, long-term :)
Juerd jnthn: I wonder what harm changing these names does. You make it sound rather tempting :) 18:40
jnthn Juerd: Or kit. ;-)
PerlJam masak: I *am* sure it's not what we want to do long term :)
masak PerlJam: right. I'm just being diplimatic.
jnthn masak: ah, I see you got stuck on for
masak a little. 18:41
frettled masak: I think it's a good idea if it's easy to toggle
jnthn masak: I'm kinda distracted debugging Mahout at the moment, so ain't been following here...sorry.
masak frettled: it's presently on by default.
jnthn: no problemo. 18:42
PerlJam though I tend to agree with the sentiment. We need a good benchmarking tool like we have a good testing tool; it does make sense to utilize one to get the other. 18:42
masak jnthn: I still figure I'll learn something in the long run.
frettled it's not just for benchmarking, but also for debugging 18:42
PerlJam frettled: give me a debugging scenario please 18:43
frettled PerlJam: you make a change, you run the tests while you go for coffee/lunch/whatever, and you come back -- then you can see whether the change introduced a suspiciously significant time impact to the relevant test(s). 18:44
For instance, a test might pass either too quickly or too slow according to your expectations.
My attention span certainly isn't sufficient for watching tests as they run. 18:45
colomon frettled: doesn't that imply you'd need a record of the "normal" time the tests take?
masak we seems to agree that the timestamps shouldn't be on by default.
s/ms/m/ 18:46
masak too hugry to type
time for nom. &
frettled colomon: it implies that you have some reasonable expectation of it, at least, either based on previous measurements, or because you've run a particular set of tests frequently enough to know.
masak: absolutely
mberends masak: yes, timestamps experimentally. If it doesn't work out, we revert it. 18:47
PerlJam mberends: just make it optional and let it be :)
mberends: (off by default) 18:48
mberends ok, will make timestamps optional very soon 18:49
frettled We're timing you. ;) 18:50
mberends *sharp intake of breath*
PerlJam frettled: that particular scenario would work better if you were recording the execution times of your tests between runs so that you can access the historical data and even provide some sort of automated message to the effect of "test #x took significantly different time to run" or something 18:50
mberends PerlJam: that's the purpose, it's under construction 18:51
frettled PerlJam: Yes, typically, you'll use a framework around it. 18:52
You might use e.g. the "script" command for that.
Actually, "script" might be sufficient in itself for that particular purpose, since it can timestamp any output.
PerlJam indeed 18:53
(and doesn't require mucking with Test.pm :)
frettled It's typically recommended for replaying things at the same speed they happened, with "scriptreplay".
PerlJam: it's a wheel, someone has to invent it.
Plus: it's a wheel you can package with the implementation, you know it's there, as opposed to a pretty unix-specific program -- I'm not even sure that it exists for other systems than GNU/Linux. 18:54
dalek kudo/ng: f018377 | (Martin Berends)++ | Test.pm:
[Test.pm] turn off timestamps completely, for now. I'll be back...
19:01
mberends breathes again 19:02
frettled mberends: 12 minutes, 16 seconds 19:02
mberends heh 19:03
dalek kudo/ng: c1c6cd2 | duff++ | tools/rakudo-swarm.config:
[tools] Add config file for code_swarm in case anyone else wants to play with it
19:08
kudo/ng: 20eae2d | duff++ | Test.pm:
Merge branch 'ng' of [email@hidden.address] into ng
supernovus Just wondering, in rakudo, are file/directory tests implemented? 19:55
mberends they work in master but not yet in ng (it's become fairly low hanging fruit because it's been done before, very similarly, if you want a yak to shave) 19:58
TimToady ng: my @rray=(gather loop (my $calar = 0; $calar <= 6; $calar++){take $calar;}); say @rray 20:26
p6eval ng 20eae2: OUTPUT«7777777␤»
TimToady colomon: that is correct behavior; take returns a parcel, which might be bound rw
colomon TimToady: !!!!
TimToady so that just returns the same variable N times
TimToady just as map would, if you referenced a variable outside its scope 20:27
$calar is defined outside the block, therefore is not cloned
colomon easy enough to work around, but I thought we "fixed" this behavior back in Rakudo master.
supernovus Hmm, in a subst() should the replacement closure be able to use a match? As in $string.subst( / \< \% (\w+) \% \> /, { %opts($0) }, :global ); ? 20:28
TimToady ng: my @rray=(gather for 0..6 -> $calar {take $calar;}); say @rray
p6eval ng 20eae2: OUTPUT«0123456␤»
colomon TimToady: your example works because $calar is "fresh" each time through the loop, right? 20:30
TimToady correct, a parameter is lexically internal to the block
supernovus: yes, the block's $/ ought to start out aliased to OUTER::<$/>
$/ is rebound in a block only if that block does its own match 20:31
colomon supernovus: I think that may be broken in ng at the moment (possibly master as well).
TimToady ng: my @rray=(gather loop (my $calar = 0; $calar <= 6; $calar++){take $calar.WHICH;}); say @rray 20:32
p6eval ng 20eae2: OUTPUT«0123456␤»
TimToady that works too
supernovus colomon: Ah, that may explain it. I am using master, but it is not working. I'll comment it out and work on a workaround.
PerlJam supernovus: I think $/ is passed as a parameter to the block (for your workaround) 20:33
TimToady master might understand $OUTER::0 or some such
frettled TimToady: I almost expected $calar.ΩHICH or something
TimToady all the luck is running out of that horseshoe, because it's pointing down 20:34
frettled :)
supernovus PerlJam, I tried using $/[0] but rakudo complained: Method 'postcircumfix:[ ]' not found for invocant of class 'Failure'
TimToady oddly, unicode doesn't seem to have any lucky horseshoes
because the inner $/ was not properly aliased to OUTER::<$/> 20:35
frettled does that mean that Unicode is shoddily made? :
PerlJam supernovus: try that with $_ instead.
TimToady and master still inits vars with Failure instead of Mu 20:36
(or whatever the declared type is)
ng: my $x; say
p6eval ng 20eae2: OUTPUT«␤»
supernovus PerlJam: Thanks! $_[0] worked great. 20:37
TimToady ng: my $x; say $x.WHAT
p6eval ng 20eae2: OUTPUT«Mu()␤»
frettled I really look forward to ng as master.
TimToady cow typing...
colomon frettled: I really look forward to ng working. ;)
jnthn back
frettled colomon: that, too :D
colomon It's definitely getting there now... 20:38
jnthn finally remembers to send in his talk submission for OSD. :-) 20:48
ruoso TimToady, masak, re CaptureCursor... that's the reason for the PushBack Iterator to exist... 20:50
the idea is that you get an iterator from the capture 20:51
and consume it as you try to bind
pushing it back if you fail
TimToady binding shouldn't consume the original capture, or you can't do nextsame 20:52
ruoso maybe getting the iterator from the capture isn't destructive 20:53
TimToady and you can conceivably have cursors pointing at various spots simultaneously
ruoso exactly 20:54
and the CaptureCursor (which does Iterator::PushBack) is itself a capture that can be used in a routine call 20:55
TimToady binding still has to know somehow whether to anchor the end or not 20:56
ruoso I'm not sure it's *in* the binding 20:57
maybe it's outside it
i.e. reduce
TimToady reduce wouldn't care; it's ordinary dispatch that anchors 20:58
ruoso but reduce isn't ordinary dispatch
TimToady I just said that
map and grep aren't ordinary either
ruoso ah... I read it backwards
TimToady otoh, using pushback means essentially that we're running with mutable cursors rather than immutable, and that causes...issues... 20:59
jnthn is a little concerned how this will play with multi-dispatch.
ruoso right... so every call would somehow "return" the CaptureCursor (or maybe it just consumes it)
TimToady, it can be non-destructive 21:00
TimToady then you have to get the new one back out somehow
ruoso and the regular dispatch fails if there's something left in the capture after the bind
er... in the CaptureCursor
jnthn colomon: ping
TimToady jnthn: basically, it's just a dynamic context of some sort (presumably supplied by the Capture/Cursor) that tells it to assume a *@ on the end 21:01
ruoso TimToady, maybe you decide that at dispatch time... you can either send a CaptureCursor that will give you the introspection you want
colomon jnthn: pong
jnthn TimToady: Ah, seen that way, it's not quite so scary.
ruoso or just send the Capture and ignore it...
jnthn colomon: OK, I want to look at this dispatchy bug :-)
ruoso then the dispatch would behave differently in the case of a CaptureCursor
jnthn colomon: Do you have a minimal example handy at all?
colomon jnthn: give me a moment. 21:02
jnthn Thanks :-)
colomon let me see...
ng: say 'a' cmp 'b';
p6eval ng 20eae2: OUTPUT«-1␤»
colomon ng: say 'a' before 'b'
p6eval ng 20eae2: OUTPUT«Nominal type check failed for parameter '$a'; expected Num but got Str instead␤current instr.: '&infix:<cmp>' pc 222902 (src/gen/core.pir:7373)␤»
frettled hmm
ruoso TimToady, dynamically invoking a sub with a modified signature is quite an interesting way to solve it
TimToady thought about that 21:03
it seems heavy handed
frettled ng: say 'b' cmp 'a';
p6eval ng 20eae2: OUTPUT«1␤»
colomon jnthn: and if you look at the source for before, all it does is call cmp and look at the result.
frettled woot.
jnthn ruoso: That feels...odd.
colomon: OK
ruoso of course it looks terribly slow
TimToady and, in fact, it's one of the solutions proposed for Pm-19
ruoso but optimizer could take it away very easily
since few places (reduce) need it 21:04
TimToady I think it's probably better to pre-optimize it by design here
consider how many places map pops up in the internals
reduce is rare compared to map and grep 21:05
ruoso (ok, map and grep could also be an use case for that)
but varying-arity map/grep/reduce is quite unusual
TimToady still better not to have special cases 21:06
jnthn TimToady: It does feel like a kind of contextual thing that the binder see.s
*sees
TimToady could even be solved with a dynamic variable, but that seems silly when there's an object to carry the info in 21:07
jnthn TimToady: Though I dobut a traditional context variable would work since I guess you gotta make sure it doesn't leak further down the call chain...
TimToady and the dynvar could affect other calls accidentally
ruoso Okay... so the harder issue is how to decide "should I fail if there is some capture left?"
jnthn ...
:-)
colomon: Ah. :-/
colomon: For lexical multis it doesn't show up. For our-scoped ones it does.
ruoso so maybe we use an explicit type CaptureCursor that tells "ignore if you don't consume all of it" 21:08
TimToady or that's the default, as with subrules
and the anchoring happens outside
colomon jnthn: that seems like a mighty clue.
TimToady some .parse equivalent requires the whole original to parse 21:09
ruoso TimToady, that forces a two-step dispatch
jnthn colomon: It rather is, yes. 21:11
TimToady so maybe just a flag that says "I care", but the ramifications of that can still be determined externally
jnthn TimToady: Could it just be some "flag" on the capture? 21:12
ruoso TimToady, right... the binding would fail with a determined exception
could the "flag" be a more specific type?
jnthn ruoso: Hmm
Maybe
jnthn ruoso: I guess there's a desire to keep captures low-level-ish too. 21:13
ruoso er... that's no longer the case for a while
ruoso jnthn, I tried to sell that idea before ;) 21:13
but it's Capture, not capture
jnthn ruoso: lol
ruoso it's non-native 21:14
jnthn ruoso: Well, as with Rakudo's signatures...
...it's a Signature if anyone asks for it. :-)
ruoso but what if you build your own Signature object?
jnthn For now, you don't.
In the future, we'll cheat for known natives and obey the interface otherwise.
ruoso that's how SMOP does all the time 21:15
for every single dispatch ;)
ruoso .oO( maybe that's why it's so slow )
jnthn Maybe. Parrot's method-calling speed is hardly stellar too, which makes me reluctant on that front.
ruoso but even if it's low-level-ish 21:16
jnthn A subtype is still possible, yeah.
ruoso it would be a different PMC in Parrot (iiuc)
jnthn Right.
Just thinking how to make that work. :-) 21:17
ruoso # after the binding code
if ($capture ~~ CaptureThatShouldBeEntirelyConsumed && $capture) { fail ... }
TimToady well, let's call 'em different types in any case, just to keep 'em straight in our heads, even if the only difference ends up being a bit somewhere other than the type 21:18
TimToady or maybe we should invent meta-adverbs :D 21:18
ruoso in the low-level side it'll probably end up being a straight pointer comparison
most of the time, anyway
jnthn Yeah 21:19
TimToady sounds we're in violent disconfusion 21:19
jnthn colomon: Thing is, we install the subs into the namespace or lexpad "ourselves"
TimToady sounds like, even
jnthn TimToady: The missing piece I guess is how this looks at a Perl 6 level though. 21:20
ruoso TimToady, so the default is allowing incomplete bind? or disallowing it?
frettled TimToady: madverbs?
frettled is confuzzled.
PerlJam frettled++ :)
ruoso .oO( incomplete as in "did it consume the entire capture?" ) 21:21
jnthn colomon: Eh. I made 'a' before 'b' work with a minor hack.
PerlJam "consume" sounds like another eager/lazy distinction to me.
TimToady ruoso: well, default is probably to check anchor, since that's intrinsic to lambda
jnthn TimToady: My feeling is that you'd have to ask to call something and not care if it consumed all of the args. 21:22
colomon jnthn: general hack or special purpose to that function?
jnthn colomon: general
TimToady jnthn: yes, as in Pm-19
ruoso agrees with jnthn
jnthn colomon: oh damm, it fails every spectest.
colomon jnthn: I'd be happy to give it a try... ;)
jnthn: I take that back.
TimToady where $cursor in Pm-19 is our altered capture type, presumably 21:23
ruoso likes the name CaptureCursor for that respect
Pm-19? 21:24
TimToady svn.pugscode.org/pugs/misc/pm.txt
colomon is suddenly worried that breaking every spectest might be legit...
jnthn colomon: Not sure yet...digging. 21:25
ruoso needs to decommute & 21:26
rjbs Patrick Michaud did a lightning talk about Perl 6 operators a year or so ago.
rjbs It was about shuffling and dealing playing cards. 21:27
I know he published the slides, but I cannot find them. Help?
TimToady The senile geezer draws a blank. 21:28
lisppaste3 colomon pasted "pmichaud++'s cards example" at paste.lisp.org/display/94665
colomon I don't know where the slides are, but there's the code.
rjbs Found it! www.pmichaud.com/2009/pres/oscon-pe...start.html 21:29
thanks.
jnthn colomon: Oh. I mighta just broken the exporter.
colomon: ooh, yes, tweaking that and we look a bit better (well, my sample spectest runs...trying the bunch now) 21:30
colomon jnthn: \o/ 21:32
jnthn colomon: 1 new fail, but I know why and how to fix. 21:34
colomon jnthn: \o\ /o/ \o/
jnthn C:\Consulting\rakudo>perl6 -e "say 'a' before 'b'"
1
:-)
ng: our multi foo(Rat $x) { say 'r' }; our multi foo(Str $x) { say 's' }; foo(4.2); foo('lol'); 21:35
p6eval ng 20eae2: OUTPUT«r␤Nominal type check failed for parameter '$x'; expected Rat but got Str instead␤current instr.: '&foo' pc 198 (EVAL_1:78)␤»
jnthn That was my minimal test case, and it passes now too.
OK, let me clean this up, and then I'll push.
PerlJam er ... before? Is that a longhand lt ? 21:36
jnthn colomon: oh the irony. The test that fails, fails because I changed it to make it pass a couple of days ago. 21:37
And if I change it back it will pass again.
colomon PerlJam: no, before is lt for anything.
before is to cmp as < is to <=> 21:38
dalek kudo/ng: 4e5777c | (Martin Berends)++ | (2 files):
[core/system.pm] add a simple run(Str) returning Int
PerlJam colomon: gotcha
(I assume there's an "after" too?) 21:39
colomon PerlJam: yup.
jnthn ng: say 'beer' before 'hacking' 21:40
p6eval ng 20eae2: OUTPUT«Nominal type check failed for parameter '$a'; expected Num but got Str instead␤current instr.: '&infix:<cmp>' pc 222902 (src/gen/core.pir:7373)␤»
pugs_svn r29664 | jnthn++ | [t/spec] Generalize a test I 'corrected' a couple of days back. 21:41
colomon PerlJam: though as jnthn++'s example shows, before and after are broken at the moment in ng. :)
pugs_svn r29665 | jnthn++ | [t/spec] Catch up on s/Num/Rat/ spec change for thingies like 1.4.
jnthn colomon: Hey, I like this patch. 21:44
2 files changed, 2 insertions(+), 5 deletions(-)
colomon :)
jnthn colomon: re-buidling/re-testing since mberends++ beat me to the commit :-) 21:45
mberends it's fair because your laptop's newer and faster ;) 21:46
jnthn mberends: Also because I'm on my even-faster quadcore desktop at the moment. :-) 21:47
mberends wheee!
jnthn Great for parallel spectests. 21:48
Phew, still looks good.
If anyone has a small tuit, S16-filehandles/io.rakudo gives a weird plan at the start and throws off the harness. 21:49
(Did it since before my patch though.)
dalek kudo/ng: 8733e74 | jonathan++ | src/ (2 files):
Since we install methods into the lexpad and namespace ourselves, we can happily avoid the Parrot behavior that hoses our multi-dispatches by naming them sigilless for Parrot's sake (in the namespace they're still &foo of course). Simplifies export because methods aren't a special case on stringification now.
21:50
jnthn colomon: OK, anything else I should look at? 21:51
diakopter TimToady: that blank you drew can stand for any letter, you know. 21:52
colomon \o/
colomon jnthn: nothing I can think of at the moment. What you just did was huge, I think... 21:53
jnthn Yay. :-)
colomon I'm working on cooking dinner now, but I'll try to give it a spin at the same time, and a more thorough inspection later. 21:54
jnthn TimToady: my $thingy = <a b c>; say $thingy.WHAT; # What is it? 21:56
TimToady: I just found a spectest that things Array. :-)
jnthn *thinks 21:58
colomon why does S16-filehandles/io.t have "plan 0" ? 22:01
mberends oops, that was me, because it totally crashed on the sub nonce() line... 22:02
the 0 went better with the tools/test_summary.pl harness. sorry. 22:03
jnthn Ah, phew, not a new regression in ng then.
colomon mberends: it crashed with a recent ng? 22:05
what platform?
mberends ng on linux/x86
I think line 24 is the problem
TimToady jnthn: I expect it's a Seq. 22:06
mberends io.rakudo:24 sub nonce () { return ".{$*PID}." ~ (1..1000).pick() }
jnthn TimToady: OK, I'll update said test. 22:07
mberends no longer fails here, it passes all 69 tests now 22:08
colomon jnthn: hmmm, my infix:<...>(@lhs, ::Whatever $rhs) still fails miserably. But after works, so \o/ 22:10
need to stir dinner now...
jnthn colomon: Note it'll be treating ::Whatever as a type capture... 22:11
mberends jnthn: shall I quickly fix S16-filehandles/io.t or are you on it? 22:12
pugs_svn r29666 | jnthn++ | [t/spec] Catch up a test on recent Array/List/Seq changes.
jnthn mberends: Please do, I'm on something else.
ng: sleep 22:15
p6eval ng 4e5777: OUTPUT«Could not find non-existent sub &sleep␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn mberends: Did you mention sleep the other day?
pugs_svn r29667 | mberends++ | [S16-filehandles/io.t] correct a 'plan 0' back to 'plan *'
mberends jnthn: planning to do that, but it needed time() first, which is now done. 22:16
jnthn mberends: ah, ok, cool
mberends trouble is, I need *real* sleep soon
jnthn That'll be another test. :)
;-) 22:17
ng: rx/^'first line'/
p6eval ng 4e5777: OUTPUT«sh: ./perl6: No such file or directory␤»
jnthn std: rx/^'first line'/
p6eval std 29665: OUTPUT«ok 00:01 108m␤»
mberends jnthn: I have a long day at $work tomorrow. I can write sleep() and add the tests in the evening unless someone picks it as LHF 22:19
jnthn mberends: No hurry - I just wanted to check it hadn't been put in and something had gone awry, that's all. :-) 22:20
mberends I'd forgotten about it, distracted by proto's needs :) 22:21
jnthn That's a cool thing to hack on too. 22:23
ng: say 'beer' before 'sleep' 22:24
p6eval ng 8733e7: OUTPUT«1␤»
jnthn \o/
mberends ok, ng compiles proto's Ecosystem.pm to pir with only two "workarounds": delete the unspaces, and replace $0 etc with $/[0] etc 22:34
Installer.pm is much worse off. 'use Ecosystem' is a noop. that's a biggie. 22:36
jnthn: will the 'use' and 'require' code port from master? I know the old versions fairly well. 22:38
(proto is a good Yak to test ng) 22:39
ok, must sleep soon, goodnight 22:41
jnthn phenny: tell mberends sorry, connection dropped...I think use and require may need some review since imports need to be lexical etc - check with Pm. 22:47
phenny jnthn: I'll pass that on when mberends is around.
dalek kudo/ng: fcb9e3c | jonathan++ | t/spectest.data:
Updated S29-any/isa.t passes.
22:48
kudo/ng: f456c24 | jonathan++ | (3 files):
Parse a couple more types of regex quoting constructs. We now get to pass another 3 tests from S05.
jnthn That's 4 more. :-)
eternaleye colomon: you want infix:<...>( @lhs, Whatever $rhs ) not ::Whatever 22:53
Also, you could just do Whatever ) without a variable, since all you need is to know it's there, seeing as WHatever is a singleton
colomon eternaleye: Just Whatever $rhs gets me 22:55
Invalid typename in parameter declaration at line 234, near " $rhs)
but if I class Whatever { ... } it complains it is already defined.
eternaleye Hm.
colomon same error with just Whatever (no $rhs).
eternaleye Well, ::Whatever will capture the type of that argument and store that type under the name Whatever, rather than constraining the argument to Whatever, which isn't what you want 22:56
colomon right, I got that message. :)
eternaleye ng: say Whatever.WHAT 22:57
p6eval ng f456c2: OUTPUT«Whatever()␤»
jnthn colomon: I guess that means "plz I can haz class stub declarations?" :-)
eternaleye ng: say *.WHAT
p6eval ng f456c2: OUTPUT«Whatever()␤»
eternaleye AH
jnthn colomon: Alternatively, maybe move Whatever earlier on in the bootstrap.
jnthn colomon: Oh, or maybe it's something else. 22:58
colomon yes, I'm getting weird messages still 23:00
colomon ah, it complained when I said $a ~~ Whatever. 23:01
jnthn ng: sub foo(Whatever $x) { say "ok" }; foo(*)
p6eval ng f456c2: OUTPUT«ok␤»
colomon $a ~~ ::Whatever seems to be fine.
jnthn colomon: What file are you trying to add to? 23:03
colomon operators.pm
jnthn ah
Yeah, it's before Whatever in the bootstrap.
std: class Foo { ... }
p6eval std 29667: OUTPUT«ok 00:02 107m␤»
jnthn std: class Foo { ... }; my Foo $x;
p6eval std 29667: OUTPUT«ok 00:01 106m␤»
jnthn Hmm 23:04
ng: class Foo { ... }
p6eval ng f456c2: OUTPUT«No exception handler and no message␤current instr.: '&fail' pc 15242 (src/builtins/Junction.pir:207)␤»
colomon ng: ('a'..'g').map({.say}).eager 23:05
p6eval ng f456c2: OUTPUT«a␤b␤c␤d␤e␤f␤g␤»
colomon \o/ 23:05
dalek kudo/ng: 057d093 | jonathan++ | src/Perl6/ (2 files):
return without any arguments should not be an error, but rather just return Nil.
dalek kudo/ng: 81273d8 | (Solomon Foster)++ | src/core/Range.pm:
Make Range!min_test and Range!max_test use after and before rather than lt and gt.
23:23
pugs_svn r29668 | colomon++ | [t/spec] Defudge tests that now work. 23:24
jnthn Yay. :-) 23:25
colomon: I'm part of the way to a patch for stubs.
(for packages)
colomon \o/
jnthn Also, it seems multiple return values work "out of the box" in ng, and return; also works after a patch earlier. 23:27
Mmmm...tmave krusovice... 23:28
colomon ng: say ~(3..6) 23:29
p6eval ng 057d09: OUTPUT«3..6␤»
jnthn rakudo: say ~(3..6) 23:31
p6eval rakudo 1d4928: OUTPUT«3 4 5 6␤»
colomon range.t expects that behavior.
jnthn I think I do too.
colomon but I don't know what, if anything, is spec'd.
jnthn ng: say 3..6 23:32
p6eval ng 057d09: OUTPUT«3456␤»
jnthn ah
rakudo: say 3..6
p6eval rakudo 1d4928: OUTPUT«3456␤»
jnthn Ah, ok
More subtle.
Hm
colomon Yeah, Range isn't spec'd as having .Str on it. 23:33
If it doesn't, then you get Method 'Str' not found for invocant of class 'Range' 23:36
jnthn That feels a tad awkward/unhelpful though.
Eh well, hopefully TimToady backlogs and has an idea. :-) 23:37
colomon I'm trying the version from master now to see how it does.
no joy there either. 23:38
jnthn colomon: Think I have a first cut of stubs working. :-)
colomon \o/ 23:39
I think I'm about to run out of battery, which will probably end my hacking for a while. :)
jnthn It's getting kinda late here too.
I sorta want to do my (...sig...) := foo(), but figure I'll do that tomorrow :-) 23:40
jnthn I fail some of S03-operators\range-basic.t - maybe I'm missing a pull though? 23:40
colomon If 4 fails you're missing a pull. 23:40
jnthn Yup, 4. 23:41
OK, pulling, re-testing, pushing. :-) 23:42
colomon dang it! you beat me again!
colomon oh, nope, I beat you this time. :D 23:45
jnthn aww!
dalek kudo/ng: 153adb7 | (Solomon Foster)++ | src/core/Range.pm:
Implement version of Range.Str which produces the expected (but not spec'd?) "3 4 5 6".
jnthn It's my own fault for getting distracted by lolcats. 23:47
TimToady in keeping with the notion that .. represents intervals more than serieses these days, it maybe that ~ returning "3..6" from a range is reasonable 23:48
and it gets more reasonable as 6 approaches infinity
though we'll have to decide how to stringify an infinite series as well 23:49
jnthn I'd not object to it stringifying that way. 23:50
(Good point on the infinities.)
TimToady: I dunno if you had any more thoughts on resolving the "multi role" vs "specific role" issue?
TimToady: Trying to pretend both are the same thing is tripping me up a bit. 23:51
jnthn I agree that in general you shouldn't have to care, just as you can do foo() and not care if it's multi or single. 23:52
But there's a way to care when you need to.
TimToady well, I'd rather have &foo mean "whatever it is you get if you call foo", and let it degerate to a bare invocation in some cases, than to default to bare and have no way of naming the multi easily 23:54
*degenerate
there's something to be said for mediating it all through the proto, if there is one, and the proto is really the &foo, which 23:55
delegates to its multies
(leaving something else to function as a default) 23:56
jnthn Hmm
But my point is more than I can test if I have a multi if I need to (&foo ~~ Multi), which is rarely important... 23:57
dalek kudo/ng: ae7824c | jonathan++ | src/Perl6/ (2 files):
Initial support for stub packages - just doesn't generate any code and notes that it shouldn't complain on 're'-declaration.
jnthn But if I declare role R[::T] { } and role R[::T1, ::T2] { }
R is kinda different from, say, R[Int] 23:58
It's the name of a whole bunch of related roles.
Or at least, that's how I've been seeing it so far.
There's the odd case in metamodel-y bits where it matters which one we have, and while I've got some tricksy way of doing it at a guts level, there's no way of doing it at a Perl 6 level so far. 23:59
And given I'm aiming to reduce magic and write more of Perl 6 in Perl 6, I'm kinda aching for one at the moment.