»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by lichtkind on 5 March 2010. |
|||
lue | how do I get rid of an edit I've stashed? (git) | 00:00 | |
sorear | Where can I get a copy of alpha? | 00:02 | |
00:11
takadonet joined
|
|||
takadonet | morning all | 00:12 | |
... | |||
sorry force of habit.... good afternoon all | |||
sorear | What's to say it's not morning? | ||
takadonet | well my timezone is not morning :P | ||
lue | It's morning somewhere. What time is it there? | 00:13 | |
takadonet | 7 p.m | ||
lue | 16 15 14 13 12 11 10 09 08 07 06 05 It's morning at around UTC+2 (leftmost is UTC-8) | 00:14 | |
jnthn | sorear: It's just a branch | 00:15 | |
So you already have it | |||
git checkout alpha | |||
or maybe origin/alpha | |||
sorear | Ah. | 00:17 | |
lue | If I've stashed changes to a file (git), how would I get rid of that changed file. | ||
takadonet | jnthn:do you ever sleep? | ||
sorear | yes, :( | ||
he's asleep 90% of the time I'm hacking his pet project | |||
makes communications a real bother | |||
lue | rakudo: say (24 * .9) | 00:18 | |
p6eval | rakudo 63ff06: OUTPUT«21.6» | ||
diakopter | rakudo: 0 but last | ||
p6eval | rakudo 63ff06: OUTPUT«WarningNull PMC access in can()current instr.: 'parrot;P6protoobject;ACCEPTS' pc -1 ((unknown file):-1)» | ||
lue | are you implying he's assleep 22 hours a day? | 00:19 | |
diakopter | phenny: tell masak rakudo: 0 but last | ||
phenny | diakopter: I'll pass that on when masak is around. | ||
lue | .oO(I can't tell if the Apple Newton giveaway at ThinkGeek is real or not... I really hope it is!) |
00:20 | |
sorear wonders whether to expunge the PIR from Blizkost | 00:22 | ||
jnthn | sorear: Heh, you do know that I started Blizkost explicitly with the hope that others would pick it up and hack on it lots and make a better job of it than I could? :-) | ||
takadonet | time to hack some stuff on Perl 6 :) | ||
step 1: get Padre updated | |||
lue | I guess I just git stash apply, delete the file, and hope git pull puts it back? | 00:23 | |
jnthn | sorear: Curious - replace it with...NQP? | ||
Tene | with... grapes? | ||
jnthn | ...no, there are more useful things to do with grapes. | ||
lue | with... the help of the 楽土 die() * ? | ||
Tene | Ah, replace the PIR with curry! | 00:24 | |
jnthn | .oO( .assuming ) |
||
takadonet: I do try to sleep, but I've mostly failed this week. :-/ | 00:25 | ||
takadonet | jnthn: Well as long as you are working on Perl 6, I'm happy :) | ||
jnthn: WIll buy you a few beers the next time I'm in Europe | 00:26 | ||
sorear | jnthn: Yes, rewrite perl5.pir in NQP | ||
jnthn in theory went to bed in time for 6-7 hours sleep last night. In reality, lay awake for ages, slept 3 hours and made heavy use of his client's coffee machine this morning ahead of his meeting with them. | |||
takadonet: \o/ | |||
sorear wonders if jnthn has even been following the latest blizkost changes | |||
jnthn | sorear: Works for me. :-) | ||
lue | what is a good hex editor for the command line? | 00:27 | |
sorear | tweak | ||
lue | >tweak jnthn | ||
C0 FF EE A3 90 32 | |||
O.o | |||
jnthn | sorear: I do read the commits, but invariablity with some lag. | 00:28 | |
sorear: I've not had any "omfg" moments yet. :-) | |||
sorear: Though my lack of p5 guts knowledge (esp magic) has made following a little tricky of late. ;-) | 00:29 | ||
lue | I have the feeling signing up at github will _not_ give me a rakudo commit bit :) | ||
takadonet | .... my padre crashes now! | 00:31 | |
takadonet starts to cry | |||
jnthn | sorear: Just read the ones from yesterday too. I'm just confused on: | ||
$mw.Label(-text => 'Hello, world!').pack; | |||
Don't think nqp supports the "-" there... | |||
nqp: my $mv; $mw.Label(-text => 'Hello, world!').pack; | 00:32 | ||
p6eval | nqp: OUTPUT«Symbol '$mw' not predeclared in <anonymous>current instr.: 'parrot;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)» | ||
jnthn | nqp: my $mw; $mw.Label(-text => 'Hello, world!').pack; | ||
p6eval | nqp: OUTPUT«Method 'Label' not found for invocant of class 'Undef'current instr.: '_block11' pc 0 (EVAL_1:6)» | ||
jnthn | oh | ||
I'm wrong. | |||
std: my $mw; $mw.Label(-text => 'Hello, world!').pack; | |||
00:32
sundar left
|
|||
p6eval | std 30265: OUTPUT«ok 00:01 109m» | 00:32 | |
jnthn | rakudo: my $mw; $mw.Label(-text => 'Hello, world!').pack; | 00:33 | |
p6eval | rakudo 63ff06: OUTPUT«Method 'Num' not found for invocant of class 'Pair'current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)» | ||
jnthn | oh. | ||
I feared so. | |||
sorear: -text => 'Hello, world!' is parsing as -(text => 'Hello, world!') | 00:34 | ||
lue | While all the other implementations would generate a bunch of 200's, Rakudo is proud to generate more 501's than anybody else :) | ||
00:36
Chillance left
|
|||
jnthn | lue: Yeah, sometimes we fail too hard. :-) | 00:42 | |
lue | almost as bad as a 404, except then you don't know where to place the blame. | 00:43 | |
jnthn | Hmmm...I think I like that option. ;-) | 00:46 | |
lue | where are things like 'and' and 'or' implemented in Rakudo? I want to find a place to put andthen and orelse. | ||
jnthn | Well, those two are done iirc with support from having PAST nodes that they map to quite nicely. | 00:47 | |
That may not be the case for andthen and orelse. | |||
Well, probably isn't. | |||
So they'll take a bit more effort. | |||
lue | I have to get into the PAST? Blech, I was hoping to place it in Grammar.pm :) | ||
jnthn | See Grammar.pm for how and and or are parsed. | 00:48 | |
Yeah, but you kinda need to give them some semantics as well as parse them. :-P | |||
00:48
yinyin joined,
xabbu42 left
|
|||
sorear | jnthn: Oh? :/ | 00:48 | |
nqp: sub foo(*%args) { print %args }; foo(x => 2) | 00:49 | ||
p6eval | nqp: OUTPUT«Multiple Dispatch: No suitable candidate found for 'modulus', with signature 'PPP->P'current instr.: 'foo' pc 29 (EVAL_1:0)» | ||
sorear | ...what | ||
lue | rakudo: multi sub infix:<orelse> ($a,$b) {if $a { return $a;} else { return $b;};}; say (0 orelse 1) | 00:51 | |
p6eval | rakudo 63ff06: OUTPUT«1» | ||
lue | done :) | ||
rakudo: multi sub infix:<orelse> ($a,$b) {if $a { return $a;} else { return $b;};}; say (0 orelse 0 orelse 1) | |||
p6eval | rakudo 63ff06: OUTPUT«1» | ||
jnthn | sorear: print(%args) | ||
lue | rakudo: multi sub infix:<orelse> ($a,$b) {if $a { return $a;} else { return $b;};}; say (0 orelse 0 orelse 2) | ||
p6eval | rakudo 63ff06: OUTPUT«2» | ||
sorear | nqp: sub foo(*%args) { print(%args) }; foo(x => 2) | ||
p6eval | nqp: OUTPUT«Hash[0xfc987f10]» | ||
lue | rakudo: multi sub infix:<orelse> ($a,$b) {if $a { return $a;} else { return $b;};}; say (0 orelse 1 orelse 2) | ||
p6eval | rakudo 63ff06: OUTPUT«1» | ||
jnthn | lue: yeah but iirc you need to thunk it. | ||
sorear | nqp: sub foo(*%args) { print(%args.keys) }; foo(x => 2) | ||
p6eval | nqp: OUTPUT«Method 'keys' not found for invocant of class 'Hash'current instr.: 'foo' pc 29 (EVAL_1:0)» | ||
sorear | nqp: sub foo(*%args) { print(%args<x>) }; foo(x => 2) | 00:52 | |
p6eval | nqp: OUTPUT«2» | ||
sorear | nqp: sub foo(*%args) { print(%args<x>) }; foo(-x => 2) | ||
p6eval | nqp: OUTPUT«too many positional arguments: 1 passed, 0 expectedcurrent instr.: 'foo' pc 37 (EVAL_1:0)» | ||
lue | thunk it? | ||
sorear | nqp: sub foo(*%args) { print(%args<x>) }; foo('-x' => 2) | ||
p6eval | nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 1, near "> 2)"current instr.: 'parrot;HLL;Grammar;panic' pc 500 (src/cheats/hll-grammar.pir:197)» | ||
sorear | How do I form a named argument pair with a dahs | ||
jnthn: Anyways, I don't actually have get_exports working, which is the last significant roadblock to binding POSIX, Tk, CGI, and other modules which you can use without subclassing to Parrot | 00:53 | ||
00:54
cotto joined
|
|||
sorear | Making stuff like Bot::BasicBot work requires subclassing across HLL boundaries | 00:54 | |
which is slightly less trivial | |||
jnthn | sorear: Not sure how you can do that too easily in NQP yet...it came up recently ish...forget the solution. | ||
Or workaround. | |||
sorear: Well, getting those working is a good start. :-) | 00:55 | ||
lue | what is the process of thunking? | ||
jnthn | It gets a whole load of CPAN available. Currently none of it is. | ||
lue: consider: if foo() || bar() { ... } | |||
Here if foo() is true then bar() doesn't get run | |||
So it's more going on that just a multi dispatch to infix:<||> | |||
lue | Then I must've read the spec on orelse wrong | 00:56 | |
I thought that was the point. | |||
jnthn | Well, I"m rather tired too :-) | 00:57 | |
Hmm...probably I should sleep | |||
Or I might sleep past my train tomorrow. Which would suck. | |||
lue | Orelse is proceed on failure, so... | ||
night jnthn o/ (it's 3am already?) | 00:58 | ||
jnthn | lue: Right, so you need to have the RHS only being if there's a failure | ||
Yes, 3am! O-O | |||
night o/ | |||
lue | rakudo: multi sub infix:<orelse> ($a,$b) {if $a { return $a;} else { return $b;};}; say (1==2 orelse 2<1 orelse 3==3) | 00:59 | |
p6eval | rakudo 63ff06: OUTPUT«0» | ||
takadonet | how do your read a file in the 'lazy' way ? | ||
lue | afk | 01:01 | |
sorear | takadonet: hopefully, we won't | 01:07 | |
takadonet | ? | ||
sorear | lazy file reading is a Bad Idea | 01:08 | |
been there, done that, got the headaches | |||
takadonet | sorear: using $fh.get is the 'lazy' way | 01:09 | |
does not read the whole file at once | |||
01:17
jaldhar left
01:21
elmex left,
flity joined
01:33
quietfanatic left
01:36
justatheory left,
jferrero left
01:41
mikehh left
01:44
colomon joined
01:46
cotto left
01:48
jaldhar joined
01:50
cotto joined
01:55
Psyche^ joined
01:57
charsbar joined
01:58
cotto_work left
01:59
Patterner left,
Psyche^ is now known as Patterner
|
|||
lue | rakudo: multi sub infix:<orelse> ($a,$b) {say ($a,$b).join("\n"); if $a { return $a;} else { return $b;};}; say (1==2 orelse 2<1 orelse 3==3) | 02:04 | |
p6eval | rakudo 63ff06: OUTPUT«220» | ||
lue | that's it, orelse has no precendence | 02:05 | |
*defined | |||
rakudo: multi sub infix:<orelse> ($a,$b) {say ($a,$b).join("\n"); if $a { return $a;} else { return $b;};}; say ((1==2) orelse (2<1) orelse (3==3)) | |||
p6eval | rakudo 63ff06: OUTPUT«00011» | ||
lue | where would pasttype's be defined? | 02:10 | |
I have the feeling properly implementing orelse/andthen will require my first trip into 楽土's deep magic :) | 02:15 | ||
02:18
flity left
02:19
flity joined
02:23
JimmyZ joined
02:26
justatheory joined,
bwk joined
02:30
elmex joined
|
|||
bwk | 02:31 | ||
/bye | |||
02:31
wknight8111 left
02:33
bwk left
02:34
JimmyZ left
02:42
slavik left
02:53
justatheory left
02:59
justatheory joined
03:03
justatheory left
03:09
justatheory joined
03:14
justatheory left
03:21
gfx joined
|
|||
lue | afk | 03:28 | |
03:30
stephenlb left
03:33
simcop2387 left
03:35
meppel joined
03:39
meppl left
03:40
justatheory_ joined,
ash_ joined
03:42
justatheory_ is now known as justatheory
03:46
simcop2387 joined
04:08
wormwood joined
04:34
cotto_work joined
04:36
rgrau left
04:48
meppel left
05:00
bwk joined
|
|||
sorear | jnthn: Tiiiiiny problem | 05:02 | |
jnthn: NQP doesn't support POD5 | 05:03 | ||
s/POD5/POD/ | 05:06 | ||
it supports a tiny subset of POD6 which is not compatible with perldoc | |||
lue | NQPOD ? | 05:07 | |
sorear | for it to be called NQPOD, you would have to be able to write documentation in it | 05:09 | |
lue | NQNQPOD then :) | ||
What's the difference between NQP and P6? Why is it "Not Quite"? (I can guess, but specifics would be nice :) ) | 05:15 | ||
sorear | "Declarator Pod blocks must either precede or immediately follow a valid Perl 6 declarator," | ||
lue: NQP is stripped down to the point where one person can implement it without going insane | 05:16 | ||
lots of varied features are removed | |||
like the assignement/binding distinction | |||
and user-defined operators | |||
and non-parenthetized functions | |||
and junctions | |||
and the entire setting (use inline PIR for I/O) | 05:17 | ||
05:17
ash_ left
|
|||
sorear | and the explicit metamodel | 05:17 | |
lue | Nice summary of P5, but I asked for NQP :D | ||
05:18
ash_ joined
|
|||
lue | seriously, after saying it like that, it seems more like P5 :) | 05:18 | |
sorear | NQP is like P5 done right | ||
NQP is what Larry should have created in 1993 or whatever | |||
P6 is a 2010 programming language | |||
maybe later | 05:19 | ||
(also, minor nit but P5 does have the assignment/binding distinction and non-parenthetized functions) | 05:20 | ||
"Declarator Pod blocks must either precede or immediately follow a valid Perl 6 declarator," <- how I love ambiguous specifications | 05:21 | ||
EITHER specifiy before | |||
OR after | |||
oh, it explains three pages down | 05:22 | ||
lue | xor-ing is so annoying. What if I want to pick both? :( | 05:27 | |
05:30
ash_ left
|
|||
lue | .oO(It is sooo annoying trying to see the 4th dimension. But it's going to be worth it!) |
05:31 | |
05:39
xinming left
05:43
flip214 joined
|
|||
flip214 | hi | 05:44 | |
sorear | For example, at the start of a ShiftJIS encoded file you can specify C<=encoding ShiftJIS> in the ShiftJIS encoding. | 05:48 | |
^^^ actually, the ASCII subset of ShiftJIS is compatible with UTF-8 | 05:49 | ||
flip214: hi | |||
05:51
xinming joined
05:58
bwk left
06:00
bwk joined
|
|||
bwk | \help info | 06:00 | |
06:01
bwk left
06:02
bwk joined,
bwk left
|
|||
lue | night | 06:13 | |
06:14
bwk joined
|
|||
bwk | /who #perl6 | 06:15 | |
06:15
bwk left
06:18
justatheory left
|
|||
spinclad | rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; (say 0) orelse (say 1) orelse (say 2); | 06:20 | |
p6eval | rakudo 63ff06: OUTPUT«01invoke() not implemented in class 'Boolean'current instr.: 'infix:<orelse>' pc 255 (EVAL_2:86)» | ||
spinclad | rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; {{say 0} orelse {say 1}} orelse {say 2}; | 06:22 | |
p6eval | rakudo 63ff06: OUTPUT«0» | ||
spinclad | rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; say {{say 0} orelse {say 1}} orelse {say 2}; | ||
p6eval | rakudo 63ff06: OUTPUT«01» | ||
spinclad | rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; sub spit($a) { say $a; $a }; say {{spit 0} orelse {spit 1}} orelse {spit 2}; | 06:24 | |
p6eval | rakudo 63ff06: OUTPUT«011» | ||
spinclad | 'is thunk' seems to be ignored (see first try)... | 06:25 | |
hmm.. | 06:26 | ||
rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; sub spit($a) { say $a; $a }; say (spit 0) orelse (spit 1) orelse (spit 2); | 06:27 | ||
p6eval | rakudo 63ff06: OUTPUT«01invoke() not implemented in class 'Integer'current instr.: 'infix:<orelse>' pc 297 (EVAL_2:98)» | ||
spinclad | rakudo: multi sub infix:<orelse> ($a is thunk, $b is thunk) { return $a() || $b() }; sub spit($a) { say $a; $a }; say (spit 1) orelse (spit 0) orelse (spit 2); | 06:28 | |
p6eval | rakudo 63ff06: OUTPUT«10invoke() not implemented in class 'Integer'current instr.: 'infix:<orelse>' pc 297 (EVAL_2:98)» | ||
sorear attempts to modify NQP to skip *all* POD6 | 06:41 | ||
06:52
eiro joined,
eiro left,
eiro joined,
eiro left,
eiro joined
06:55
justatheory joined
06:58
hercynium left
07:04
justatheory left
07:07
rgrau` left
07:12
Trashlord left
07:38
am0c left
07:47
jjore joined
07:49
jjore left,
jjore joined
07:56
flip214 left
08:13
iblechbot joined
08:21
asits joined
08:23
asits left,
Su-Shee joined
08:28
pmurias joined
08:29
M_o_C joined
08:36
skyler__ joined
08:39
skyler_ left
|
|||
snarkyboojum | how'd you with that sorear? :) | 08:48 | |
sorear | All I know so far is that P6regex hates ma | 08:55 | |
me | |||
snarkyboojum | hugme: hug sorear | 08:57 | |
hugme hugs sorear | |||
sorear | It's not working and not telling me why not. | 08:58 | |
So I'm shotgun debugging. | |||
With 10 minute compile delays. | |||
Confused at line 34! | |||
and it doesn't even tell me what *rules* are casuing the problem | |||
snarkyboojum | :( | 08:59 | |
sorear | I suppose nobody in this room understands NQP-rx well enough to spot bugs | ||
snarkyboojum | certainly not me | 09:01 | |
sorear | PCT needs a debugger | ||
09:04
jaffa4 left
09:05
jaffa4 joined,
jhuni joined
|
|||
pmurias | ruoso: hi | 09:14 | |
09:15
xinming left
09:17
proller left
09:18
proller joined
|
|||
jnthn | morning | 09:20 | |
sorear | jnthn: do you understand p6 rules at all | ||
jnthn | Yes. | 09:23 | |
sorear | pastie.org/900073 pastie.org/900074 pastie.org/900075 | ||
jnthn | Rakudo's grammar is written in them. :-) | ||
sorear | I am absolutely stumped | ||
I'm trying to add pod support to NQP | |||
my modified rules compile | 09:24 | ||
however, I'm still getting "Completely generic parse error" while trying to parse valid POD6 | |||
sorear waits for jnthn to change his mind about knowing anything | 09:26 | ||
jnthn | Didn't say I know anything about POD. :-P | ||
sorear | You don't have to | ||
09:26
mberends left
|
|||
sorear | However, the new pod_comment rule I added doesn't work | 09:27 | |
I have no idea why and PCT won't tell me | |||
All other tests pass | |||
except the new ones I added | |||
jnthn | assertion on line 52 through 56 - is the whole lot meant to be in a lookahead? | 09:29 | |
sorear | Which line is 52 | 09:30 | |
my line 52 is: [ | |||
If that's in a lookahead, then no | |||
jnthn | in pastie.org/900073 | ||
09:30
Trashlord joined
09:31
gfx left
|
|||
sorear | hmm, nopaste did a number on that file | 09:31 | |
Yes, I meant to put that entire block in a lookahead. | |||
jnthn | OK | 09:32 | |
sorear | A 6POD block without begin/end cannot contain another block; it ends before the next = line | ||
Did I phrase that into regex correctly | |||
(sorry, I'm frustrated) | |||
jnthn | So for this: | ||
=for comment blah | |||
say ("ok 5"); | |||
oops, there's a line-break between then. | 09:33 | ||
Is it the blank line that terminates the directive? | |||
sorear | the blank line terminates the comment, and the say is executed as code | ||
yes | |||
line 56 - ^^ \h* \n can postterminate the directive | 09:34 | ||
jnthn | As a debugging thing, on: | 09:35 | |
| <identifier> | |||
Try putting: | |||
| <identifier> { pir::say('got here') } | |||
To check that we're actually falling onto this rule | |||
I think there's maybe also a <?DEBUG> that turns on some tracing. | |||
The casue doesn't jump out at me right away, though...after going over that bit it doesn't look obviously wrong. | 09:36 | ||
09:36
rbaumer joined
|
|||
sorear recompiles | 09:37 | ||
I added <?DEBUG> at the beginning of comp_unit | |||
jnthn | Oh, maybe just wants to be <DEBUG> | 09:38 | |
Looking at the source, <DEBUG(1)> can turn it on, <DEBUG(0)> can turn it off. | 09:39 | ||
And <DEBUG> alone turns it on. | |||
Buttom of github.com/perl6/nqp-rx/blob/master...iltins.pir | |||
sorear | Apparently it worked anyway, because the bootstrap process is generating an enormous amount of spam | ||
jnthn | :-) | 09:40 | |
mathw | o/ | 09:41 | |
jnthn | o/ mathw | ||
mathw | jnthn: have you discovered the real heating controls yet? | 09:42 | |
jnthn | mathw: :-P | 09:43 | |
Akshually not. | |||
mathw | :) | 09:44 | |
I picked up that tweet just after aikido last night | |||
sorear | Yay, instead of NQP giving me /no/ information on why it refused to parse | ||
I now have 1,642 lines of tracage | |||
mathw | and cracked up in front of the instructors :) | ||
I know it's mean, but it's very funny | 09:45 | ||
Trashlord | sup dudes | 09:46 | |
09:48
MAK_ joined
|
|||
MAK_ | hello | 09:49 | |
sorear | HELLO | ||
MAK_ | github.com/masak/yapsi is this is a rakudo fork | ||
sorear | no | ||
it's like pypy | 09:50 | ||
it runs ON rakudo | |||
MAK_ | spec complete implementation? | ||
jnthn | mathw: Heh, it was one of those moments that was kind "wtf" enough to share. :-) | ||
sorear | MAK_: Spec complete implementations don't exist and won't for at least five years | ||
The P6 spec is *huge* | |||
MAK_ | 5 years????? | ||
sorear | More likely 10 | ||
jnthn | sorear: Heh. I think we're aiming for a bit less than that. :-) | 09:51 | |
MAK_ | Socking news | ||
shocking | |||
sorear | jnthn: Christmas will be far sooner, yes | ||
jnthn | sorear: Where did you hear that, or is that your own opinion? | ||
sorear | but it will be a long time before all the obscure corners of the spec are implemented in a single compiler | ||
MAK_ | perl 7 will need to be planned if perl 6 takes another decade to make a spec complete release | 09:52 | |
sorear | Christmas could be as early as next year | ||
jnthn | sorear: Well, according to S01, it'll be somewhat driven by when there's a viable release that's useful. :-) | ||
MAK_ | seriously will it take 10 years? | ||
sorear | MAK_: I don't think you grasp the magnitude of what "spec complete" means | 09:53 | |
MAK_ | No i got it, the spec is always a moving target | ||
so by that definition there is nothing like 'spec complete' | |||
jnthn | Everything in the spec that nobody has implemented yet should be considered conjectural for 6.0.0 anyway. | 09:54 | |
MAK_ | What I meant was that at some point the spec it self will freeze for some time and the implemetation will match it. called rakudo 1.0 | ||
sorear | MAK_: The spec is 1.25 megabytes of plain text | ||
MAK_ | will that take 10 years | ||
sorear | this thing makes the C++ spec look like a leaflet | ||
jnthn | mathw: I think that'll be rather sooner than 10 years. | ||
er | |||
MAK_: ^ | |||
sorear | If the spec were frozen *right now* it wouldn't be fully implemented for many years to come | 09:55 | |
MAK_ | The spec can even 1.25 GB if it isnt frozen | ||
sorear | It's 2010, do you know how many compilers fully implement C++ 1999? | ||
0. | 09:56 | ||
pmurias | sorear: have you seen the c++ spec? | ||
MAK_ | :( | ||
sorear | pmurias: yes, it's shorter than the perl one | ||
MAK_ | no | ||
why the hell then people look at perl and C++ with different standards | |||
sorear | the C++ spec is 1,300 pages of precisely specified legalese | 09:57 | |
the Perl spec is 40,000 lines of dense and ambiguous prose | |||
MAK_ | no my question was regarding a release named 6.0.0 wil that take 10 years? | 09:58 | |
sorear | 6.0.0 will not be spec complete | ||
MAK_ | that is ok | ||
sorear | large parts of the spec will be rechristened future plans | ||
MAK_ | but will 6.0.0 take 10 years????? | ||
sorear | 6.0.0 will probably come in '11 or '12 | ||
no | |||
the first feature complete 6 will take 10 years | |||
or more | |||
that's like 6.28.0 | 09:59 | ||
perl 6 has a lot of features | |||
go read the synopses | |||
all of them | |||
in order | |||
MAK_ | well as you said I understood, we are speaking achieving a very ambitous aim | ||
sorear | you'll be back sometime in may | ||
MAK_ | for? | ||
ok | |||
got it | |||
sorear | well, assuming you do nothing other than read and don't return until you finisjh | ||
MAK_ | I never questioned the magnitude of the job | 10:00 | |
but if its really so huge, how do people managed to stay focussed on it for so long? | |||
sorear | in that case, you greatly overestimate our manpower | ||
we have lesser milestones | |||
colomon | rakudo: say (+"2i") | 10:01 | |
p6eval | rakudo 63ff06: OUTPUT«2» | ||
sorear | the most important of which is codename "Christmas", when implemented perl 6 becomes better than 5 | ||
MAK_ | But 6.0.0 by 2011 is perfectly acceptable | ||
the '10 years' thing kind of shocked me for a moment | 10:02 | ||
pmurias | MAK_: where did you get that estimate? | ||
sorear | Me | ||
MAK_ was asking how long it would take for every single word in docs/Perl6/Spec/*.pod to be implemented | 10:03 | ||
I said, very optimistically, 10 yearxs | |||
MAK_ | This is also means yapsi is only as complete as rakudo | 10:06 | |
pmurias | yapsi is less compelete then rakudo | ||
MAK_ | always | ||
sorear | yapsi *just started* | ||
jnthn -> train station + 5 hour journey | 10:07 | ||
sorear | and you expect it to implement all 194,000 words of the spec? | ||
10:07
Trashlord left
|
|||
jnthn | (but maybe wifi on train) | 10:07 | |
colomon | god traveling | ||
10:07
clintongormley joined
|
|||
colomon | *good | 10:07 | |
though that's an interesting typo | |||
MAK_ | How of spec will 6.0.0 of 2011 will cover? atleast 70%? | 10:08 | |
sorear | Why do you care? | 10:09 | |
MAK_ | hmmm | ||
ok then leave it | |||
moritz_ | good localtime() everybody | ||
colomon | o/ | ||
10:12
yinyin left
|
|||
mathw | o/ moritz | 10:14 | |
10:14
jferrero joined
|
|||
colomon | rakudo: say 10 || 9 | 10:14 | |
p6eval | rakudo 63ff06: OUTPUT«10» | ||
colomon | rakudo: say 10 !!|| 9 | ||
p6eval | rakudo 63ff06: OUTPUT«1» | ||
moritz_ | rakudo: say 1 !|| 3 | 10:15 | |
p6eval | rakudo 63ff06: OUTPUT«0» | ||
moritz_ | colomon: do you have any idea how to get reduce of chained ops working? | 10:16 | |
colomon | moritz_: I don't know that I know how to do it correctly. | 10:17 | |
but we could chain it by hand easily enough. | |||
pmurias | how can type inference be tested? | ||
colomon | moritz_: we just have to be a lot smarter in how we handle things with [op] | ||
sorear | jnthn: The super obvious thing I was missing? You can't have a space between function and ( in NQP. | 10:18 | |
moritz_ | colomon: my idea was: check if op is %chaining, and if yes, dispatch to a different reduce method | ||
sorear: same in Perl 6 | |||
colomon | moritz_: I think we might do well to move everything to a different reduce method. :) | 10:19 | |
pmurias | adding a INFERED_TYPE_IS($expression,"internal type description") seems to be a solution | ||
colomon | is %chaining always a serious of boolean comparisons? | ||
moritz_ | pmurias: well, by writing test cases. Only that it can't be normal Perl 6, because it's not specced | ||
right, that should help | |||
colomon: chaining associativity implies that $a op $b op $c is the same as ($a op $b) && ($b op $c) | 10:20 | ||
colomon | we can certainly work with that. | ||
moritz_ | so, how do I ask in the action method if an op has chaining assoc? | 10:21 | |
colomon goes looking... | 10:22 | ||
moritz_ goes backlogging | 10:23 | ||
colomon | jnthn may have picked an awkward time to go on a train. :) | ||
10:24
MAK_ left
|
|||
sorear | .*? still means as little as possible, right? | 10:25 | |
moritz_ | sorear: yes. | 10:26 | |
sorear: but beware, tokens don't backtrack | |||
so .*? never matches anything inside a token | |||
sorear: re POD parsing, it might be worth looking at how STD.pm does it | 10:27 | ||
sorear | I'm suprised this is working at all, then | ||
.*? in a token is matching /too much/ | |||
moritz_ | wow | ||
sorear | Where does STD live | ||
moritz_ | rakudo: our token a { .*? }; say 'foo' ~~ /<a>/ | 10:28 | |
p6eval | rakudo 63ff06: OUTPUT«Method 'a' not found for invocant of class 'Regex;Cursor'current instr.: '_block63' pc 625 (EVAL_1:243)» | ||
sorear | token pod_comment { | ||
^^ \h* '=' | |||
[ | |||
| 'begin' \h+ 'END' >> | |||
[ .*? \n '=' 'end' \h+ 'END' » \N* || .* ] | |||
| 'begin' \h+ <identifier> | |||
moritz_ | sorear: pugs repo | ||
sorear | [ | ||
|| .*? \n '=' 'end' \h+ $<identifier> » \N* | |||
|| <.panic: '=begin without matching =end'> | |||
] | |||
| 'begin' » \h* | |||
[ $$ || '#' || <.panic: 'Unrecognized token after =begin'> ] | |||
[ | |||
moritz_ | svn.pugscode.org/pugs/src/perl6/STD.pm | ||
sorear | || .*? \n \h* '=' 'end' » \N* | ||
|| <.panic: '=begin without matching =end'> | |||
] | |||
| <identifier> | |||
.*? <?before ^^ \h* [ | |||
'=' | |||
[ 'cut' » | |||
pmurias | sorear: nopaste | ||
sorear | <.panic: 'Obsolete pod format, please use =begin/=end instead'> ]? | 10:29 | |
| \n ]> | |||
| | |||
[ \s || <.panic: 'Illegal pod directive'> ] | |||
\N* | |||
] | |||
} | |||
pmurias | nopaste: paste.lisp.org/new/perl6 | ||
sorear | pmurias: I nopasted, then attempted to copy the URL, failed, and pasted the wrong thing | 10:30 | |
(I'm suprised nobody kicked me) | |||
10:30
MAK_ joined
|
|||
sorear | pastie.org/900118 | 10:30 | |
this is what I meant to paste | |||
moritz_ was not fast enough to kick | |||
sorear needs an IRC client with better flood control | 10:31 | ||
moritz_ recommends irssi | |||
sorear is using irssi | |||
moritz_: that nopaste ^^ is my current rule | 10:32 | ||
moritz_ | wow, my irssi has flood control | ||
sorear | my irssi has flood control. that's why I said "better" | ||
to my knowledge irssi has no command to retroactively stop a paste | |||
moritz_ | ok :-) | ||
sorear | I meant to paste text, so I confirmed (not reading enough of the message to see the "29 lines" bit) | 10:33 | |
Can I feed newlines into p6eval | 10:35 | ||
STD.pm appears to not support general-case abbreviated Pod, either | 10:36 | ||
moritz_ | rakudo: say1 | ||
p6eval | rakudo 63ff06: OUTPUT«Could not find sub &say1current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
moritz_ | rakudo: say 1 | ||
p6eval | rakudo 63ff06: OUTPUT«1» | ||
moritz_ | rakudo: say 1;say 2 # p6eval converts the  # into a newline | 10:37 | |
p6eval | rakudo 63ff06: OUTPUT«12» | ||
sorear | std: =begin comment=end comment | 10:38 | |
p6eval | std 30265: OUTPUT«ok 00:01 107m» | ||
sorear | std: =for comment=begin comment=end commentSYNTAX ERROR | ||
p6eval | std 30265: OUTPUT«ok 00:01 105m» | ||
sorear | std: SYNTAX ERROR | ||
p6eval | std 30265: OUTPUT«Undeclared names: 'ERROR' used at line 1 'SYNTAX' used at line 1ok 00:01 106m» | 10:39 | |
sorear | std gets it wrong | ||
10:39
MAK_ left
|
|||
sorear | moritz_: do you see what's wrong here? | 10:41 | |
moritz_ | sorear: I'm not familiar with the current POD format at all | 10:42 | |
sorear | moritz_: this isn't a pod challenge | 10:43 | |
03:38 < sorear> std: =for comment=begin comment=end commentSYNTAX ERROR | |||
^^^ this input should be parsed as 2 pod comments followed by an uncommented line | |||
however, my NQP rules don't work correctly | |||
.*? is being greedy and is eating the entire paragraph, instead of stopping at ^^ = | 10:44 | ||
moritz_ | rakudo: say 'a' ne 'b' | 10:46 | |
p6eval | rakudo 63ff06: OUTPUT«1» | ||
colomon | moritz_: look at copyO in Grammar.pm. That shows how to fetch the O value. | 10:47 | |
sorear | who are the P6 rules experts around here | ||
I don't need pod | 10:48 | ||
jnthn | sorear: If you odn't need it, then I suggest not trying to implement it. :-) | 10:49 | |
jnthn has slow net access on the train | |||
colomon | jnthn: \o/ | ||
jnthn | sorear: If you're trying to go beyond what STD does, then maybe better to let STD work it out first. :-) | 10:50 | |
I think S26 maybe generally needs some tweaking yet too. | |||
colomon: Just pondering how you can go introspecting the Os from the grammar...if there's a way to do that. | 10:51 | ||
sorear | ok, I'll just TODO the test | ||
colomon | looks to me like you do that in copyO? | ||
jnthn | Well, yes, but that's from within the grammar. | 10:52 | |
Whereas I guess you want to do it at runtime? | |||
In the grammar we just parsed it, so have access to it in the syntax tree... | |||
moritz_ just added a ton of prefix:<[+]>() { 0 } subs to the setting, see if it works... | |||
jnthn | moritz_++ | ||
colomon | moritz_: you shouldn't need the [ ] in there. | 10:53 | |
moritz_ | colomon: oh, you're right | ||
jnthn likes how this train has inclusive coffee :-) | |||
sorear | patch generated, time to track down the NQP czar | 10:54 | |
colomon | jnthn: we want access to it from prefix_circumfix_meta_operator:sym<reduce>, I think. | ||
10:55
opx^on joined
|
|||
sorear | the github remote is "perl6" | 10:55 | |
moritz_ | sorear: it's pmichaud | ||
jnthn | colomon: Are you thinking we pass it as an adverb to reduce? | ||
moritz_ suggested that | |||
colomon | jnthn: or call a different version of reduce, something like that. | ||
moritz_ | or maybe use a different reduce alltogether | ||
sorear | moritz_: should I sit on it until pmichaud's life has stabilized? | 10:56 | |
jnthn | Ah, passing it along as adverb would be easy I guess. | ||
sorear | I found the CREDITS | ||
moritz_ | sorear: depends on the patch... if it seems obviously correct and non-intrusive, we might apply it without asking pmichaud | 10:57 | |
10:57
opx^on left
|
|||
jnthn | Aye. Generally I think we may have to not wait for pmichaud in some areas we normally would, if it's starting to block us too much. | 10:57 | |
10:57
opx^on joined
|
|||
sorear | moritz_: pastie.org/900148 | 10:58 | |
does that count as obviously correct | 10:59 | ||
moritz_ | looks fine to me | 11:02 | |
11:02
snarkyboojum left
|
|||
moritz_ | somehow the patch doesn't apply here | 11:03 | |
colomon | So, should [&&] short circuit? | ||
moritz_ | colomon: nope | ||
jnthn | colomon: no | ||
sorear | moritz_: corrupt patch? | ||
moritz_ | colomon: S03 mentions that [thing] is parsed as a normal listop, not macro-ish | ||
sorear: maybe it's UTF-8 mess | |||
sorear | I blame pastebin | ||
colomon | k | ||
moritz_ | sorear: are your also 'sorear' on github? | 11:04 | |
sorear | my normal fileserver is down now... | ||
yes | |||
moritz_ | hugme: add sorear to nqp-rx | ||
hugme hugs sorear. Welcome to nqp-rx! | |||
sorear | I could use github but it feels like such a waste for a one-off patch | ||
moritz_ | sorear: push it :-) | ||
11:05
snarkyboojum joined
|
|||
moritz_ | > say infix:<+>() | 11:09 | |
0 | |||
> say infix:<*>() | |||
1 | |||
however if I enable that for all operators, I get weird errors while compiling Test.pir | |||
dalek | p-rx: 31b97cc | sorear++ | (2 files): Implement paragraph and abbreviated Pod comments for the multiline declaration comment (left out on purpose, it's useless without a metamodel) and paragraph blocks which are terminated by the start of a delimited block (a corner case that STD fails too). |
11:10 | |
jnthn | moritz_: Such as? | 11:12 | |
colomon | moritz_: when compiling Test.pir? can you narrow it down to particular operators that cause the trouble? | 11:13 | |
moritz_ | Method 'incorporate_candidates' not found for invocant of class 'MultiSub' | ||
I suspect it happens when I try to add a multi that's not yet defined in Perl 6 | |||
testing this hypothesis now | |||
jnthn | moritz_: Yes, sounds like it. | 11:14 | |
moritz_: Sounds like it's a case of it already existing in PIR perhaps | |||
moritz_ | aye | 11:16 | |
I just comment them out | 11:17 | ||
and for now only active those ops that are actually defined in Perl 6 | |||
jnthn | wfm | ||
11:17
xinming joined
|
|||
jnthn | Though we should also move those ones not defined in Perl 6 into being. | 11:17 | |
11:18
riffraff joined
|
|||
clintongormley | moritz_: thanks for the strace suggestion yesterday - it helped me figure out what was going wrong | 11:18 | |
moritz_ | clintongormley: so, what was wrong? | 11:19 | |
clintongormley | a child was exiting inbetween steps in LWP::Protocol::http, setting $! to a spurious value | ||
so local'izing $! and %! in my reaper solved that | |||
moritz_ | evil action at a distance | 11:20 | |
we know why $! is not a global variable in Perl 6 anymore | |||
clintongormley | indeed! | ||
moritz_ | just like sub DESTROY { eval { # this resets $@ implicitly } } | 11:21 | |
clintongormley | yeah | ||
btw, how is performance in p6 these days? has it improved dramatically with rx? or not yet? | 11:22 | ||
11:23
snarkyboojum left
|
|||
dalek | kudo: 1c57374 | moritz++ | src/core/metaops.pm: implement 0-ary infix operators, to be used as the degenerated case by the reduce meta operator |
11:23 | |
moritz_ | clintongormley: actually just yesterday there was a decent performance boost, due to some optimizations by parrot folks | ||
bacek++ | |||
chromatic++ | |||
clintongormley | oh yes - i saw a tweet about that, a 4 line change | ||
nice :) | |||
so could you compare it to p5 performance? as in 30% as fast a the equiv in p5 or something like that? | 11:24 | ||
moritz_ | it halfed time and memory usage of rakudo compilation | ||
clintongormley | wow! | ||
moritz_ | will, it's still orders of magnitudes slower | ||
as in, typically takes about 100x of the Perl 5 code | 11:25 | ||
clintongormley | ok | ||
i realise that you're not in the optimisation stage yet, but any ideas about the likely final outcome? eg it'll always be slower because it is doing more, but we expect to reach X | 11:26 | ||
moritz_ | I have no idea, actually | ||
when parrot gets a decent JIT engine, much is possible | |||
clintongormley | ok | ||
moritz_ | but there's no way I could predict that | ||
clintongormley | whyever not? | 11:27 | |
don't ever let reality get in the way of predictions! | |||
moritz_ | :-) | ||
colomon | moritz_, jnthn: I'm working on a new reduce function specifically for [op] | ||
moritz_ | colomon++ | ||
jnthn | colomon: Cool. | 11:28 | |
colomon: I guess the question is, should .reduce given an op know what to do with it just automatically or not... | |||
Or should have have ot pass in adverbs to specify the assoc or chaining, etc. | |||
moritz_ | which boils down to the question: does a multi know its own associativity etc.? | 11:29 | |
jnthn | Well, I guess it'd be done by traits. | ||
But we don't implement protos sharing the love^Wtraits yet. | 11:30 | ||
11:30
Chillance joined
11:36
masak joined
|
|||
masak | oh hai, #perl6! | 11:36 | |
phenny | masak: 01 Apr 23:33Z <snarkyboojum> tell masak 'lid' is an awesome name for the coverage tool :) | ||
masak: 00:19Z <diakopter> tell masak rakudo: 0 but last | |||
masak | rakudo: 0 but last | ||
p6eval | rakudo 63ff06: OUTPUT«WarningNull PMC access in can()current instr.: 'parrot;P6protoobject;ACCEPTS' pc -1 ((unknown file):-1)» | ||
masak submits rakudobug | |||
moritz_ | rakudo: last | ||
p6eval | rakudo 63ff06: OUTPUT«Warning» | ||
moritz_ | std: 1 ?? 2 : 3 | ||
p6eval | std 30265: OUTPUT«===SORRY!===Precedence too loose within ??!!; use ??()!! instead at /tmp/Wx3K3jQgcH line 1:------> 1 ?? 2 ⏏: 3 expecting an infix operator with precedence tighter than item assignmentFAILED 00:01 109m» | ||
masak | \o/ | ||
a bit LTA, but much better than before. | 11:37 | ||
moritz_ | rakudo: 1 ?? 2 : 3 | ||
p6eval | rakudo 63ff06: OUTPUT«Confused at line 11, near "1 ?? 2 : 3"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
masak | rakudo: die "A"; CATCH { say "OH HAI" }; CATCH { say "OH NOES" } | ||
p6eval | rakudo 63ff06: OUTPUT«OH HAI» | ||
masak | std: die "A"; CATCH { say "OH HAI" }; CATCH { say "OH NOES" } | ||
p6eval | std 30265: OUTPUT«ok 00:01 106m» | ||
masak | what actually *does* happen when you have to CATCH blocks in a scope? | 11:38 | |
S04 only says that it's disallowed. | |||
should it be a compile-time error? | |||
moritz_ hopes so | |||
masak | s/to/two/ | ||
masak submits rakuodbug | |||
jnthn | masak: oh hai! | 11:40 | |
masak | loljnthnonatrain! | 11:41 | |
moritz_ | rakudo: say <a b c> Z (1, *) | ||
p6eval | rakudo 63ff06: OUTPUT«a1b!whatever_dispatch_helper» | ||
masak | rakudo: my $a; CHECK { $a = 42 }' | 11:42 | |
p6eval | rakudo 63ff06: OUTPUT«Confused at line 11, near "CHECK { $a"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
masak | rakudo: my $a; INIT { $a = 42 }' | ||
p6eval | rakudo 63ff06: OUTPUT«Confused at line 11, near "INIT { $a "current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
masak submits rakudobug | |||
moritz_ | masak: there's a trailing ' in your input | ||
masak | argh. | ||
rakudo: my $a; CHECK { $a = 42 } | |||
p6eval | rakudo 63ff06: OUTPUT«Null PMC access in getprop()current instr.: '&infix:<=>' pc 16888 (src/builtins/Junction.pir:228)» | ||
masak | rakudo: my $a; INIT { $a = 42 } | ||
p6eval | rakudo 63ff06: OUTPUT«Null PMC access in getprop()current instr.: '&infix:<=>' pc 16888 (src/builtins/Junction.pir:228)» | ||
masak | moritz_: thanks. | ||
jnthn | masak: Ja, jag är i tåget. :-) | 11:43 | |
masak: Men nu jag vill äta lunch. bbiab :-) | 11:44 | ||
masak | technically right to use 'i', but we use 'på' as to the Englishmen. | ||
s/nu jag vill/nu vill jag/ | |||
jnthn | ...you can explain why that last one when I arrive. :-) | ||
masak | (there's a rule that puts the predicate before the subject if the sentence starts with an adverbial) | ||
jnthn ->> nomvagn | |||
masak | :) | ||
moritz_ | rakudo: my $x; say $x * 3 | 11:45 | |
p6eval | rakudo 63ff06: OUTPUT«0» | ||
masak | no warning? | ||
moritz_ | alpha: my $x; say $x * 3 | ||
p6eval | alpha 30e0ed: OUTPUT«Use of uninitialized value0» | ||
masak | there we go. | ||
masak submits regression rakudobug | |||
moritz_ | masak: there's already a ticket for it | ||
for warnings with undefined values | |||
masak | then I won't submit one :P | ||
moritz_ | alpha: my $x; $x *= 4; say $x | ||
p6eval | alpha 30e0ed: OUTPUT«4» | ||
masak | s/as to/as do/ | ||
moritz_ | rakudo: my $x; $x *= 4; say $x | ||
p6eval | rakudo 1c5737: OUTPUT«0» | ||
moritz_ | now that's a more interesting regression | 11:46 | |
rakudo: say infix:<*>() | |||
p6eval | rakudo 1c5737: OUTPUT«1» | ||
masak | moritz_: is there a ticket for the more interesting regression? | ||
moritz_ | masak: not that I'm aware of | ||
masak submits one | |||
I couldn't sleep last night. I laid up thinking about phasers. :/ | 11:47 | ||
moritz_ | Actions.pm line 2008 looks wrong to me | 11:48 | |
what if $<infix_prefix_meta_operator><sym> is something other than !? | |||
masak | write a test that makes it fail :P | 11:49 | |
moritz_ | I guess that doesn't work easily, since we can't define custom infix_prefix_meta_operator's yet | 11:50 | |
oh | |||
rakudo: say 3 R!= 3 | |||
p6eval | rakudo 1c5737: OUTPUT«0» | ||
moritz_ | rakudo: say 3 R!= 4 | ||
p6eval | rakudo 1c5737: OUTPUT«1» | ||
moritz_ | hm | ||
rakudo: say 3 Z!= 4 | 11:51 | ||
p6eval | rakudo 1c5737: OUTPUT«1» | ||
moritz_ | rakudo: say 3 Z!= 0 | 11:52 | |
p6eval | rakudo 1c5737: OUTPUT«1» | ||
moritz_ | rakudo: say 3 !!= 0 | ||
p6eval | rakudo 1c5737: OUTPUT«0» | ||
moritz_ | rakudo: say 3 !!= 3 | ||
p6eval | rakudo 1c5737: OUTPUT«1» | ||
moritz_ givez up | |||
still, this unconditional special-casing of infix:<!=> makes me uneasy | 11:55 | ||
colomon | moritz_: line 2008 is only supposed to trigger on that particular operator. | ||
moritz_ | colomon: yes, but independent of the meta op | ||
11:56
payload joined
|
|||
moritz_ | if $metaop eq '!' && $opsub eq "&infix:<!=>" { | 11:56 | |
colomon | moritz_: no, that factors in the meta op | ||
moritz_ | oh. | ||
you're right | |||
and I'm stupid :-) | |||
11:58
payload left
|
|||
colomon | it is a weird special case, I admit. :) | 11:58 | |
11:58
payload joined
|
|||
colomon | and at least in theory, the grammar should handle it. But in practice, I needed to add the special case to make things work. | 12:00 | |
moritz_ | i can see - it would take assignment operator and negate the result | 12:01 | |
12:03
snarkyboojum joined
12:05
envi^home joined,
molaf joined
|
|||
masak | snarkyboojum: oh hai! | 12:07 | |
snarkyboojum | masak: hello! | ||
masak | snarkyboojum: we had a successful first release yesterday! \o/ | ||
now there's a bit of a technical debt in the form of tests that should've been written for the runtime... :) | 12:08 | ||
snarkyboojum | masak: congratulations :) enjoyed the release email :) o/ | ||
masak | thanks. :) | ||
snarkyboojum | ah yes - played with it a bit today - fun stuff | 12:09 | |
masak | snarkyboojum: if you want some LHF, see if you can make the 'say' op go through an object with a .say method -- that'll help us mocking for the tests. | ||
snarkyboojum | what is missing in master to stop it from working there | ||
masak: ok - will take a gander | |||
masak | don't know exactly what's missing in master, but I expect us to go with alpha for as long as GGE doesn't run on master. | 12:10 | |
snarkyboojum | masak: ah - good point | ||
masak | snarkyboojum: I think making an $!output attribute and passing an object in with the constructor Runtime.new would be enough. | 12:11 | |
I plan to write up a more detailed roadmap for the coming month, thereby hopefully increasing the bus number by some fractions at least. | 12:12 | ||
takadonet | morning all | 12:13 | |
12:13
wknight8111 joined
|
|||
masak | takadonet: \o | 12:13 | |
12:13
payload left
|
|||
masak | well, time to go home and have lunch. see y'all tonight. | 12:15 | |
12:15
masak left,
fda314925 left
|
|||
takadonet | rakudo: ??? 'Warning....' | 12:16 | |
p6eval | rakudo 1c5737: OUTPUT«Stub code executed» | ||
12:17
fda314925 joined
12:23
opx^on left
|
|||
pugssvn | r30266 | moritz++ | [t/spec] partially fudge reduce.t for rakudo | 12:43 | |
r30267 | moritz++ | [t/spec] unfudge a given test for rakudo | |||
moritz_ | rakudo: my $x = 3; say "foo \$x" | 12:46 | |
p6eval | rakudo 1c5737: OUTPUT«foo \3» | ||
moritz_ reports bug | |||
12:48
payload joined
12:52
molaf left
|
|||
snarkyboojum | phenny: tell masak, not sure if you meant something like this re making the say 'op' go through an object with a .say method? gist.github.com/353097 | 12:54 | |
phenny | snarkyboojum: I'll pass that on when masak is around. | ||
pugssvn | r30268 | moritz++ | [t/spec] fudge identity.t for rakudo | 12:55 | |
r30269 | moritz++ | [t/spec] account for the fact that subs are lexical by default; fudge an integration test for rakudo | |||
snarkyboojum | rakudo: class A { method test($message) { say $message } }; A.new.test("hello") | 12:59 | |
p6eval | rakudo 1c5737: OUTPUT«hello» | ||
snarkyboojum | rakudo: class A { method test($message) { say $message } }; my A $a .= new; $a.test("hello"); | 13:00 | |
p6eval | rakudo 1c5737: OUTPUT«hello» | ||
snarkyboojum | rakudo: class A { method test($message) { say $message } }; my A $a .= new; $a.test "hello"; | 13:01 | |
p6eval | rakudo 1c5737: OUTPUT«Confused at line 11, near "$a.test \"h"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
13:03
payload left,
payload joined
|
|||
moritz_ | $a.test: 'hello' | 13:04 | |
snarkyboojum | moritz_: thanks :) | 13:05 | |
13:05
envi^home left
|
|||
m6locks | happy easter y'all! :3 | 13:07 | |
now it's time for sum sushi -> | 13:08 | ||
PerlJam wonders how the Catalysty style of using sub foo : bar() baz() { ... } will be reconciled with the perl6y sub foo :bar() :baz() { ... } | |||
Seems like it would be nice to get the perl5 folks to start leaning in a perl6 direction on that one | 13:09 | ||
13:09
proller left
|
|||
moritz_ | PerlJam: nope, attributes will be replaced by 'sub foo is bar' | 13:09 | |
traits | 13:10 | ||
13:10
proller joined,
iblechbot left
|
|||
snarkyboojum | I really like that $a.test: 'hello' syntax | 13:11 | |
moritz_ | masak does not :-) | ||
PerlJam | oh, that's right. I've been doing to much Perl 5 lately that I don't sufficiently context switch | ||
moritz_ likes it, too | |||
snarkyboojum | the colon just seems to make so much sense, more natural to me :) | ||
PerlJam | s/to/too/ | ||
snarkyboojum | oic | ||
I've seen it in some of his code tho :) | 13:12 | ||
13:12
envi^home joined
13:13
rgrau joined
13:16
meppl joined
|
|||
dalek | kudo: dd2043b | moritz++ | t/spectest.data: we pass 4 more tests |
13:22 | |
colomon | \o/ | 13:23 | |
jnthn | Is that 4 more tests, or test files? :-) | 13:24 | |
moritz_ | test files | 13:25 | |
jnthn | \o/ | ||
takadonet | how well do Grammar work in the current master branch? | 13:27 | |
moritz_ | quite OK | ||
proto regexes work! | 13:28 | ||
takadonet | ok, Having some trouble on some old code that worked before the NG branch was merged back into the master | ||
moritz_ | one thing that doesn't work in master is backslash escapes in character classes | 13:29 | |
PerlJam | takadonet: show the code (and error) and maybe one of us can tell you where things go awry | ||
takadonet | PerlJam:I will as soon as I narrow down the bug little more. The application is over 4 files right now... | 13:30 | |
PerlJam | takadonet++ I like that ... talking about a Perl 6 application :) | ||
takadonet | finally! | ||
snarkyboojum | anon subtypes in method signatures rock | 13:32 | |
jnthn | :-) | 13:33 | |
Perl 6 signatures are generally pretty cool. | |||
Ooh, there's snow here. :-D | 13:34 | ||
(Well, outside the train.) | |||
snarkyboojum | was just reading "The Next Mainstream Programming Language" preso by Tim Sweeney, and he was talking about dependent types, and I thought - hey Perl 6 can do that.. I think that's how :) | ||
jnthn | Yeah. :-) | 13:35 | |
snarkyboojum | too advanced ;) | ||
jnthn | Heh. Perl is all about taking cool things and getting mere mortals using them without realising it. | ||
PerlJam | the next mainstream programming language will do all the things that Perl 6 can do, but will it be Perl 6? | 13:36 | |
jnthn | "I'm not currying! I just call .assuming!" | ||
snarkyboojum | hehe | ||
partial function application? what's that? | |||
13:42
arnsholt joined
13:44
synth joined,
payload left
|
|||
TimToady | moritz_: .*? is supposed to work fine in a token, just as .*! does; in either case the greedy or frugal behavior overrides context | 13:49 | |
takadonet | there is no debugger for parrot code is there? | 13:52 | |
moritz_ | TimToady: ah, ok | 13:53 | |
29057 passing tests | 13:54 | ||
jnthn | moritz_: \o/ | ||
moritz_++ | |||
13:55
xabbu42 joined
|
|||
moritz_ barely involved | 13:55 | ||
lisppaste3 | colomon pasted "Start of new reduce for [op]" at paste.lisp.org/display/97233 | 13:58 | |
13:58
M_o_C left
|
|||
TimToady | takadonet: no, not yet; I think writing a debugger for parrot would involve several yaks. | 13:58 | |
colomon | hey guys, I'm running around doing moving stuff for the next bit, but I got this far before I got distracted. This doesn't handle the new modifiers, but should do a pretty good job of handling the basic we handle now... (untested) | ||
takadonet | TimToady:indeed | 13:59 | |
moritz_ | colomon: will take a closer look soon | ||
TimToady | in particular, being able to backmap reliably from bytecode position to source code position | 14:00 | |
14:00
wormwood_ joined
|
|||
jnthn | TimToady: The sad bit is that for a little while that actually worked reasonably. :-( | 14:01 | |
moritz_ | jnthn: it seems the parrot folks are willing to work on the annotation stuff if they get a test case | ||
jnthn | Evidently I didn't write sufficient tests to make sure it kept working...was sure I'd written some though. | ||
TimToady | "reliably" :/ | ||
jnthn | moritz_: Yeah, I'll have to look at how the tests I wrote last time around are and perhaps just add to those. | 14:02 | |
TimToady | not sure the parrot introspection is up to snuff either | ||
(for a debugger) | |||
14:03
wormwood left
|
|||
jnthn longs for the day that Rakudo has a .Net backend and he can debug Perl 6 in Visual Studio... | 14:03 | ||
TimToady | and you have to have better resolution of position than just line level | ||
since you can have multiple statements on a line | |||
jnthn | TimToady: Yeah, the Parrot one can in theory handle column as weel | 14:04 | |
It's a general purpose bytecode annotaation system | |||
Rather than just line and file. | |||
You can stash all kinds in there. | |||
14:04
arnsholt left
|
|||
TimToady | all you really need is file and position in file | 14:04 | |
line/column should be derivable from that | 14:05 | ||
jnthn | True. | ||
TimToady | however you care to define "line" and "column" | ||
two users can, in fact, have different definitions | |||
14:05
broquain1 is now known as broquaint
|
|||
TimToady | depending on how their editor counts them | 14:06 | |
but position is basic | |||
assuming, of course, a reasonable definition of position :) | |||
STD currently assumes precanonicalized Unicode, and positions of codepoints, as unpacked by "U* in p5 | 14:07 | ||
er, "U*" | 14:08 | ||
anyway, STD doesn't track line numbers at all, it merely calls .lineof to get the actual line of a position when it needs to print a line number | 14:09 | ||
seems to work out very well in practice | |||
and it's *so* easy to miss a line transition while parsing | 14:10 | ||
PerlJam | TimToady: and .lineof rescans counting newlines? | 14:14 | |
TimToady | no, just builds the table once on first use | 14:15 | |
doesn't take very long | |||
jnthn | ooh, time for a train change soon. | 14:17 | |
back later | |||
14:18
pyrimidine joined
|
|||
TimToady | presumably if someone's editor uses a different line number scheme, that can be taken into account in .lineof | 14:18 | |
.u paragraph | 14:19 | ||
phenny | U+2029 PARAGRAPH SEPARATOR ( ) | ||
14:19
astrojp joined
|
|||
TimToady | that's almost certainly another line from the user's point of view, but I'll bet neither vim nor emacs thinks so | 14:19 | |
14:20
justatheory joined
|
|||
TimToady | yes, vim renders it as a space. :) | 14:21 | |
14:22
wknight8111 left
|
|||
moritz_ | rakudo: say [+] 4..445 | 14:26 | |
p6eval | rakudo dd2043: OUTPUT«99229» | ||
14:26
wormwood joined
|
|||
moritz_ | I've implemented that in O(1) in rakudo locally, but I'm not sure if my multi is actually called :-) | 14:27 | |
14:29
wormwood_ left
|
|||
moritz_ | hm, it's not :( | 14:30 | |
14:32
jaldhar left
14:35
nihiliad joined
14:51
molaf joined
14:52
REPLeffect joined
|
|||
diakopter | rakudo: say || () | 14:56 | |
p6eval | rakudo dd2043: OUTPUT«» | ||
14:59
kcwu_ left,
mberends joined
15:02
kcwu joined,
jaldhar joined
|
|||
colomon | moritz_: did you get a chance to look at that code? | 15:04 | |
TimToady | std: my $a; CHECK { $a = 42 }' | ||
p6eval | std 30269: OUTPUT«===SORRY!===Missing punctuation (semicolon or comma?) after block at /tmp/7poTgRn7qh line 1:------> my $a; CHECK { $a = 42 }⏏' expecting any of: POST bracketed infix horizontal whitespace infix or meta-infix postfix | ||
.. postfix_prefix_me… | |||
TimToady | hmm | ||
another one of those SLTA messages that probably isn't worth fixing | 15:05 | ||
diakopter | S[lightly|uper] | 15:06 | |
15:06
molaf left
|
|||
TimToady | slightly in this case | 15:10 | |
an extra ' right there is not the usual failure mode in the typical program | 15:11 | ||
in a sense, the syntax error occurs before it ever tries to parse the ' as a term | 15:14 | ||
because the check to see if there's more on the line after }, and whether it's a valid continuation, is a lookahead from the } | 15:15 | ||
15:15
arthur-_ joined
|
|||
PerlJam | The error message is awesome-enough for now I think :) | 15:15 | |
TimToady | "something there, I don't recognize it, therefore there should have been punctuation" | ||
diakopter | std: my $a; CHECK { $a = 42 }{} | 15:16 | |
p6eval | std 30269: OUTPUT«ok 00:01 107m» | ||
diakopter | subscript | ||
TimToady | postfixes | ||
std: my $a CHECK { $a = 42}.foo | 15:17 | ||
p6eval | std 30269: OUTPUT«===SORRY!===Two terms in a row at /tmp/68K3fpdpBj line 1:------> my $a ⏏CHECK { $a = 42}.foo expecting any of: bracketed infix infix or meta-infix statement modifier loop traitFAILED 00:01 107m» | ||
TimToady | hmm, or not... | ||
oh | |||
duh | |||
PerlJam | heh | ||
TimToady | std: my $a; CHECK { $a = 42}.foo | ||
p6eval | std 30269: OUTPUT«ok 00:01 107m» | ||
PerlJam | those pesky semis | ||
15:22
snarkyboojum left
15:27
lichtkind joined
|
|||
lichtkind | jnthn: thanks i found out that prompt works exactly like ask, si i will make an alias | 15:28 | |
since i think ask is a much nicer name and shorter | |||
and fits better to say | |||
15:33
arnsholt joined
15:34
jhuni left
15:35
ash_ joined
15:36
M_o_C joined
|
|||
pmurias | ruoso: ping | 15:38 | |
15:44
Jedai joined
|
|||
moritz_ | colomon: notreally | 15:50 | |
ash_ | www.youtube.com/watch?v=jl9HVEJl_-w is an interesting video, its a visualization of the commits to perl, the beginning is funny how larry is the one running around all the branches and so many others come and go | 15:53 | |
15:56
iblechbot joined
16:00
ggoebel joined
16:07
cotto_work left,
cotto_work joined
16:08
mikehh joined
|
|||
colomon | moritz_: okay, I'm working on it in bits and pieces between running out on errands. :) | 16:08 | |
16:20
arthur-_ left
16:23
opx^on joined
16:24
xinming left,
riffraff left
16:26
jaldhar left
|
|||
pugssvn | r30270 | lwall++ | [STD] SMA message on strange stuff after block error | 16:27 | |
jaffa4 | hi | 16:29 | |
Are regular expressions implemented in Perl 6 fully? | 16:30 | ||
I mean the library behind the regular expressions. | |||
moritz_ | jaffa4: stop asking questions to which you should long know the answer | ||
jaffa4 | I mean the library behind it. | ||
l i b r a r y | |||
16:32
xinming joined
|
|||
jaffa4 | I know it does not work fully in rakudo | 16:32 | |
I am not asking that | |||
I guess there must be functions that are called when a regular expression is met in a perl 6 code. | |||
ash_ | the regex stuff in perl 6 is written in nqp | 16:33 | |
s/perl 6/rakudo/ | |||
jaffa4 | and where is it? | 16:35 | |
arnsholt | NQP lives on GitHub | ||
jaffa4 | where is the regex stuff? | 16:36 | |
moritz_ | hugme: show nqp-rx | ||
arnsholt | In NQP. | ||
hugme | moritz_: the following people have power over 'nqp-rx': PerlJam, TimToady, [particle], jnthn, masak, moritz_, pmichaud. URL: github.com/perl6/nqp-rx/ | ||
ash_ | you mean the implementation? under src/Regex | ||
its written in pir | |||
jaffa4 | yes, the implementation | ||
arnsholt | There's also some interesting code in src/cheats | 16:37 | |
jaffa4 | did you not write it is writen in nqp? | ||
ash_ | well, parts of nqp are in nqp and other parts are in pir, it depends on which parts your looking for | 16:38 | |
for instance the Cursor is in pir, but the grammar is in nqp | |||
arnsholt | NQP was started by pmichaud originally (I think). The list of people above are those who now have commitbits to it | ||
moritz_ | arnsholt: not quite - it's those who have permissions on hugme to add new contributors | 16:39 | |
arnsholt | Oh, right. Important difference, that | ||
16:42
hercynium joined
16:47
Sanitoeter_ joined
16:48
prism is now known as daemon
16:49
Sanitoeter_ is now known as `Sanitoeter
16:50
xinming left
16:53
wormwood left
|
|||
moritz_ | std: /<[...b]>/ | 16:55 | |
p6eval | std 30269: OUTPUT«ok 00:01 109m» | ||
moritz_ | rakudo: say 'b' ~~ /<[...b]>/ | ||
p6eval | rakudo dd2043: OUTPUT«b» | ||
16:55
riffraff joined
16:57
Sanitoeter left
|
|||
ash_ | does ...b mean like Mu ... b ? or something | 17:00 | |
17:01
jaldhar joined
|
|||
moritz_ | . .. . | 17:03 | |
erm | |||
. .. b | |||
pugssvn | r30271 | moritz++ | [t/spec] test for RT #64220, strange error for <[...b]> | 17:05 | |
takadonet | hmmm trans is not fix yet.... | 17:06 | |
ash_ | ah, thats confusing, i was expecting ... to match the ... operator (i was kinda assuming longest token matching, but i guess thats not a token in regexs) | ||
moritz_ | std: List | ||
p6eval | std 30270: OUTPUT«ok 00:01 108m» | ||
17:06
payload joined
|
|||
colomon | pugs: say [**] 1..4 | 17:06 | |
p6eval | pugs: OUTPUT«1» | ||
colomon | pugs: say [**] 2..5 | 17:07 | |
p6eval | pugs: OUTPUT«Inf» | ||
takadonet | rakudo: "beer\n4\nme".trans(/\n/ => '') | ||
p6eval | rakudo dd2043: OUTPUT«too few positional arguments: 2 passed, 3 (or more) expectedcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | pugs: say [**] 2..4 | ||
p6eval | pugs: OUTPUT«2417851639229258349412352» | ||
colomon | pugs: say (2 ** 3) ** 4 | ||
p6eval | pugs: OUTPUT«4096» | ||
colomon | pugs: say 2 ** (3 ** 4) | 17:08 | |
p6eval | pugs: OUTPUT«2417851639229258349412352» | ||
colomon | > say reducewith(&infix:<**>, (2, 3, 4)); | 17:09 | |
4096 | |||
> say reducewith(&infix:<**>, (2, 3, 4), :right-assoc); | |||
2.41785163922926e+24 | |||
takadonet | rakudo: say "beer\n4\nme".trans(/\n/,'') | ||
p6eval | rakudo dd2043: OUTPUT«beer4me» | ||
TimToady | ash_: and if it were a token in regexes, it wouldn't necessarily be a token in character classes | 17:10 | |
ash_ | oh, character classes have their own set of tokens? | ||
TimToady | the token set depends on which sublanguage you're in | ||
ash_ | i didn't realize character classes were another sublanguage | 17:11 | |
TimToady | well, of course they do, even in any other regex language | ||
pugssvn | r30272 | moritz++ | [t/spec] test for RT #71086, .kv within class Parcel does not work | ||
17:11
molaf joined
|
|||
TimToady | if you say [a-z] in old fashioned regexes, the - is special in that sublanguage; a - doesn't mean anything in normal regex | 17:12 | |
pugssvn | r30273 | moritz++ | [t/spec] label test appropriately | ||
TimToady | and * is a token outside, but not inside | 17:13 | |
ash_ | hmm, i wasn't thinking of it like that, i just figured you could contextually tell if you were inside a [ ] that - was a range operator, but it does make more sense to consider it a sublanguage than a contextual thing | 17:14 | |
takadonet | rakudo: say "beer\n4\nme".trans(/\n/,'') | ||
p6eval | rakudo dd2043: OUTPUT«beer4me» | ||
takadonet | rakudo: "beer\n4\nme".trans(/\n/ => '') | ||
p6eval | rakudo dd2043: OUTPUT«too few positional arguments: 2 passed, 3 (or more) expectedcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
TimToady | sublanguages *are* context | ||
takadonet | Are both format allowed? | ||
17:14
`Sanitoeter left
|
|||
takadonet | Second did work before the ng merge | 17:15 | |
moritz_ | I think .trans hasn't been ported yet, and it defaults to the parrot .trans method | ||
17:15
Sanitoeter_ joined
|
|||
TimToady | one could take the stronger view that all context is your current language, too | 17:15 | |
takadonet | mortiz_: so that why the first version works? Since it's using parrot .trans | 17:16 | |
moritz_ | takadonet: at least that's my interpretation | ||
TimToady | rakudo: say ' ' ~~ /<[! .. ~]>/ | 17:17 | |
p6eval | rakudo dd2043: OUTPUT«» | ||
TimToady | rakudo: say '!' ~~ /<[! .. ~]>/ | ||
p6eval | rakudo dd2043: OUTPUT«!» | ||
ash_ | TimToady: yeah, that makes sense, i was thinking more that a context wasn't a sublanguage since its rules might only vaguely differ from its parent language, but it makes more sense to view them as individual languages | ||
TimToady | rakudo: say '~' ~~ /<[! .. ~]>/ | ||
p6eval | rakudo dd2043: OUTPUT«~» | ||
takadonet | mortiz_: time to get my hands a little dirty in rakudo guts. Can you point in a general direction to get .trans into master branch please ? :) | ||
TimToady | rakudo: say '~' ~~ /<[. .. .]>/ | ||
p6eval | rakudo dd2043: OUTPUT«» | ||
TimToady | rakudo: say '.' ~~ /<[. .. .]>/ | ||
ash_ | rakudo: say '!' .. '~'; | ||
p6eval | rakudo dd2043: OUTPUT«.» | 17:18 | |
rakudo dd2043: ( no output ) | |||
ash_ | is there anything between '!' and '~' ? | ||
TimToady | string ranges are different from character ranges | ||
ash_ | ah, dang, the nuances | 17:19 | |
TimToady | you can't increment ! and get to ~ | ||
(in strings) | |||
because strings do "carry" | 17:20 | ||
17:20
Sanitoeter_ left
|
|||
TimToady | a character range is really an integer range in disguise | 17:21 | |
ash_ | so how would the character class define the range !..~ | ||
i see | |||
makes sense, but i don't see why .. for a string couldn't attempt the same thing, although that might not be what you'd expect from a string i suppose | 17:22 | ||
TimToady | rakudo: say (ord('!') .. ord('~')).map: *.chr | ||
p6eval | rakudo dd2043: OUTPUT«invoke() not implemented in class 'String'current instr.: 'perl6;Code;signature' pc 13159 (src/builtins/Str.pir:115)» | ||
TimToady | rakudo: say (ord('!') .. ord('~')).map: {.chr} | ||
p6eval | rakudo dd2043: OUTPUT«!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~» | ||
TimToady | like that | ||
17:22
kaare joined
|
|||
TimToady | rakudo: say 'a'..'zz' | 17:22 | |
p6eval | rakudo dd2043: | ||
..OUTPUT«abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewex… | |||
TimToady | not if you expect that | 17:23 | |
17:23
kaare is now known as Guest50464
|
|||
TimToady | that's "carry" | 17:23 | |
ash_ | true, i wasn't thinking of that case... | ||
your right, you could always treat your string as an integer, and do it that way | |||
TimToady | but carry doesn't make sense for individual characters, since <[]> are just character sets | ||
ash_ | ya, not full strings, just the characters themselves | 17:24 | |
TimToady | so it dwym, if ym the right thing :) | ||
ash_ | TimToady: is github.com/ashgti/nq-nqp-rx/blob/ma...%20Map.png roughly correct? in a vauge ish sorta way | ||
17:25
xinming joined,
Sanitoeter_ joined
|
|||
TimToady | I have no idea what some of your lines mean | 17:26 | |
what does the line between lexical stash and class instance mean? | |||
ash_ | yeah, me either, i am trying to figure some of that out, what i was thinking was if you looked up (for instance) "Mu" it would check the lexical scope, right? then travese up the OUTER's till it finds a match | ||
It would be a lexical value, like my $a, where '$a' is defined in the current lexical scope | 17:27 | ||
17:27
payload left,
mikehh left
|
|||
ash_ | i think i might be mixing terms up here, but the CurLex stash should contain the lexically scoped variables | 17:27 | |
17:27
payload joined
|
|||
TimToady | how is that different from the lexical stash on the left? | 17:28 | |
ash_ | the left diagram is more the general case, the right diagram i was trying to match to what it might be in an instance (like "my $a;" since it should default to Any, and be a lexical value) | ||
well, i guess i didn't show it right, but the current stash should have a pointer to OUTER, so you can go form the current lexical scope all the way to the outermost scope | 17:29 | ||
17:30
Guest50464 left,
payload left
|
|||
TimToady | not sure what your Anys and colons mean either | 17:31 | |
17:31
payload joined,
Sanitoeter_ is now known as `Sanitoeter
|
|||
TimToady | the Any has a WHAT too | 17:31 | |
rakudo: say Any.WHAT | 17:32 | ||
ash_ | $a : Any means $a is an instance of many, the Any : ClassHOW sould probably be AnyHOW : ClassHOW, i guess, or maybe not... | ||
p6eval | rakudo dd2043: OUTPUT«Any()» | ||
17:32
payload left
|
|||
ash_ | does that .WHAT refer to itself? | 17:32 | |
TimToady | in that case, yes | ||
17:32
payload joined
|
|||
TimToady | .WHAT always gets you the type object, even from the type object itself | 17:32 | |
ash_ | k, so, with class instances, .WHAT refers to itself, that makes sense | 17:33 | |
TimToady | $a just has extra stuff and is defined | ||
ash_ | should any two instances return the same .WHAT ? | ||
TimToady | only if they are of the same type | ||
WHAT is the nominal type | 17:34 | ||
ash_ | so, my $a; my $b; $a.WHAT =:= $b.WHAT =:= Any.WHAT? | ||
TimToady | HOW has nothing to do with that, only with behavior | ||
which is why it's called HOW, after all | |||
17:34
envi^home left
|
|||
ash_ | yeah, that makes sense | 17:34 | |
TimToady | rakudo: my $a; my $b; say $a.WHAT =:= $b.WHAT =:= Any.WHAT | 17:35 | |
p6eval | rakudo dd2043: OUTPUT«1» | ||
17:35
cotto_work left
|
|||
TimToady | but those are types of the initial contents, not of the container | 17:35 | |
jnthn | oh hai | ||
TimToady | O/ <-- swelled head | ||
rakudo: my $a; say VAR($a).WHAT | 17:36 | ||
p6eval | rakudo dd2043: OUTPUT«Could not find sub &VARcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
TimToady | alpha: my $a; say VAR($a).WHAT | ||
p6eval | alpha 30e0ed: OUTPUT«Method 'WHAT' not found for invocant of class 'MutableVAR'in Main (file src/gen_setting.pm, line 324)» | ||
TimToady | pugs: my $a; say VAR($a).WHAT | ||
p6eval | pugs: OUTPUT«Scalar» | ||
TimToady | pugs: my @a; say VAR(@a).WHAT | 17:37 | |
p6eval | pugs: OUTPUT«Array» | ||
ash_ | I am not sure what you mean, TimToady... | ||
TimToady | the type of $a is Scalar, not Any | ||
ash_ | ah | ||
TimToady | the type of the contents of $a is Any | ||
scalar vars always like to deref themselves though | 17:38 | ||
ash_ | oooo, i see now, yeah, that makes sense, i was thinking of the '$a' as an alias to an object, not as a container | ||
TimToady | unlike arrays | ||
jnthn | nqp: my $a = 42; say "the answer is $a"; | ||
p6eval | nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 1, near " 42; say \""current instr.: 'parrot;HLL;Grammar;panic' pc 500 (src/cheats/hll-grammar.pir:197)» | ||
bkeeler | Morning, #p6 | ||
jnthn | nqp: my $a := 42; say "the answer is $a"; | ||
p6eval | nqp: OUTPUT«Confused at line 1, near "say \"the a"current instr.: 'parrot;HLL;Grammar;panic' pc 500 (src/cheats/hll-grammar.pir:197)» | ||
jnthn | nqp: my $a := 42; say("the answer is $a"); | ||
p6eval | nqp: OUTPUT«the answer is 42» | ||
jnthn | nqp: my $a := 42; say("the answer is \$a"); | ||
p6eval | nqp: OUTPUT«the answer is \42» | ||
17:38
`Sanitoeter is now known as Sanitoeter
|
|||
jnthn | nqp: my @a; @a.push(1); say("the answer is @a[0]"); | 17:38 | |
p6eval | nqp: OUTPUT«the answer is @a[0]» | ||
TimToady | pugs: my $a = 42; say $a.WHAT, ' ', VAR($a).WHAT | ||
p6eval | pugs: OUTPUT«Int Int» | ||
ash_ | hmm, well then i need to re-approach some of my current work then, i think | 17:39 | |
TimToady | hmm, I think pugs is wrong on that last one | ||
17:39
elmex left
|
|||
ash_ | so, the container acts as a forwarder sorta, right? since when you do $a.perl its not going to call Scalar's .perl, its going to call whatever is in $a's .perl | 17:40 | |
TimToady | std: my $a; CHECK { $a = 42}' | ||
p6eval | std 30273: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/Zow8yy3cwo line 1:------> my $a; CHECK { $a = 42}⏏' expecting any of: POST bracketed infix horizontal whitespace infix or meta-infix | ||
.. postfix pos… | |||
TimToady | yes, most methods forward | 17:41 | |
some things that look like methods may be macros really | |||
like .HOW | |||
ash_ | yeah | ||
17:42
Sanitoeter is now known as `Sanitoeter
|
|||
TimToady | rakudo: say 42.HOW === 43.HOW | 17:43 | |
p6eval | rakudo dd2043: OUTPUT«1» | ||
TimToady | rakudo: say 42.HOW === 'lue'.HOW | ||
p6eval | rakudo dd2043: OUTPUT«0» | ||
TimToady | rakudo: my $x = 1; say $x.HOW === 1.HOW | 17:44 | |
p6eval | rakudo dd2043: OUTPUT«1» | ||
TimToady | but even there, you get the autoderef | ||
that's why we need VAR($x) if we really want to talk about the variable object | |||
ash_ | so, for instance, my $a; would make a container called "$a" and add it to the lexical scope, that would have an internal value of Any | 17:46 | |
TimToady | alpha: my $x; say VAR($x) === VAR($x) | 17:47 | |
p6eval | alpha 30e0ed: OUTPUT«Method 'HOW' not found for invocant of class 'MutableVAR'in Main (file src/gen_setting.pm, line 324)» | ||
TimToady | might also have a type constraint of Any, which stays, even if the contents changes to some other type of object | ||
rakudo: my Any $x = 1; say $x.WHAT | 17:48 | ||
p6eval | rakudo dd2043: OUTPUT«Int()» | ||
17:48
`Sanitoeter is now known as Sanitoeter
|
|||
TimToady | rakudo: my Any $x = 1; $x = Mu; | 17:48 | |
p6eval | rakudo dd2043: OUTPUT«Type check failed for assignmentcurrent instr.: '&die' pc 17192 (src/builtins/Junction.pir:399)» | ||
ash_ | yeah, that makes sense, the constraint hangs around | ||
TimToady | rakudo: my Any $x = 1; $x = 'lue'; | ||
p6eval | rakudo dd2043: ( no output ) | ||
TimToady | rakudo: my Any $x = 1; $x = 'lue'; say $x | ||
p6eval | rakudo dd2043: OUTPUT«lue» | ||
TimToady | you see the constraint is still Any, not Int | 17:49 | |
the type on a variable is essentially just a smartmatcher | 17:50 | ||
ash_ | yeah, i see that, i'll have to look at how to implement a container in my program | ||
TimToady | biab & | ||
ash_ | rakudo: say Scalar; | 17:51 | |
p6eval | rakudo dd2043: OUTPUT«Could not find sub &Scalarcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | 17:52 | |
17:52
elmex joined
|
|||
ash_ | i guess in rakudo there isn't access to the scalar container currently | 17:52 | |
moritz_ | rakudo: say VAR(my $x) | 17:53 | |
p6eval | rakudo dd2043: OUTPUT«Could not find sub &VARcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
17:55
proller left
17:56
bbkr left
18:01
cotto_work joined
|
|||
ash_ | lunch & | 18:02 | |
18:02
ash_ left
18:06
wknight8111 joined
18:09
SmokeMachine joined,
mikehh joined
|
|||
moritz_ | rakudo: class A { has $!b; method x { say (:$!b).perl } }; A.new(b => 3).x | 18:11 | |
p6eval | rakudo dd2043: OUTPUT«Symbol '$!b' not predeclared in xcurrent instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
colomon | integration/99problems-01-to-10.t crashing in my spec test.... | ||
moritz_ | :( | ||
what's wrong with it | |||
lisppaste3 | colomon pasted "crash" at paste.lisp.org/display/97243 | 18:12 | |
moritz_ | colomon: looks like one instance of *-1 needs to be fudged out | 18:13 | |
colomon | what changes today would have triggered that?! | ||
moritz_ | it's new in spectest.data | ||
I added it a few hours ago | |||
colomon | ah | 18:14 | |
moritz_ | I don't understand why it fails for you, and passes for me | 18:15 | |
colomon: did you svn up? | |||
colomon | integration/99problems-11-to-20.t seems to be in an endless loop or something... | ||
r30273 | 18:16 | ||
moritz_ | oooh, I forgot to svn dcommit | ||
pugssvn | r30274 | moritz++ | [t/spec] fudge some integration tests for rakudo | ||
moritz_ | my fault | ||
colomon | no worries | 18:17 | |
I'm glad you're getting those tsets going | 18:19 | ||
*tests | 18:20 | ||
pyrimidine | colomon: I saw the same thing (infinite loop on 99problems-11-to-20.t) | 18:24 | |
moritz_ | pyrimidine: should now be fixed by 'svn up' | ||
colomon | pyrimidine: believe moritz_ just checked in the fix | 18:25 | |
pyrimidine | ok, updating... | ||
18:28
wknight8111 left
|
|||
colomon | gack, going to run out of battery before spectest finishes.... | 18:33 | |
moritz_ | then don't spectest :-) | 18:35 | |
TimToady | I prefer plugging in to not running spectests... | 18:36 | |
perhaps colomon is living in one of those benighted parts of the world where only aristocrats are allowed to have power | 18:37 | ||
colomon | sleeping boy on lap, power cord in other room | ||
TimToady | it's the boy that's benighted then. :) | 18:38 | |
pyrimidine running spectest now as well... | |||
colomon | done! | ||
and pushed | |||
dalek | kudo: 8f35ce2 | (Solomon Foster)++ | src/core/metaops.pm: Add new reducewith sub intended to be the backend for [op] (though that is not wired up yet). |
18:41 | |
pyrimidine | only saw on fail, same one I've been seeing intermittently (on S12-methods/instance.rakudo) | 18:44 | |
*one | |||
moritz_ has seen that too | |||
TimToady | std: 3 !!= 4 | 18:45 | |
p6eval | std 30274: OUTPUT«===SORRY!===Ternary !! seems to be missing its ?? at /tmp/jAUGxap574 line 1:------> 3 !!⏏= 4FAILED 00:01 108m» | ||
TimToady | kinda the wrong message, but it's supposed to blow up | ||
colomon | rakudo: 3 !!= 4 | ||
p6eval | rakudo dd2043: ( no output ) | ||
18:45
colomon left
|
|||
TimToady | according to S03:3965 | 18:46 | |
std: 3 ![!=] 4 | |||
p6eval | std 30274: OUTPUT«ok 00:01 106m» | ||
TimToady | that's fine though | ||
18:48
riffraff left
18:49
colomon joined
|
|||
colomon | he woke up about 30 seconds after the machine shut down, so we've relocated to the living room and the MBP is plugged in. :) | 18:50 | |
rakudo: say 3 !!= 4 | 18:52 | ||
p6eval | rakudo dd2043: OUTPUT«0» | ||
colomon | rakudo: say 3 != 4 | ||
p6eval | rakudo dd2043: OUTPUT«1» | ||
colomon | rakudo: say 3 !!!!!!!= 4 | ||
p6eval | rakudo dd2043: OUTPUT«1» | ||
colomon | rakudo: say 3 !!!!!!!!= 4 | ||
p6eval | rakudo dd2043: OUTPUT«0» | ||
colomon | perhaps that's overkill... ;) | ||
moritz_ | std: 1 !!!!= 3 | ||
p6eval | std 30274: OUTPUT«===SORRY!===Ternary !! seems to be missing its ?? at /tmp/L6BZ77s1V3 line 1:------> 1 !!⏏!!= 3FAILED 00:01 106m» | ||
18:52
ShaneC joined
|
|||
colomon is still irrationally pleased that works... | 18:53 | ||
moritz_ | maybe !== is not iffy enough :-) | ||
18:53
ShaneC left
18:55
M_o_C left
|
|||
moritz_ | std: [\==] 1, 2, 3 | 18:56 | |
p6eval | std 30274: OUTPUT«ok 00:01 107m» | ||
colomon | rakudo: say 3 !!!!!!!!== 4 | ||
p6eval | rakudo dd2043: OUTPUT«0» | ||
dalek | kudo: 0ccaf6c | moritz++ | src/core/metaops.pm: implement :$chaining in reducewith() |
18:58 | |
colomon | moritz_++ | ||
pugssvn | r30275 | lwall++ | [STD] Be more forthright on !!op prohibition. | ||
18:58
ash_ joined
|
|||
colomon | re r30275: awwww.... | 18:59 | |
sorear | TimToady: In Pod6, is it possible to interleave a long block (say, =begin METHODS) with ambient code? | ||
jnthn | .oO( The prohibition didn't work out too well. ) |
||
colomon | .oO(Am I a !!op bootleggger?) |
19:01 | |
19:01
moritz_ sets mode: +oo colomon sorear
|
|||
TimToady | sorear: no | 19:01 | |
such things should be accumulated by name, not by structure | 19:02 | ||
moritz_ | colomon: some initial tests show that calling reducewith() directly seems to work | 19:03 | |
TimToady | bbl & | 19:04 | |
sorear | TimToady: oh, so multiple METHOD blocks are legal and concatenated? | ||
colomon | I forgot we also need the "triangle" versions for reducewith. | ||
moritz_ | colomon: not forgot, postponed :-) | ||
colomon | You may have postponed, I just plain forgot. ;) | 19:05 | |
lots of distractions today | |||
moritz_ | currently trying triangle | 19:09 | |
colomon | btw, you appear to have skipped the case where chaining and right-assoc are both turned on. don't know if that's ever a real issue.... | 19:10 | |
moritz_ | aye, doing that now | 19:12 | |
19:12
rbaumer left
|
|||
colomon | \o/ | 19:15 | |
moritz_ | my current version just doesn't combine triangle with chaining yet | ||
colomon wonders if the spec actually describes that.... | 19:16 | ||
moritz_ | Triangular reductions of chaining operators always consist of one or | 19:17 | |
more C<True> values followed by 0 or more C<False> values. | |||
so yes, should be implemented | |||
dalek | kudo: bcdee8e | moritz++ | src/core/metaops.pm: reducewith with triangle; implement combination of chaining and right-assoc |
19:18 | |
19:19
am0c joined
|
|||
colomon | \o/ | 19:19 | |
moritz_ | now it "just" needs to plugged into Actions.pm | 19:20 | |
jnthn | oh hai | 19:21 | |
:-) | |||
jnthn knows how to do that bit, probably | |||
What do we need? Just to detect chaning, \ and right associativity? | |||
colomon | right. | ||
PerlJam | colomon++ moritz++ jnthn++ just reading the scrollback it seems like a little bit of positive synergy going on. | ||
[particle] considers "negative synergy" | 19:22 | ||
jnthn | masak++ and I some stuff coming that fixes 5 (!) bugs. | ||
*have some | |||
Also, masak++ bakes awesome bread. | |||
19:22
ive joined
|
|||
colomon | hacking with moritz_++ is fun. :) | 19:22 | |
it's been far too long since we last had the chance. | |||
PerlJam | [particle]: I suppose the opposite of "synergy" would be "antergy"? | 19:24 | |
[particle] | you'll have to ask bucky about that | ||
hopefully there aren't too many examples of antergy such that it needs a name :) | 19:25 | ||
colomon | btw, masak and jnthn, my wife wanted to know if I could get you guys to ship us some tea. :) | ||
apparently she fell in love years ago with a Swedish tea that isn't available hereabouts, and has been trying to figure out how to get more ever since... | 19:27 | ||
jnthn | Got the name of it? | 19:28 | |
colomon | not on me, but if you're game I'll ask her when she gets home. | ||
jnthn++ | |||
jnthn | I think we're game. :-) | 19:30 | |
moritz_ hopes it's not hunting season | |||
PerlJam | wabbit season! | ||
colomon | duck season! | ||
PerlJam | :-) | ||
jnthn | lol xx 2 | 19:31 | |
moritz_ | who wants to be release manager for the April release? (won't be the Rakudo * release) | 19:36 | |
dalek | kudo: eaf92e0 | moritz++ | docs/ChangeLog: [docs] start ChangeLog for next release |
19:41 | |
colomon | jnthn: Kobbs tea "Sörgårdste" | 19:45 | |
colomon hopes that pasted correctly, looks properly Swedish here... | 19:46 | ||
19:47
alester left
19:48
alester joined
|
|||
Coke-san | colomon: +1 | 19:49 | |
jnthn | looks properly Swedish here too :-) | 19:53 | |
colomon: Ah, masak++ recognizes the name. | 19:54 | ||
moritz_ | colomon: do you want to do the April release? | 19:56 | |
in general we're looking for release managers for the next few months | 19:58 | ||
colomon | moritz_: May would be much better for me. :) | ||
jnthn: \o/ | |||
moritz_ | colomon: ok, I'll enter you for May | ||
phenny: tell pmichaud that you're noted as release manager for the April release (with questionmark) - should I try to find somebody else for that task? | 19:59 | ||
phenny | moritz_: I'll pass that on when pmichaud is around. | ||
dalek | kudo: fc30fad | moritz++ | docs/release_guide.pod: [docs] the Copenhagen release has already happend; colomon++ voluntueered for May |
20:05 | |
20:06
mikehh left
|
|||
moritz_ | rakudo: say Rat.new() | 20:11 | |
p6eval | rakudo bcdee8: ( no output ) | ||
moritz_ | rakudo: say Rat.new().perl | ||
p6eval | rakudo bcdee8: OUTPUT«Any()/Any()» | ||
moritz_ | any objections to making Rat.new() without args just die? | ||
I don't see what good it would do to have it | |||
[particle] | rakudo: say Int.new().perl | 20:12 | |
p6eval | rakudo bcdee8: OUTPUT«0» | ||
[particle] | why isn't Rat.new() 1/1? | ||
jnthn | Well, it's kinda immutable once crated. :-) | ||
[particle] | or 0/1 | ||
jnthn | or 0/0 | 20:13 | |
;-) ;-) | |||
[particle] | *nudge* *nudge* | ||
jnthn | Rat.new would just set 0/1, anyways. | ||
moritz_ | sound sensible | ||
moritz_ spectests | 20:14 | ||
pugssvn | r30276 | moritz++ | [t/spec] unfudge tests for Rat.new.perl, RT #68958 | 20:19 | |
dalek | kudo: cfc139f | moritz++ | src/core/Rat.pm: trivial Rat.new() without arguments (returns 0/1) |
20:22 | |
20:23
skyler_ joined,
skyler__ left
|
|||
diakopter | std: blah: goto blah; sub blah() { } | 20:23 | |
p6eval | std 30275: OUTPUT«===SORRY!===Illegal redeclaration of routine 'blah' (see line 1) at /tmp/2gkNuDCu65 line 1:------> blah: goto blah; sub blah⏏() { } expecting new name to be definedFAILED 00:01 106m» | ||
diakopter | TimToady: is that a stdbug? | ||
dalek | p-rx: 67a8eaf | jonathan++ | src/Regex/P6Regex/Actions.pm: Correct action methods for \e and \f sequences in regexes. |
20:24 | |
p-rx: e3f10da | jonathan++ | src/HLL/ (2 files): Add detection of unknown backslash sequences and fix the \$ bug along the way. masak++ too. :-) |
|||
p-rx: b17415a | jonathan++ | src/HLL/ (2 files): Properly implement \f, \e and \0 escapes in strings. |
|||
p-rx: 88873ca | jonathan++ | src/stage0/ (3 files): Update the bootstrap. |
|||
20:24
molaf left
|
|||
diakopter | if not, I didn't realize subs & label namespaces coincided | 20:24 | |
20:25
kfo_ joined
|
|||
pmurias | diakopter: subs have a & sigil | 20:28 | |
jnthn | I suspect stdbug. | ||
20:29
kfo left,
kfo_ is now known as kfo
20:30
[particle] left
|
|||
diakopter | pmurias: I was referring to the label "blah" | 20:30 | |
std: blah: sub blah() { } | |||
p6eval | std 30276: OUTPUT«===SORRY!===Illegal redeclaration of routine 'blah' (see line 1) at /tmp/gDCxGQr2eI line 1:------> blah: sub blah⏏() { } expecting new name to be definedFAILED 00:01 106m» | ||
pmurias | std: sub blah() {};blah: 1 | 20:31 | |
p6eval | std 30276: OUTPUT«ok 00:01 107m» | ||
pmurias | diakopter: what i meant is that even if labels and routines shared namespaces blah and &blah shouldn't collide | 20:32 | |
jnthn sees it like pmurias | 20:33 | ||
diakopter | oh | ||
diakopter comprehends, finally | |||
20:34
[particle] joined,
[particle] left,
pmurias left
|
|||
sorear | jnthn++ | 20:36 | |
jnthn: you ought to fix your parrot U:line | 20:37 | ||
jnthn | U:line? | ||
sorear | look in parrot:CREDITS | 20:38 | |
N: Jonathan Worthington | |||
U: jonathan | |||
jnthn | omgz karma loss! | ||
sorear | also "who's that jonathan guy who keeps committing" | ||
jnthn | Well, my svn handle is jonathan for Parrot svn. | 20:39 | |
ash_ | sorear: i don't think its jnthn, that would be just silly | ||
jnthn | Yeah, jnthn never commits! | ||
ash_ | add a second U? | ||
20:44
ive left,
ive joined
|
|||
takadonet | rakudo: say "beer\n4\nme".trans(/\n/,'') | 20:52 | |
p6eval | rakudo cfc139: OUTPUT«beer4me» | ||
takadonet | rakudo: say "beer\n4\nme".trans(/\n/ =>'') | ||
p6eval | rakudo cfc139: OUTPUT«too few positional arguments: 2 passed, 3 (or more) expectedcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
dalek | kudo: 0893322 | jonathan++ | build/PARROT_REVISION: Bump PARROT_REVISION to get latest nqp-rx fixes. |
21:03 | |
kudo: 50fa7b0 | jonathan++ | t/spectest.data: Turn S02-literals/fmt-interpolation.t back on. |
|||
moritz_ wonders if Good Friday was a public holliday in other countries too | |||
m6locks | yes it was | 21:06 | |
but we were prepared :) | |||
pugssvn | r30277 | jnthn++ | [t/spec] Unfudge a few tests that we now pass. | 21:07 | |
jnthn | moritz_: Yes, it is here in Sweden too | ||
21:11
payload left,
pyrimidine left
|
|||
pugssvn | r30278 | jnthn++ | [t/spec] Few more unfudges from rx.t for \e and \f fixes. | 21:13 | |
jnthn | The first results and the masak+jnthn easter hackathon! | ||
Time for us to go for a walk now. bbiab. :-) | 21:14 | ||
Coke-san | moritz: it's per-company here in the US. I have it off. Whee. | 21:15 | |
also, moritz++ # nqp help! | |||
21:26
arnsholt left
21:27
cognominal joined
21:32
ash_ left
21:37
[synth] joined
21:38
Su-Shee left
21:39
synth left
21:41
[synth] left
|
|||
pugssvn | r30279 | lwall++ | [STD] add label as constant rather than type as noticed by diakopter++ | 21:46 | |
r30279 | [STD] report EOF correctly now that we no longer add ';' to original text | |||
r30279 | [Cursor] add .label_id method so we can tell labels from other constants | |||
r30279 | [std] add filename to 'ok' for more visibility into sub-compilation by 'use' | |||
21:46
snarkyboojum joined
21:51
eternaleye left,
kolibrie left,
broquaint left,
breinbaas left,
awwaiid left,
TimToady left,
gbacon left,
szbalint left
21:53
eternaleye joined,
kolibrie joined,
Lorn joined,
broquaint joined,
breinbaas joined,
frew joined,
_sri joined,
awwaiid joined,
TimToady joined,
gbacon joined,
szbalint joined,
verne.freenode.net sets mode: +o TimToady
|
|||
diakopter | aiiiiieeeeee | 21:56 | |
jnthn | I'm in masak's office, nabbing his pens. ;-) | ||
21:56
masak joined
|
|||
masak | oh hai, #perl6! | 21:56 | |
phenny | masak: 12:54Z <snarkyboojum> tell masak not sure if you meant something like this re making the say 'op' go through an object with a .say method? gist.github.com/353097 | ||
masak | snarkyboojum: it's an excellent commit. next time, favor forgiveness to permission -- you have write access to the Yapsi repo already :) | 21:57 | |
cognominal | Yapsi? | ||
masak | :) | ||
cognominal | what is that? | ||
masak | colomon: it's a compiler announced on April 1 on p6c. | 21:58 | |
arg, cognominal. | |||
tab completion fejl.. :/ | |||
rakudo: /<[a..\]]>/ | 21:59 | ||
p6eval | rakudo 50fa7b: OUTPUT«regex assertion not terminated by angle bracket at line 11, near "]>/"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
masak submits rakudobug | |||
21:59
alester left
|
|||
masak | rakudo: /<[a..\\]>/ | 21:59 | |
p6eval | rakudo 50fa7b: OUTPUT«Confused at line 11, near "/<[a..\\\\]>"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
jnthn | std: /<[a..\]]>/ | ||
p6eval | std 30279: OUTPUT«ok 00:01 109m» | ||
jnthn | std: /<[a..\\]>/ | ||
p6eval | std 30279: OUTPUT«ok 00:01 107m» | ||
masak | it's almost cheating after you've looked at the nqp-rx source :P | 22:00 | |
22:00
awwaiid left,
awwaiid joined
|
|||
masak | rakudo: say "e" ~~ /<[a..\e]>/ | 22:02 | |
p6eval | rakudo 50fa7b: OUTPUT«e» | ||
masak | same bug. :) | ||
22:04
constant joined
|
|||
masak | rakudo: say 'foto' ~~ /<-[\t]>+/ | 22:05 | |
p6eval | rakudo 50fa7b: OUTPUT«fo» | ||
jnthn | rakudo: my $x = 3; say "foo \$x" | ||
p6eval | rakudo 50fa7b: OUTPUT«foo $x» | ||
22:06
lichtkind left
22:08
nihiliad left
22:10
eternaleye left,
kolibrie left,
Lorn left,
broquaint left,
breinbaas left,
_sri left,
TimToady left,
gbacon left,
szbalint left,
frew left,
meppl left
22:12
broquaint joined,
szbalint joined
22:13
_sri joined
22:16
eternaleye joined,
breinbaas joined,
kolibrie joined,
Lorn joined,
frew joined,
TimToady joined,
verne.freenode.net sets mode: +o TimToady,
Sanitoeter left
|
|||
diakopter | std: blah: sub blah() { } | 22:18 | |
p6eval | std 30279: OUTPUT«ok 00:01 107m» | ||
jnthn | rakudo: foo() | ||
p6eval | rakudo 50fa7b: OUTPUT«Could not find sub &foocurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
pugssvn | r30280 | masak++ | [t/spec/S05-mass] fudged properties-general.t | ||
22:20
astrojp left,
eternaleye left,
breinbaas left,
kolibrie left,
Lorn left,
TimToady left,
frew left
22:22
arthur-_ joined,
eternaleye joined,
arthur-_ left,
Sanitoeter joined
22:24
TimToady joined,
kolibrie joined,
frew joined
|
|||
dalek | kudo: e889ed4 | masak++ | t/spectest.data: [spectest.data] uncommented two test files |
22:25 | |
masak | that's 1264 more tests run, most of them passing, I think. | ||
22:25
ggoebel left
|
|||
jnthn | We probably just broke 30,000. masak++! | 22:25 | |
masak spectests | |||
jnthn | rakudo: /foo/i | 22:28 | |
p6eval | rakudo 50fa7b: OUTPUT«Unsupported use of /i; in Perl 6 please use :i at line 11, near ""current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
masak | \o/ | ||
22:28
arthur-_ joined
|
|||
colomon | \o/ | 22:29 | |
\o/ | 22:30 | ||
jnthn | colomon: Has you a happy? | ||
masak | are those three happy people? | ||
22:30
breinbaas joined
|
|||
masak | or the same happy person thrice? | 22:30 | |
colomon | one very happy person | ||
snarkyboojum | masak: cheers :) consider it commited then | ||
colomon | I didn't think we'd hit 30,000 for another week or more... | 22:31 | |
masak | snarkyboojum++ | ||
snarkyboojum | s/commited/committed/ | ||
masak | snarkyboojum: I do have a question and a pondering, however... :) | ||
22:32
breinbaas left
|
|||
masak | the question has to do with the TODO comment; why couldn't you just use 'say' rather than 'print ... "\n"'? | 22:32 | |
snarkyboojum | masak: thought you might | ||
masak: didn't know how to ;) it thinks I'm referring to the current say sub if I do that I think (expected 2 args, got 1 type error message) | 22:33 | ||
masak | sounds like a bug. | ||
22:33
jaffa4 left
|
|||
snarkyboojum | ah | 22:33 | |
well how would it work out which say I want to use? | |||
22:34
iblechbot left
|
|||
masak | rakudo: class A { method say($x) { say $x } }; A.new.say("OH HAI") | 22:34 | |
p6eval | rakudo 50fa7b: OUTPUT«Not enough positional parameters passed; got 1 but expected 2current instr.: 'perl6;A;say' pc 425 (EVAL_1:190)» | ||
snarkyboojum | yeah that sort of thing :) | ||
masak | snarkyboojum: subs are orthogonal to methods. | ||
jnthn | That's...wrong. :| | ||
wtf. | |||
masak submits a rakudobug | |||
:) | |||
snarkyboojum | ah - excellent :) | 22:35 | |
22:36
breinbaas joined
|
|||
masak | the pondering has to do with making Yapsi::Runtime::IO a class. | 22:36 | |
might we make it a subtype instead? | |||
diakopter | ISpay | ||
snarkyboojum | yeah.. has similar doubts about it being a class | ||
s/has/had | 22:37 | ||
masak | something like subset Yapsi::IO where { .can('say') } | ||
snarkyboojum | masak: sounds cool - didn't know enough to have that exact thought :) | ||
masak | anyway, all that's just details. nice commit! now we can write tests for the runtime! | 22:38 | |
snarkyboojum | masak: yay! those comments are great - I learn a lot from them :) | 22:41 | |
pugssvn | r30281 | jnthn++ | [t/spec] Unfudge a test for NoSuch::Class error message. | 22:44 | |
dalek | kudo: 9a20634 | jonathan++ | src/ (2 files): Make A::B.new in the case that A::B doens't exist emit a message that mentions A::B, not just a null PMC access. |
22:48 | |
masak | \o/ jnthn++ | ||
colomon | \o/ | 22:49 | |
seems like you guys are on fire today! | |||
lue | O HAI! I have an extinguisher! | 22:50 | |
22:50
ive left
|
|||
colomon | lue: no! let them burn! | 22:51 | |
we need their light. | |||
.oO(metaphor out of control!) |
|||
lue | I could use it in a few hours when the big ball of nuclear fusion/fission is not in the sky | ||
jnthn | colomon: Is the new reducewith ready to be wired up? | ||
masak .oO( fired up ) | 22:52 | ||
colomon | jnthn: go for it! | ||
I reckon it still needs some work, but it will be easier to test once it is wired up. | |||
lue: as I hear it "The sun is a miasma / Of incandescent plasma" | 22:53 | ||
I get 29080 passing tests here. | |||
lue | I like the nuclear bit. It can scare some people who've heard of Chernobyl :) | 22:54 | |
colomon | jnthn: also note that you can bind all the parameters but the iterable one. | 22:55 | |
assume, curry, whatever. :) | |||
masak | mmm... curry assumptions. | 22:56 | |
jnthn: I fixed up use.perl.org/~masak/journal/40167 to reflect that you fixed up Rakudo. :) | |||
colomon would like to make triangle reduce lazy... | |||
jnthn | masak: I assume we're going for a curry sometime? ;-) | 22:57 | |
masak | definitely. | ||
22:57
Schwern joined
|
|||
jnthn | \o/ | 22:57 | |
masak | maybe not before tomorrow, though :) | ||
jnthn | it's already tomorrow | ||
oh, wait... | |||
masak bans jnthn from implementing S32::Temporal :P | 22:58 | ||
jnthn | THANK YOU! :-D | ||
lue | THAT'S MY JOB! :) | ||
masak | that's what you wanted all along, isn't it? :P | ||
jnthn | Actually I wanted somewhere to keep my bike nice and dry... | 22:59 | |
masak | lue: I was hoping you'd just retro-commit the Temporal module from Perl 6.3.8, released in 2149... :) | ||
talk about bootstrapping the Temporal module :P | |||
lue | I would, but then 6.3.8 would be derived from 6.3.8, and that's not good :/ | 23:00 | |
masak .oO( Art of the Metatemporal Protocol ) | |||
lue | I'd have to transfer it through the sub-etha, and reroute it into hyperspace, to try and bypass the laws, but... | 23:01 | |
I suppose it couldn't hurt. Alright, I'm go | 23:03 | ||
23:03
lue left
23:05
masak left
23:06
masak joined
23:07
lue joined
|
|||
lue | oh wow. Let's NOT do that! | 23:07 | |
masak: are you there? | 23:09 | ||
masak | lue: think so. | 23:10 | |
lue | How to define a Duration object... | 23:13 | |
masak | I guess it's rooted in two Instants... | ||
lue | the current spec says it's TAI-seconds aware | 23:14 | |
masak | well, so is Instant. | ||
lue | If you would like a _complete_ revision, I'll define things that can't be implemented :) | ||
jnthn | rakudo: say [<] 1,3,2,4 | 23:15 | |
masak | rakudo: say 2 ** 3 ** 4; say [**] 2, 3, 4 | ||
p6eval | rakudo 9a2063: OUTPUT«1» | ||
rakudo 9a2063: OUTPUT«2.41785163922926e+244096» | |||
lue | rakudo: say 2 * 3 ** 4; say 2 ** 3 * 4; | 23:17 | |
p6eval | rakudo 9a2063: OUTPUT«16232» | ||
colomon | well, that's two wrong answers. :( | ||
masak | colomon: jnthn has a nice surprise coming, though :P | ||
colomon | oooooooo | 23:18 | |
lue | rakudo: say 2 ** (3 ** 4); | ||
p6eval | rakudo 9a2063: OUTPUT«2.41785163922926e+24» | ||
lue | rakudo: say (2 ** 3) ** 4; | 23:19 | |
p6eval | rakudo 9a2063: OUTPUT«4096» | ||
lue | that's where it goes wrong :) | ||
colomon | rakudo: say reducewith(&infix:<**>, (2, 3, 4), :right-assoc); | 23:20 | |
p6eval | rakudo 9a2063: OUTPUT«2.41785163922926e+24» | ||
23:21
opx^on is now known as opx^away
|
|||
lue | for a duration _object_, how would you define what duration it measures? (seconds, minutes, etc.) | 23:28 | |
dalek | kudo: 3469ffe | jonathan++ | src/Perl6/ (2 files): Wire reduce meta op up to use the new reducewith that can handle chaining, triangle form and right-associative ops. |
||
masak | lue: well, it's clearly defined in terms of Instants, but if you want to convert it into civil time, it possibly depends on where you are on the globe, and what religion you belong to, etc. | 23:29 | |
jnthn++! | |||
lue | yes, I'm just wondering how the coder would define the object... | ||
my Duration $something something something | |||
colomon | jnthn++ | ||
lue | jnthn++ | ||
masak | lue: maybe Duration.new( :from(Instant.new(...)), :to(Instant.new(...)) ) ? | 23:30 | |
23:30
eternaleye left
|
|||
lue | my Duration $var = 3 #`(TAI seconds); say $var.Gregorian::Minutes ? | 23:32 | |
23:33
opx^away is now known as opx^on,
opx^on is now known as opx^away
23:34
Sarten-X left
|
|||
masak | lue: it's concrete questions such as the ones you're asking that would be nice to answer in order to build a fine Temporal module. | 23:36 | |
I'm increasingly thinking about going back to First Principles: how would I *like* a Time object to work? | 23:37 | ||
lue | Whoever wrote it just said "This is a doughnut" without describing it | ||
Would you like a revision, or an overhaul? <:)>.evil | |||
masak thinks the spec doesn't say "This is a doughnut" nearly enough :) | 23:38 | ||
jnthn | Is it a sugary one? | ||
masak | it does, however, say "You need a wormhole for that." | ||
jnthn: the S04 and S05 doughnuts are sugary :) | 23:39 | ||
and the S12 one, I s'pose. | |||
lue | is it toruses or torii ? | ||
jnthn | Donoughts have a hole too...I see opportunities for unification here. | ||
masak | lue: 'tori'. | ||
lue | alright | 23:40 | |
masak | jnthn: "The Grand Spec-Doughnut Unification of 2010"! | ||
lue is quietly rewriting all of Temporal to his own design, toning it down so you have a chance of implementing it :) | |||
23:43
eternaleye joined,
lue left
23:44
lue joined
|
|||
lue | oh! disconnections are no fun :/ | 23:44 | |
(I much prefer Unix Epoch over TAI...) | 23:46 | ||
23:46
SmokeMachine left
|
|||
lue | rakudo: say time() | 23:47 | |
p6eval | rakudo 3469ff: OUTPUT«1270251136.55319» | ||
jnthn | rt.perl.org/rt3/Ticket/Display.html?id=64968 | 23:48 | |
masak looks | |||
lue | shinky hypertext (looking) | ||
s/shinky/shiny/ | |||
rakudo: my $a; say $a.defined | |||
p6eval | rakudo 3469ff: OUTPUT«0» | 23:49 | |
lue | rakudo: my $a=3; say $a.defined | ||
p6eval | rakudo 3469ff: OUTPUT«1» | ||
jnthn | std: say (0,0,0,0,0,0) >>+>> ((1,2) xx *) | 23:50 | |
p6eval | std 30281: OUTPUT«ok 00:01 109m» | ||
lue | rakudo: say time() | ||
jnthn | rakudo: say (0,0,0,0,0,0) >>+>> ((1,2) xx *) | ||
p6eval | rakudo 3469ff: OUTPUT«1270251341.38794» | ||
rakudo 3469ff: ( no output ) | |||
jnthn | colomon: Maybe one for you to look at: (1,2) xx * ain't lazy, it seems | 23:51 | |
(should be) | 23:52 | ||
colomon | jnthn: I actually looked at that a few days ago, and it was a bloodbath. | ||
jnthn | Ouch. | ||
colomon | I will try again at some point, but it was discouraging, to say the least. | ||
> say [**] 2, 3, 4 | |||
2.41785163922926e+24 | |||
jnthn | rakudo: sub foo(*@data, $bar) { say $bar }; my @data = 1,2,3; foo(@data, 'OH HAI') | 23:53 | |
p6eval | rakudo 3469ff: OUTPUT«Not enough positional parameters passed; got 2 but expected between 1 and 0current instr.: 'foo' pc 250 (EVAL_1:95)» | ||
23:54
mikehh joined
|
|||
snarkyboojum | wowsers - 32190 tests - did I read that correctly? :) | 23:56 | |
masak | :) | 23:59 |