»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by diakopter on 25 January 2010.
00:03 ash_ joined, xomas left, ash_ left 00:04 nihiliad joined 00:11 jferrero left 00:17 k23z__ left 00:31 k23z__ joined 00:41 mberends left 00:42 lichtkind joined
lichtkind moritz_: machst du was diesjahr beim perl workshop? 00:44
00:57 ignacio_ left 00:58 meppl left 01:04 lestrrat is now known as lest_away 01:10 dugg left 01:11 astoria` left 01:12 astoria` joined, cdarroch left 01:14 eternaleye left 01:17 mssm left 01:19 am0c joined 01:26 eternaleye joined 01:35 lest_away is now known as lestrrat 01:36 lue joined
lue hello there. 01:37
01:37 lichtkind left 01:38 solarion joined
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
02:02 Limbic_Region joined
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
02:48 cognominal left
lue if they aren't, then they should be. 02:50
02:55 woe left, ShaneC left, woe joined
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
03:10 drbean joined 03:12 k23z__ left
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.
03:17 cl58 joined
cl58 moritz_: ping 03:17
03:18 cl58 left
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.
03:23 fda314925 left, Chillance joined 03:41 agentzh joined
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.
04:09 agentzh left
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
04:28 eternaleye left 04:59 Limbic_Region left 05:04 hercynium left 05:06 mberends joined 05:13 autark joined, petdance joined 05:14 dual left 05:16 k23z__ joined 05:17 autark left
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
05:21 cjk101010 joined 05:30 k23z__ left, k23z__ joined
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
05:55 BitJam left 05:58 k23z__ left 05:59 stephenlb left
lue is trying to instill life into the irc. Going into the future to find hope. 06:00
06:02 drbean left 06:03 galf joined, galf left
lue is back from the future. Will not reveal details of the past, because I saw I didn't. 06:04
06:05 nihiliad left
lue beh. Nothing going on here. G'night. 06:26
06:26 lue left 06:27 dual joined, ihrd joined, ihrd left 06:32 Su-Shee joined 06:36 k23z__ joined 06:44 petdance left 06:50 Chillance left 07:07 kaare joined, kaare is now known as Guest94147 07:08 clausi joined 07:18 uniejo joined 07:26 agentzh joined 07:31 meppl joined 07:32 agentzh left 07:38 eternaleye joined 07:50 justatheory left, drbean joined
dalek kudo/ng: c5dda73 | (Martin Berends)++ | (4 files):
Add qx{} and qqx{}, except for hash_to_env() because %*ENV is missing
07:56
08:08 iblechbot joined
moritz_ good morning 08:22
mathw Morning 08:24
08:27 james joined
james hi 08:27
08:27 james left, dj joined
dj jj 08:29
08:29 dj left, fridim joined 08:33 IllvilJa left 08:49 k23z___ joined, k23z__ left, barney joined 08:57 fda314925 joined 09:23 eternaleye left 09:30 broquaint left 09:31 dakkar joined 09:33 eternaleye joined 09:34 IllvilJa joined 09:52 meppl left 09:58 drbean left 10:10 sunnavy left 10:18 eternaleye left 10:19 eternaleye joined
dalek kudo/ng: 98b4632 | (Martin Berends)++ | src/builtins/control.pir:
[builtins/control.pir] implement time()
10:20
10:23 masak joined
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
10:30 lestrrat is now known as lest_away 10:40 orafu left, orafu joined 10:48 eternaleye left, eternaleye joined 10:49 orafu left 10:51 orafu joined
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! :)
10:54 k23z___ left
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.
10:59 mssm joined
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
11:05 sunnavy joined
mberends the big generated test scripts for example 11:06
11:08 orafu left
moritz_ also note that mst is talking about Perl 5 11:09
perl 6 compilers often die without error message
really afk & 11:10
11:10 old_gray_bear joined
jnthn oh morning 11:10
11:10 Su-Shee left 11:11 Su-Shee joined
masak jnthn: \o 11:11
lunch &
mberends good localtime() jnthn
11:11 orafu joined
jnthn Hmm...akshually....I see it is no longer morning. Oops. :-) 11:12
11:12 schmalbe joined 11:13 barney left
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
11:37 drbean joined 11:42 old_gray_bear left 11:51 broquaint joined
colomon o/ 12:06
12:07 eternaleye left
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 ;)
12:13 wanradt_ left
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
12:14 moritz_ sets mode: +ooo colomon huf mberends
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
12:20 cognominal joined 12:24 bluescreen joined
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. :-)
12:33 payload left
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.
12:35 SmokeMachine joined
mberends %*ENV should be created before INIT, methinks 12:35
although it's probably splitting hairs 12:36
12:36 iblechbot left
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
12:41 bluescreen left
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.
12:42 macae joined
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
12:45 ruoso joined
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
12:46 bbkr left
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.
12:46 bbkr joined
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
12:55 bluescreen joined
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
12:56 mssm left
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/
13:09 mssm joined 13:10 takadonet joined
takadonet morning everyone 13:10
masak takadonet: \o 13:13
13:19 SmokeMachine left 13:37 payload joined 13:43 pnu left 13:50 SmokeMachine joined 13:53 pmurias joined 13:54 drbean left 13:59 pnu joined
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
14:14 xomas_ joined
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
14:33 REPLeffect left 14:34 nihiliad joined
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
14:41 cognominal left 14:42 cognominal joined 14:44 jonasbn joined 14:45 ujin joined
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 :)
14:56 payload left 14:57 cognominal left 14:58 iblechbot joined 14:59 ujin left, cognominal joined
jnthn jonasbn: I'm about. 15:01
15:01 Guest94147 left
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
15:05 wasy_afk is now known as wasy
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.
15:13 rindolf joined, rindolf left
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
15:24 Psyche^ joined 15:28 Patterner left, Psyche^ is now known as Patterner 15:29 masak left
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
15:36 Trashlord joined
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
15:47 uniejo left
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.
15:50 cjk101010 left
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
15:53 clausi left
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
15:56 jonasbn left
Trashlord alright, cool then 15:56
moritz_ oh, and wolfman2000
15:57 cosimo left, cosimo joined 15:59 rv2733 joined 16:00 lisppaste3 left, lisppaste3 joined, pmichaud_ joined 16:01 justatheory joined, pmichaud_ left 16:02 AndChat| joined 16:03 AndChat| left
Trashlord do I need my shebang to have /usr/bin/parrot instead of /usr/bin/perl ? 16:09
16:09 payload joined
Su-Shee perl6 16:09
Trashlord oh 16:10
16:12 nihiliad left
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++
16:30 [particle] left
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
16:37 fda314925 left 16:49 hercynium joined 17:06 nihiliad joined 17:11 payload left
jnthn back 17:13
Juerd: Aww...missed opportunity to put it back as a w :-)
17:15 SmokeMachine left 17:20 masak joined
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.
17:28 cognominal left 17:29 cognominal joined
pugs_svn r29663 | mberends++ | [t/spec] update some plan counts to make spectest progress stats more accurate 17:33
17:33 meppl joined
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
17:37 SmokeMachine joined
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
17:45 ash_ joined 17:46 cjk101010 joined
TimToady
.oO(If all you have is introspection, everyone begins to look like neurotic...)
17:46
s/like//
17:46 xomas_ left
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
17:52 uniejo joined, schmalbe left
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
17:53 REPLeffect joined
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.
17:57 fridim left
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...
17:58 stephenlb joined
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 :)
18:02 Su-Shee left
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
18:06 dakkar left
masak jnthn: so, I now have a Perl6::Compiler::Signature and a PAST::Op. They don't really combine, do they? 18:09
18:10 mj41 left
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
18:12 frettled sets mode: +o masak
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
18:17 mj41 joined 18:18 Su-Shee joined
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.
18:20 ash_ left, ShaneC joined
TimToady now yer just playin with werds 18:20
frettled do you have a ceipt for that?
18:21 hercynium left
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
18:21 payload joined
masak .duce 18:22
frettled member, member, the fifth ember 18:23
Or, as a friend's t-shirt reads:
Haikus are easy
18:24 ash_ joined
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
18:26 Psyche^ joined
TimToady *pmise 18:26
18:26 Patterner left, Psyche^ is now known as Patterner
masak 哈哈 18:26
oh, we're not only doing pfixes now?
18:26 ash_ left
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
18:29 MaL0 joined
MaL0 hi 18:29
TimToady howdy
masak hello.
18:30 Chillance joined, cotto_working left 18:31 cotto_working joined 18:32 Patterner left, ruoso left
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
18:33 jonasbn joined
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.
18:36 ruoso joined
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
18:37 Psyche^ joined
masak I mean, it'll affect all Perl 6 projects with tests. 18:37
probably not significantly, but still. 18:38
18:38 Psyche^ is now known as Patterner
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
18:42 MaL0 left
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.
18:42 PacoLinux left
frettled it's not just for benchmarking, but also for debugging 18:42
18:43 PacoLinux joined
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
18:46 masak left
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
18:48 cognominal left
mberends ok, will make timestamps optional very soon 18:49
frettled We're timing you. ;) 18:50
mberends *sharp intake of breath*
18:50 macae left
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
19:00 colomon left
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
19:02 rgrau joined
frettled mberends: 12 minutes, 16 seconds 19:02
mberends heh 19:03
19:03 rv2733 left 19:05 cdarroch joined, cdarroch left, cdarroch joined, fda314925 joined
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
19:10 jackyf joined 19:34 colomon joined 19:42 cognominal joined 19:51 eternaleye joined 19:54 supernovus joined
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
20:11 dugg joined 20:17 jackyf left
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
20:26 payload left
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␤»
20:28 jaldhar left
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
20:44 bluescreen left 20:45 hercynium joined
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
20:58 supernovus left
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
21:11 uniejo left
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
21:13 orafu left
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
21:13 payload joined
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
21:18 cdarroch left
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
21:19 cdarroch joined, cdarroch left, cdarroch joined
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...
21:25 japhb left
jnthn colomon: Not sure yet...digging. 21:25
21:26 rjbs joined
ruoso needs to decommute & 21:26
rjbs Patrick Michaud did a lightning talk about Perl 6 operators a year or so ago.
21:27 takadonet left
rjbs It was about shuffling and dealing playing cards. 21:27
I know he published the slides, but I cannot find them. Help?
21:27 cjk101010 left
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
21:32 ruoso left 21:33 dugg left
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/
21:53 SmokeMachine left
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. :-)
21:56 Su-Shee left
jnthn *thinks 21:58
22:01 rjbs left
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.
22:03 jonasbn left
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
22:19 synth left
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
22:41 mberends left 22:44 hercynium left 22:47 cotto_working left
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.
22:58 woe left
jnthn colomon: Oh, or maybe it's something else. 22:58
22:59 cotto_working joined
colomon yes, I'm getting weird messages still 23:00
23:01 rgrau left
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␤»
23:05 iblechbot left
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.
23:14 lichtkind joined 23:17 eternaleye left
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/
23:26 muenalan joined, muenalan left
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
23:28 eternaleye joined
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
23:40 hercynium joined
jnthn I fail some of S03-operators\range-basic.t - maybe I'm missing a pull though? 23:40
23:40 forrest left
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!
23:44 kensanata joined, Chillance left 23:45 PZt left
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".
23:46 colomon left
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
23:51 nihiliad left
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.