»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:05
packetknife left
|
|||
Woodi | hmm, should be 'my' not required ? in perl5 it's needed for marking not global vars... | 00:07 | |
tadzik | always required in Perl 6 | 00:08 | |
Woodi | would be nice if it will be default... | 00:09 | |
00:09
fridim_ joined
|
|||
Woodi | if possible | 00:09 | |
jnthn | Good Perl 5 programmers - 1-liners aside - pretty much always "use strict" in perl 5 anyway. | ||
Woodi | yes, it is 'must' in p5 | 00:10 | |
jnthn | So we're just saving everyone a line of boilerplate. :) | ||
I think in -e "..." it should be relaxed | |||
So one-liners are still convenient. | |||
But we don't implement that in Rakudo yet. | |||
Woodi | do not understund - not saving by requiring it... | 00:11 | |
jnthn | Woodi: You don't have to write "use strict;" in Perl 6, because it's on by default. | 00:12 | |
sorear | Woodi: We require you to explicitly declare variables to help prevent typo bugs | ||
Woodi: If 'my' wasn't required, then the compiler would accept $color = read_from_db(); say $colour; but would always output "Any" | |||
00:14
pernatiy joined
|
|||
Woodi | perl is scripting language, not see problem in that | 00:14 | |
but understud explicity boilerplate part | |||
sorear | Perl is a multiparidigm language. | ||
It does applications too. | 00:15 | ||
tadzik | I'd be careful with this 'scripting' part :) | 00:16 | |
Woodi | oki, can someone point me to some IO::Socket::INET code/module ? need examples | 00:17 | |
found | |||
jnthn | sleep & | 00:22 | |
tadzik | g'night | 00:23 | |
Woodi | base64 is builtin now ? | ||
tadzik | nope | ||
there's a MIME::Base64 module | |||
Woodi | not working | ||
ok, gn all | 00:24 | ||
00:26
wolfman2000 joined
|
|||
tadzik | gn | 00:27 | |
snarkyboojum | Woodi: There are now two different versions of MIME::Base64, the latest works on latest Rakudo (v1.1). v1.0 works on earlier Rakudos based on ng, like the last Star release | 00:56 | |
00:56
alvis left
00:57
thundergnat left,
ZapZ left
|
|||
snarkyboojum | phenny: tell moritz++ thanks for the fix to MIME::Base64 on nom - not backwards compatible with ng, but at least it works :) have committed it as a new version of the module for now | 00:59 | |
phenny | snarkyboojum: I'll pass that on when moritz++ is around. | ||
snarkyboojum | whoops - that won't work | 01:00 | |
phenny: tell moritz thanks for the fix to MIME::Base64 on nom - not backwards compatible with ng, but at least it works have committed it as a new version of the module for now | |||
phenny | snarkyboojum: I'll pass that on when moritz is around. | ||
01:04
ZapZ_ joined
|
|||
tadzik | ehh | 01:06 | |
niecza: sub a(:$b) {}; a(b => 7, b => 7) | 01:07 | ||
p6eval | niecza v9-32-g380d891: OUTPUT«Potential difficulties: $b is declared but not used at /tmp/ECsuacmDsV line 1:------> sub a(:⏏$b) {}; a(b => 7, b => 7)» | ||
tadzik | pugs: sub a(:$b) {}; a(b => 7, b => 7) | ||
p6eval | pugs: OUTPUT«*** No compatible multi variant found: "&a" at /tmp/92ANqf0Lp8 line 1, column 16 - line 2, column 1» | ||
tadzik | b: sub a(:$b) {}; a(b => 7, b => 7) | 01:08 | |
p6eval | b 1b7dd1: OUTPUT«duplicate named argument in call in main program body at line 22:/tmp/76l0mQll_c» | ||
01:08
donri left
|
|||
tadzik | nom: sub a(:$b) {}; a(b => 7, b => 7) | 01:08 | |
p6eval | nom 375fa0: OUTPUT«duplicate named argument in call in <anon> at /tmp/a9AqJkAmil:1 in <anon> at /tmp/a9AqJkAmil:1» | ||
tadzik | sorear: what do you think about it? It's not per-spec, and it causes DateTime.t to break, but it may sound like a nice feature. Maybe it ought to be a warning | 01:10 | |
sorear | tadzik: I am about 3/4 sure that the most useful behavior is to use the last argument, which is what niecza does | ||
01:10
alvis joined
|
|||
sorear | tadzik: think about what? | 01:10 | |
JimmyZ | does phenny know moritz++ ? | ||
tadzik | so you treat the set of named params similiarly to a hash? | ||
sorear: about what you just said :) | |||
sorear | yes. | ||
tadzik | I see | ||
sorear | JimmyZ: I don't think so | 01:11 | |
tadzik | DateTime.t uses sub dt(*%args) { DateTime.new(year => 1984, |%args) } | ||
where |%args possibly contain year too | |||
nom: sub foo(:$a); my %h = a => 5; foo(a => 6, |%h) | |||
01:11
JimmyZ left
|
|||
p6eval | nom 375fa0: OUTPUT«===SORRY!===Missing block at line 1, near "; my %h = "» | 01:11 | |
tadzik | nom: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, |%h) | 01:12 | |
p6eval | nom 375fa0: OUTPUT«duplicate named argument in call in <anon> at /tmp/907YNvPNaP:1 in <anon> at /tmp/907YNvPNaP:1» | ||
tadzik | b: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, |%h) | ||
p6eval | b 1b7dd1: ( no output ) | ||
tadzik | huh | ||
b: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, a => 5) | |||
p6eval | b 1b7dd1: OUTPUT«duplicate named argument in call in main program body at line 22:/tmp/Fza_E6Q285» | ||
tadzik | not too smart, b | ||
lichtkind | good night, hope to be more productive soon | 01:46 | |
01:47
lichtkind left
01:49
uasi joined
|
|||
tadzik | good night | 01:52 | |
dalek | kudo/nom: eb855f3 | tadzik++ | src/core/Temporal.pm: Fix DateTime.now |
||
kudo/nom: 048cfd5 | tadzik++ | / (2 files): Fix Date.clone. We now pass S32-temporal/Date.t |
|||
01:55
wolfman2000 left
01:58
thou joined
02:06
envi joined
02:07
whiteknight left
02:16
skangas left
02:53
Chillance left
03:25
packetknife joined
03:29
soh_cah_toa left
03:38
alester joined
03:51
gbacon left
|
|||
dalek | ecza/serialize: 876ee08 | sorear++ | Makefile: Fix build |
03:55 | |
ecza/serialize: 7292b3a | sorear++ | / (9 files): More tweaks, can now create SubInfo objects at compile time |
|||
03:58
packetkn_ joined
04:01
packetknife left
04:26
packetkn_ left
04:32
uasi left
04:38
nsh joined
04:42
ZapZ_ left
04:54
alester left
05:07
packetknife joined
05:10
packetknife left
05:11
miguet left
|
|||
cognominal_ | github.com/perl6/specs/pull/4 # replace $?ROUTINE fossils by &?ROUTINE | 05:57 | |
06:03
ZapZ joined
06:09
orafu left
06:11
orafu joined
06:13
kaare_ joined
06:14
bluescreen10 left
06:20
thou left,
jimmy1980 joined
|
|||
dalek | ecza/serialize: 02f306a | sorear++ | / (3 files): Start on lexicals in new model |
06:50 | |
sorear sleep | |||
06:53
mberends joined
06:55
_jaldhar joined
|
|||
mberends | aww, missed sorear by 3 minutes # just arrived home in .nl | 06:56 | |
06:56
jaldhar left
|
|||
sorear | mberends: I'm not actually asleep yet, I have a moment. | 07:04 | |
mberends | sorear: :-) | ||
I wrote a small GUI Sierpinski triangles app en route, not problems with it | 07:05 | ||
07:05
daniel-s joined
|
|||
mberends | I had earlier found a blocker on Gtk menus, but cannot remember the exact problem. Will re-do. I've started writing a Gtk text editor as well, mainly to explore GUI functionality. | 07:06 | |
The blockers are likely to be around native types. There was the inability to resize the clock as well, because the Geometry function is meant to pass pointers to ints. I think the menus had a similar requirement. | 07:08 | ||
07:09
wamba joined
|
|||
sorear | oh yes | 07:10 | |
I actually thought I implemented pointers-to-ints | |||
please leave tickets for any issue(s) you find | 07:11 | ||
I'm not likely to get to this stuff for a while | |||
hmm, only one more week 'till the release | |||
sorear wonders if /serialize will be ready by then | |||
mberends | ok. generally the feel of Gtk programming is very friendly and the docs are sufficient. | 07:12 | |
07:13
wamba left,
wamba joined
|
|||
sorear | mberends: I just added #56 and #57 for your existing issues | 07:13 | |
mberends | I hope serialize goes well. I slowed down on guts documentation because I saw you were refactoring the files I was studying. | ||
sorear: thanks | 07:14 | ||
sorear | I'd be happy to talk about my plans, but unless you have something urgent I'm going to leave now. | ||
mberends | I have a very free day. It's probably better for you to sleep first and talk later. I'd like to talk anyhow. | 07:15 | |
jlaire | .u ⸘‽ | 07:19 | |
phenny | U+2E18 INVERTED INTERROBANG (⸘) | ||
U+203D INTERROBANG (‽) | |||
jlaire | phenny: ty | ||
benabik | .u ⸮ | 07:21 | |
phenny | U+2E2E REVERSED QUESTION MARK (⸮) | ||
mberends | wow, interrobang! Ansa da question, or teh kitty gets it! | 07:22 | |
another Niecza GUI idea: John Horton Conway's Game of Life | 07:26 | ||
Niecza master 'make test' fails test number 974 - Hash.any means any(keys): got: any("a", ) expected: any("a") | 07:29 | ||
jlaire | a hashlife implementation in Perl 6 would be interesting to see | ||
mberends | hmm, yes indeed. | 07:32 | |
07:35
birdwindupbird joined
|
|||
tadzik | good morning | 07:35 | |
cognominal | hi, can someone apply the pull request? [07:57] <cognominal_> github.com/perl6/specs/pull/4 # replace $?ROUTINE fossils by &?ROUTINE | 07:36 | |
dalek | ecs: 5b9b25e | (Stéphane Payrard)++ | S (2 files): replace $?ROUTINE fossils by &?ROUTINE |
07:38 | |
ecs: 83f68bd | benabik++ | S (2 files): Merge pull request #4 from cognominal/master replace $?ROUTINE fossils by &?ROUTINE |
|||
benabik | cognominal++ | ||
cognominal | thx | ||
07:41
arthur-_ left
07:43
arthur-_ joined
07:45
Kivutarrr joined
|
|||
tadzik | given nqp::bindpos($fia, 0, nqp::unbox_i($dt.whole-second)); I get FixedIntegerArray: index out of bounds! | 07:51 | |
benabik | What's the size of the FIA? Maybe it got initialized to 0, so there's no space in it. | ||
tadzik | I'll read the docs. It's just my Mu $fia := pir::new__PS('FixedIntegerArray'); | 07:52 | |
I think this is one of those "how did it work before" moments | |||
benabik | Yes… I think that just makes a size 0 array | 07:53 | |
It needs to be pir::new__PSi('FixedIntegerArray', $size) | |||
(Or something like that.) | |||
tadzik | that dies with init_pmc() not implemented in class 'FixedIntegerArray' | 07:54 | |
benabik | That's odd… | ||
tadzik | but you can probably set size using assignment | 07:55 | |
if the tests don't lie | |||
benabik | PSi should call init_int, not init_pmc... | ||
Ah… the set_integer_native VTABLE does it, but I'm not sure how to get at that. | 07:56 | ||
assign__PI? | |||
tadzik | nom: pir::new__PSi('FixedIntegerArray', nqp::unbox_i(5)); | ||
p6eval | nom 048cfd: OUTPUT«init_pmc() not implemented in class 'FixedIntegerArray' in <anon> at /tmp/mXxZr8mb73:1 in <anon> at /tmp/mXxZr8mb73:1» | ||
tadzik | I'll try that | ||
PI, or Pi maybe? | |||
both die with error:imcc:syntax error, unexpected PREG, expecting '(' ('$P101') | 07:57 | ||
07:57
mj41 joined
|
|||
benabik | nap has moved a little farther away from PIR… It's more difficult for me to figure out what'll do waht. | 07:58 | |
07:58
_jaldhar left
|
|||
tadzik | void set_integer_native(INTVAL size) | 07:58 | |
benabik | NQP generates odd code sometimes… new__PSI('FIA', 1') creates a Float PMC, assigns 1 to it, then assigns it to an int register, then calls new. | 08:00 | |
tadzik | set $S100, "FixedIntegerArray" | 08:01 | |
new $P101, $S100, 5 | |||
is the code generated by pir::new__PSi('FixedIntegerArray', 5) | |||
it doesn't fail itself when ran in pir | 08:02 | ||
benabik | I was using 2011.06-196-gf3b8f73 | ||
NQP, sorry | |||
tadzik | maybe deserializing it crashes it | 08:04 | |
...not that I know how to debug it :P | 08:05 | ||
I'll wait for jnthn to wake up | |||
moritz | good morning | 08:06 | |
phenny | moritz: 01:00Z <snarkyboojum> tell moritz thanks for the fix to MIME::Base64 on nom - not backwards compatible with ng, but at least it works have committed it as a new version of the module for now | ||
benabik | In my copy of nom, I see nqp_get_sc_object $P101, "1316332982.94512", 6; set $S100, $P101 ; new $P102, $S100, 1 | ||
No idea why that's ending up in init_pmc | 08:07 | ||
tadzik | good morning moritz | 08:10 | |
08:12
wallberg joined
|
|||
dalek | kudo/nom: a48a985 | tadzik++ | src/core/Temporal.pm: More Temporal fixes |
08:13 | |
tadzik fixing calendar.t | 08:14 | ||
S32-temporal/local.t suffers from the "out of bounds" case | |||
benabik | tadzik: The FIA problem? | ||
tadzik | now, can we agree whether it should be method day-of-year() {} or method day-of-year {}? #perl6style | ||
benabik: yes | |||
moritz | tadzik: I prefer the () | 08:15 | |
tadzik | hmm, I prefer without :) | 08:18 | |
benabik | Well, let's compromise and only use one paren. | ||
tadzik | fair enough | 08:19 | |
moritz | tadzik++ # fixing Date.t | ||
erm, the code behind Date.t | |||
tadzik | oh, moritz | 08:20 | |
dalek | kudo/nom: b952372 | tadzik++ | / (2 files): Uncomment Date.day-of-year. We now pass S32-temporal/calendar.t; track failure reasons |
||
tadzik | b: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, a => 5) | ||
p6eval | b 1b7dd1: OUTPUT«duplicate named argument in call in main program body at line 22:/tmp/hWnrudWXyf» | ||
tadzik | b: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, |%h) | ||
p6eval | b 1b7dd1: ( no output ) | 08:21 | |
tadzik | nom: sub foo(:$a) {}; my %h = a => 5; foo(a => 6, |%h) | ||
p6eval | nom 048cfd: OUTPUT«duplicate named argument in call in <anon> at /tmp/9MKSCalq_s:1 in <anon> at /tmp/9MKSCalq_s:1» | ||
tadzik | moritz: see the last two. nom is certainly smarter, but it breaks DateTime.t | ||
I already adjusted Date.clone to be smart about this limitation, but fixing the test seems wrong | |||
moritz | tadzik: yep, I've seen your patch in 048cfd5 and thought that was the case | ||
tadzik: hm, where is that used in a test? | 08:22 | ||
tadzik | I like how niecza does it, it treats named params sort of like a hash keys... | ||
moritz: sub dt() iirc | |||
...and by the force of nature the problem doesn't exist | |||
moreover, the spec doesn't say anything about such a limitation, and moremoreover, that error is a parrot error, not a rakudo error | |||
so I'll just declare it a rakudobug | 08:23 | ||
(and fix it, if I had a bloody idea how to do this) | |||
or rather where to do this | |||
moritz | tadzik: it's ok to "fix" the test, because the test is not about argument passing, but about DateTime | 08:24 | |
if we want to test that feature, it should be in S06-* somewhere | |||
and tests are supposed to minimize used of advanced features, except for the thing they are currently testing | 08:25 | ||
tadzik | fair enough | ||
ok, now it fails with FixedIntegerArray: index out of bounds! too | 08:26 | ||
benabik | \o/ | ||
wait… /o\ | 08:27 | ||
dalek | ast: 62ecf0f | tadzik++ | S32-temporal/DateTime.t: [DateTime.t] Avoid passing doubled named parameters; some implementations are not okay with that, and it's not the thing being tested here |
08:28 | |
tadzik | close enough ;) | ||
okay, time for some breakfast shopping & | |||
08:29
miguet joined
|
|||
tadzik | phenny: tell flussence since nom is now default, please feel free to file every Pod-related issue you have to RT; external memory is better for me to remember about stuff | 08:30 | |
phenny | tadzik: I'll pass that on when flussence is around. | ||
tadzik | phenny: thanks | ||
08:40
im2ee joined
08:45
Kivutarrr left
|
|||
dalek | kudo/nom: 04532d3 | moritz++ | lib/Test.pm: [Test.pm] show error after a failed dies_ok |
09:20 | |
kudo/nom: 2eb5b16 | moritz++ | src/core/Num.pm: floor() now returns an Int when possible |
09:42 | ||
09:46
SHODAN joined
10:18
tokuhiro_ joined
|
|||
dalek | kudo/nom: ab30d74 | moritz++ | src/core/Temporal.pm: [Temporal] initialize length of FixedIntegerArray |
10:19 | |
moritz takes a break from Temporal hacking | 10:23 | ||
tadzik | oh, this is how you do it | ||
how are the passes now? | 10:24 | ||
moritz | tadzik: it runs up to 140 now, three failures | ||
tadzik | I can give it a peek | ||
moritz | nom: new__PSI('ResizableIntegerArray', 9) | ||
p6eval | nom 2eb5b1: OUTPUT«Could not find sub &new__PSI in <anon> at /tmp/AYPHTfr3SE:1 in <anon> at /tmp/AYPHTfr3SE:1» | ||
moritz | nom: pir::new__PSI('ResizableIntegerArray', 9) | 10:25 | |
p6eval | nom 2eb5b1: OUTPUT«init_pmc() not implemented in class 'ResizableIntegerArray' in <anon> at /tmp/CELB0Qiv_k:1 in <anon> at /tmp/CELB0Qiv_k:1» | ||
moritz | huh, I thought that would work too | ||
tadzik | don't you want that to be Fixed? | ||
but it doesn't work anyway | |||
moritz | nom: pir::new__PSI('FixedIntegerArray', 9) | 10:26 | |
p6eval | nom 2eb5b1: OUTPUT«init_pmc() not implemented in class 'FixedIntegerArray' in <anon> at /tmp/xkNSUxBR0E:1 in <anon> at /tmp/xkNSUxBR0E:1» | ||
tadzik | it should be using init_int, not init_pmc | ||
moritz | nom: pir::new__PSP('FixedIntegerArray', 9) | ||
p6eval | nom 2eb5b1: OUTPUT«init_pmc() not implemented in class 'FixedIntegerArray' in <anon> at /tmp/j8q3bMTgZK:1 in <anon> at /tmp/j8q3bMTgZK:1» | ||
10:27
agentzh joined
10:38
lumi_ joined
|
|||
dalek | ast: 6bbd321 | tadzik++ | S32-temporal/DateTime-Instant-Duration.t: [DateTime-Instant-Duration.t] Avoid some more doubled named parameters |
10:41 | |
10:43
MayDaniel joined
|
|||
dalek | ast: d9c9935 | tadzik++ | S32-temporal/DateTime.t: DateTime.in-timezone doesn't take named parameters, use positionals |
10:44 | |
ast: 6edbf45 | tadzik++ | S32-temporal/DateTime.t: [S32-temporal/DateTime.t] Avoid some named params magic. The test was failing on some implementations due to that, and we should be testing DateTime's reactions, not multiple dispatching. |
10:51 | ||
tadzik | nom: say DateTime.new(time); say DateTime.now | 10:54 | |
p6eval | nom 2eb5b1: OUTPUT«DateTime.new(year => 2011, month => 9, day => 18, hour => 10, minute => 54, second => 18)DateTime.new(year => 2011, month => 9, day => 18, hour => 10, minute => 54, second => 18, timezone => $*TZ)» | ||
tadzik | nom: say DateTime.new(time); say DateTime.now.utc | 10:55 | |
p6eval | nom 2eb5b1: OUTPUT«DateTime.new(year => 2011, month => 9, day => 18, hour => 10, minute => 55, second => 12)FixedIntegerArray: index out of bounds! in method offset at src/gen/CORE.setting:6486 in method postcircumfix:<( )> at src/gen/CORE.setting:6480 in <anon> at src/gen/Metamo… | ||
tadzik | evalbot rebuild nom | ||
p6eval | NOT OK (maybe a rebuild is already in progress?) | ||
tadzik | MAYBE. OK | ||
anyway, DateTime.t assumes DateTime.new(time) and DateTime.now.utc to be equal, not sure if that's really timezone-friendly: on my box, the difference is 4 hours. I'll leave that for some DateTime wizards | 10:57 | ||
jnthn | o/ | 11:02 | |
11:02
im2ee left
|
|||
jnthn | Wow, crazy DateTime hacking \o/ | 11:02 | |
11:02
im2ee joined
|
|||
tadzik | oh hai jnthn | 11:03 | |
jnthn | Note from backlog: there's a difference between pir::...__Psi and pir::...PSI | ||
If you're putting literal values in, always use the lowercase forms. | |||
pir::new__PSI('blah', 42) # wrong | |||
pir::new__Psi('blah', 42) # right | |||
11:05
buubot_backup left
|
|||
tadzik | oh | 11:07 | |
anyway, seen the doubled named params issues? | |||
jnthn | No | ||
moritz | nom: pir::new__Psi('ResizableIntegerArray', 9) | ||
p6eval | nom ab30d7: OUTPUT«init_pmc() not implemented in class 'ResizableIntegerArray' in <anon> at /tmp/2ckgYG3O2K:1 in <anon> at /tmp/2ckgYG3O2K:1» | ||
jnthn | nom: pir::new__Psi('FixedIntegerArray', 9) | ||
p6eval | nom ab30d7: OUTPUT«init_pmc() not implemented in class 'FixedIntegerArray' in <anon> at /tmp/sczRxFXQJx:1 in <anon> at /tmp/sczRxFXQJx:1» | 11:08 | |
jnthn | hm, guess you can't do that. :S | ||
tadzik | jnthn: irclog.perlgeek.de/perl6/2011-09-18#i_4443641 | ||
jnthn | nom: pir::set__0Pi(pir::new__Ps('FixedIntegerArray'), 9) | ||
p6eval | nom ab30d7: ( no output ) | ||
jnthn | That should do it. | ||
tadzik | it did | 11:09 | |
moritz | jnthn: that's what I'm using | ||
jnthn | OK. | ||
That's probably the Right Way | |||
moritz | jnthn: but I've seen github.com/parrot/parrot/blob/mast...rray.t#L42 and wondered if we could do it that way too | ||
jnthn | tadzik: I'm not sure how much we can do abotu the dupe arg thing. | 11:10 | |
Short of migrating off Parrot :P | |||
Or getting Parrot folks to change something, somehow. | |||
tadzik | eh? | 11:11 | |
jnthn | tadzik: It's a Parrot limitation. | ||
tadzik | couldn't we just take care of it before the Parrot's invocation? | ||
jnthn | tadzik: How? | ||
tadzik | I mean, b did it partly | ||
jnthn: I have no idea how :) | |||
jnthn | In the case you mentioned, we could spot them I guess | ||
tadzik | b: sub foo(:$a) { say $a }; foo(a => 7, a => 6) | ||
p6eval | b 1b7dd1: OUTPUT«duplicate named argument in call in main program body at line 22:/tmp/5f86SdjyVB» | ||
jnthn | In the flattening case though...we don't know what's in the hash until runtime. | ||
tadzik | okay, that worked with the hash | 11:12 | |
jnthn | Really? | ||
tadzik | b: sub foo(:$a) { say $a }; my %h = a => 5; foo(a => 6, |%h) | ||
p6eval | b 1b7dd1: OUTPUT«5» | ||
tadzik | yeah | ||
bbs | |||
jnthn | nom: sub foo(:$a) { say $a }; my %h = a => 5; foo(a => 6, |%h) | ||
p6eval | nom ab30d7: OUTPUT«duplicate named argument in call in <anon> at /tmp/INvgQhHryN:1 in <anon> at /tmp/INvgQhHryN:1» | ||
jnthn | eh, wtf. | ||
cognominal | nom: my %a; %a<a> :exists | 11:13 | |
p6eval | nom ab30d7: OUTPUT«===SORRY!===Confused at line 1, near "%a<a> :exi"» | ||
jnthn | Hm, I don't see why on earth it works in b. | 11:14 | |
11:15
woosley joined
|
|||
jnthn | afk for a moment | 11:18 | |
moritz | the hash removes the duplicates before it interpolates | 11:21 | |
nom: say List.^mr0 | 11:24 | ||
p6eval | nom ab30d7: OUTPUT«Method 'mr0' not found for invocant of class 'Perl6::Metamodel::ClassHOW' in method dispatch:<.^> at src/gen/CORE.setting:660 in <anon> at /tmp/pC7OHcQh_0:1 in <anon> at /tmp/pC7OHcQh_0:1» | ||
moritz | nom: say List.^mro | ||
p6eval | nom ab30d7: OUTPUT«List() Iterable() Cool() Any() Mu()» | ||
11:26
buubot_backup joined
11:27
skangas joined
|
|||
jnthn | back | 11:31 | |
< jnthn> Short of migrating off Parrot :P -- ARGH! Critical missing words - off Parrot CALLING CONVENTIONS. | |||
jnthn should not be allowed to type before coffee | |||
:/ | |||
The thing is that we only get control of...some parts. | 11:32 | ||
But the flattening and arg checking stuff is all handled before a language's own binder gets its shot at things. | |||
|@i-am-infinite is awkward for the same reason. | 11:33 | ||
Hm | |||
er | 11:37 | ||
something very weird is going on here | |||
jnthn will have to dig a bit more in a moment. | 11:38 | ||
11:39
Patterner left
11:40
Psyche^ joined,
Psyche^ is now known as Patterner
11:43
jimmy1980 left
|
|||
jnthn | OK, I think I see how on earth to fix this. | 11:45 | |
11:51
jimmy1980 joined
|
|||
snarkyboojum | cool - what's b? | 11:54 | |
a particular revision of rakudo? | 11:55 | ||
jnthn | snarkyboojum: Yeah, before the big refactor. | ||
snarkyboojum | oh! ok | 11:56 | |
woosley | perl6: say (2,4,5) <<+>> (1,1,1) | 12:00 | |
p6eval | pugs: OUTPUT«***  Unexpected "<<+>>" expecting operator, ":" or "," at /tmp/xY26FDTDNS line 1, column 13» | ||
..rakudo ab30d7, niecza v9-32-g380d891: OUTPUT«3 5 6» | |||
woosley | perl6: say (2,4,5)<<+>>(1,1,1) | ||
p6eval | pugs: OUTPUT«*** Odd number of elements found where hash expected: VList [VInt 2,VInt 4,VInt 5] at /tmp/RUzc7va1bM line 1, column 5 - line 2, column 1» | ||
..niecza v9-32-g380d891: OUTPUT«Unhandled exception: Unable to resolve method ast in class Any at /home/p6eval/niecza/src/NieczaActions.pm6 line 19 (NieczaActions NieczaActions.FALLBACK @ 14)  at /home/p6eval/niecza/src/STD.pm6 line 3307 (STD P6.postcircumfix:sym<<< >>> @ 19)  at l… | |||
..rakudo ab30d7: OUTPUT«Method 'at_key' not found for invocant of class 'Parcel' in method postcircumfix:<{ }> at src/gen/CORE.setting:972 in <anon> at /tmp/cfEmZo12i7:1 in <anon> at /tmp/cfEmZo12i7:1» | |||
woosley | std: say (2,4,5)<<+>>(1,1,1) | 12:01 | |
p6eval | std bb4f150: OUTPUT«ok 00:01 122m» | ||
woosley | bug? | 12:02 | |
12:03
masak joined,
MayDaniel left
|
|||
jnthn | woosley: Whitespace matters. | 12:04 | |
Always put whitespace around infixes. | |||
masak | hello #perl6 from a train o/ | ||
12:04
masak left,
masak joined
|
|||
masak | I wonder if there's another local minimum somewhere that would please people who don't like whitespace around their operators. | 12:05 | |
12:05
masak left
12:06
masak joined
|
|||
masak | probably not. | 12:06 | |
even if there is, it probably has enough drawbacks that it could never be the default. | |||
woosley | jnthn: whitespace again! Perl6 whitespace rule is confusing ... | 12:08 | |
snarkyboojum | what's the rule? put whitespace around infixes? | ||
woosley | snarkyboojum: That's why it is confusing, you never know where you 'should' leave a whitespace | 12:09 | |
snarkyboojum | woosley: not sure how "put whitespace around infixes" is confusing | 12:10 | |
but I don't claim to know all the whitespace specific rules :) | |||
jnthn | As a rule: always put whitespace around infix operators, don't put it before/after prefix/postfix/postcircumfix operators. | ||
$a < $b # whitespace, 'cus it's infix | |||
12:10
f00li5h joined
|
|||
jnthn | $foo<bar> # no whitespace because it's a postcircumfix | 12:10 | |
snarkyboojum | that seems pretty easy to remember | 12:11 | |
woosley | snarkyboojum: I met another whitespace rule yesterday | ||
snarkyboojum | woosley: ah, ok - which one? | ||
jnthn | Yes, though admittedly different from what some people may be used to coming from other languages. | ||
Note that the parens for passing arguments to a call are a postcircumfix. | 12:12 | ||
so foo(1,2,3), not foo (1,2,3) | |||
snarkyboojum | I think I've always put whitespace around infix ops and not before postfix :) | ||
maybe I'm just "lucky" :P | |||
jnthn | :) | ||
12:12
masak left
|
|||
jnthn tries a patch to clear up the args stuff a bit. | 12:12 | ||
12:12
masak joined
|
|||
jnthn | masak: Good connection! | 12:13 | |
snarkyboojum | w00t mobile interwebs :) | ||
woosley | snarkyboojum: oh, not yesterday, but someday, here it is: irclog.perlgeek.de/perl6/2011-09-15#i_4433366 | ||
masak | the whitespace rule essentially puts postfixes/postcircumfixes in a different namespace than infixes. | 12:14 | |
jnthn | Maybe I shoulda phrased it as "if you don't want it to be interpreted as a postfix or postcircumfix, put spaces" :) | 12:15 | |
masak | jnthn: better than nothing :) I have to micro-backlog a lot, though. | ||
snarkyboojum | woosley: oh that kinda seems like a different rule | ||
space required between trait and { | 12:16 | ||
woosley | perl6: say (2,4,5)>>+<<(1,1,1) | ||
jnthn | snarkyboojum: It's not so different. | ||
p6eval | pugs: OUTPUT«356» | ||
..rakudo ab30d7, niecza v9-32-g380d891: OUTPUT«3 5 6» | |||
jnthn | snarkyboojum: The reason it doesn't work is because it thinks you're supplying a postcircumfix to the "rw" :) | 12:17 | |
woosley | Ha, you can omit whitespace here! | ||
dalek | kudo/nom: 69136a4 | moritz++ | src/core/ (2 files): implement chrs |
||
woosley | is it confusing? | ||
:) | |||
jnthn | woosley: Yes, the point is that in places you *can*, but if you'd like to avoid surprises then you probably shouldn't. | ||
masak | no, it's the same rule. | 12:18 | |
snarkyboojum | jnthn: sure - so you shouldn't use whitespace before a postfix, except when it's not :D | ||
I'm probably tautologising :) | |||
jnthn | woosley: The reason you hit trouble the other way is because there's a postcircumfix operator <...> for indexing. | ||
snarkyboojum | so, space everywhere apart from before postfixes ;) | 12:19 | |
woosley | good to know that! | ||
masak | jnthn: actually it's the <<...>> indexing operator. | 12:20 | |
snarkyboojum | how does unspace fit into this? :) | ||
jnthn | masak: ah, yes | ||
masak | snarkyboojum: unspace is necessary when you want space anyway. | ||
snarkyboojum: that's why it's called "unspace", because it's whitespace that doesn't actually count as whitespace. | |||
snarkyboojum | masak: on a superficial reading, that sentence seems very confusing :) | 12:21 | |
but got ya | |||
masak | well, that confusion is what the term 'unspace' captures. | ||
snarkyboojum | masak: aye | ||
12:21
MayDaniel joined
|
|||
snarkyboojum | so unspace is really, ignoredspace | 12:22 | |
masak | yes. | ||
snarkyboojum | goody | 12:23 | |
I think this conversation has spaced me out nicely :) | |||
masak | a lot of things in Perl 6 are <ws>, whitespace. comments are <ws>, for example. I think Pod is <ws>. | 12:24 | |
the thing unspace does is let you say "I want whitespace here, but don't parse it as <ws> -- and thus don't switch from expecting a postcircumfix or a postfix to expecting an infix". | |||
: - ) | |||
snarkyboojum | could something like peg/leg parse perl 6? | ||
masak | talk about deconstructing the jokes. | ||
snarkyboojum | or bits of it? | ||
masak | the answer to the second question is trivially "yes" :) | 12:25 | |
snarkyboojum | masak: gotya.. maybe it should be called antispace instead :) | ||
trivially? | |||
peg/leg as in an implementation of, (piumarta.com/software/peg/peg.1.html) - not the concepts | 12:26 | ||
jnthn | Well, parsing "1234" could count as parsing bits of Perl 6 :P | ||
snarkyboojum | oh | ||
masak | whatever peg/leg is, it could probably parse integer literals, say. | ||
snarkyboojum | how about the first question? ;) | ||
sans "bits of" | |||
jnthn | That's probably much harder. | 12:28 | |
e.g. how to simulate LTM in that case, how to handle the non-declarative bits... I don't know PEGs well enough to be sure of the answer, but I can imagine it's hard. | 12:29 | ||
12:31
masak left
|
|||
jnthn | > sub foo(:$a) { say $a }; foo(a => 69, a => 42) | 12:31 | |
42 | |||
> my %h = a => 69; foo(a => 42, |%h) | |||
69 | |||
tadzik: ^^ | |||
spectesting | |||
woosley | perl6: my @a=(2,4,5); @a.map({.say}) | ||
p6eval | rakudo ab30d7: ( no output ) | ||
..pugs, niecza v9-32-g380d891: OUTPUT«245» | |||
jnthn | (was quite a re-work of arg handling...there may be some fallout) | 12:32 | |
snarkyboojum | ok - sounds interesting anyway | ||
jnthn | ugh, yes, something is now very broken :( | 12:33 | |
woosley | \o ~~ | ||
moritz | perl6: my @a=(2,4,5); sink @a.map({.say}) | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&sink" at /tmp/KmPTudEuGT line 1, column 16 - line 2, column 1» | ||
..niecza v9-32-g380d891: OUTPUT«===SORRY!===Action method statement_prefix:sink not yet implemented at /tmp/LrvEqhYSVN line 1 (EOF):------> my @a=(2,4,5); sink @a.map({.say})⏏<EOL>Unhandled exception: Unable to resolve method statement_level in cl… | |||
..rakudo ab30d7: OUTPUT«245» | |||
jnthn just managed to make every single spectest fail o/ | 12:34 | ||
Achievement! | |||
woosley | perl6: (2,4,5).map: *.say | ||
p6eval | pugs: OUTPUT«Inf*** Cannot cast from VList [VBool True] to Pugs.AST.Types.VCode (VCode) at /tmp/JxA8wl5JwC line 1, column 1 - line 2, column 1» | ||
..niecza v9-32-g380d891: OUTPUT«245» | |||
..rakudo ab30d7: OUTPUT«*» | |||
snarkyboojum | jnthn: only one place to go from there! :) | ||
jnthn | oh, I see why... | 12:35 | |
moritz | .oO( achievement unlocked ) |
||
jnthn | :P | ||
woosley | perl6: (2,4,5).map: {.say} | ||
p6eval | rakudo ab30d7: ( no output ) | ||
..pugs, niecza v9-32-g380d891: OUTPUT«245» | |||
12:36
birdwindupbird left
|
|||
jnthn | ah, this looks better... | 12:36 | |
snarkyboojum | I really like the use of colon in those cases :) | 12:37 | |
moritz too | |||
snarkyboojum | I know masak doesn't - or didn't use to ;) | ||
woosley | I wonder why {} can be omitted here with '*.say'~~ | ||
moritz | woosley: beause *.say creates a block, just like { } does | 12:38 | |
map doesn't need a block, just something callable | 12:39 | ||
perl6: my @a = (1, 2, 3).map(&say) | |||
p6eval | niecza v9-32-g380d891: OUTPUT«Potential difficulties: @a is declared but not used at /tmp/UPPzhdj6ad line 1:------> my ⏏@a = (1, 2, 3).map(&say)123» | ||
..pugs, rakudo ab30d7: OUTPUT«123» | |||
woosley | moritz: I am thinking with the perl5 way :) | ||
jnthn | Dang. One test fial. | 12:40 | |
felher | perl6: (1,2,3,4,5).grep: { $_ % 2 }.say | ||
p6eval | rakudo ab30d7: OUTPUT«_block1010» | ||
..niecza v9-32-g380d891: OUTPUT«Unhandled exception: Unable to resolve method say in class Block at /tmp/gb_DLdhu6a line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2061 (CORE module-CORE… | |||
..pugs: OUTPUT«135» | |||
felher | Hm, Pugs++ | ||
12:40
kaare_ left
|
|||
moritz | woosley: even perl 5 doesn't need a block | 12:41 | |
buubot_backup: eval: [map $_ + 1, 1, 2, 3 ] | |||
buubot_backup | moritz: [2,3,4] | ||
woosley | :-( | 12:43 | |
snarkyboojum | is (2,4,5).map: *.say doing something like (2,4,5).map: -> $x { $x.say } ? | ||
woosley perldoc -f map ing | |||
eiro | snarkyboojum, remove * | 12:48 | |
(i think) | |||
p6eval, < a b c >.map: .say | 12:49 | ||
p6eval < a b c >.map: .say | |||
p6eval: < a b c >.map: .say | |||
?? | |||
static_perl | perl6: "what".say | 12:50 | |
p6eval | pugs, rakudo ab30d7, niecza v9-32-g380d891: OUTPUT«what» | ||
eiro | arf... epic fail :) | 12:51 | |
static_perl | :) | 12:52 | |
12:52
MayDaniel left
|
|||
snarkyboojum | I thought * was converted into a curried closure | 12:52 | |
dalek | kudo/nom: 029c30f | jnthn++ | src/ (6 files): Refactor of flattening and better handling of duplicate named parameters. Decidedly not perfect, but maybe the best we can easily do for now. |
||
jnthn | tadzik, moritz: ^^ should help with the Temporal stuff | 12:53 | |
12:55
Chillance joined
|
|||
snarkyboojum | or it's doing (2,4,5).map: { $^x.say } | 12:58 | |
:) | |||
moritz | yes to both :-) | 12:59 | |
snarkyboojum | moritz: which both? :D | 13:00 | |
moritz | -> $x { $x.say } and { $^x.say } | 13:02 | |
both are equivalent to *.say | |||
snarkyboojum | goody | 13:03 | |
13:03
uasi joined
13:05
wolfman2000 joined
|
|||
snarkyboojum | so -> is kinda shorthand for a lambda | 13:09 | |
moritz | it is. It starts an explicit signature | 13:10 | |
whereas { $^x } implicitly generates a signatuer | |||
snarkyboojum | so -> $x { $x.say } is kinda like \x -> say(x) | 13:12 | |
I like the explicit syntax, I reckon the -> $x { $x.say } type thing | 13:13 | ||
13:20
uasi left,
uasi joined
13:25
jimmy1980 left
13:31
jimmy1980 joined
13:34
donri joined
|
|||
tadzik | jnthn: cool | 13:34 | |
13:42
jimmy1980 left
13:54
lateau_ joined
14:00
_jaldhar joined
14:07
wolfman2000 left
14:10
bloonix joined,
_jaldhar left
14:19
mj41 left
14:28
agentzh left
|
|||
sorear | good * #perl6 | 14:28 | |
jnthn: I'm curious what you think of the niecza approach to identifying type objects. | 14:30 | ||
14:37
MayDaniel joined
|
|||
mberends | good * sorear | 14:37 | |
14:40
woosley left
14:42
whiteknight joined
|
|||
sorear | mberends: no more questions for me? | 14:48 | |
mberends | sorear: so far so good, menus are almost working, I had previous not configured them properly. Toolbars also work ok. | 14:49 | |
jnthn | sorear: Essentially, $obj =:= $obj.WHAT ? | 14:52 | |
14:53
daniel-s left,
daniel-s joined
|
|||
sorear | jnthn: more like === | 14:58 | |
jnthn | Well, then depends how the === is implemented ;) | 14:59 | |
sorear | jnthn: it's up to the REPR; my equivalent of P6opaque just happens to know that it never creates more than one undefined object | ||
mberends | sorear: here's one: in niecza/examples/gtk1.pl:13, what would the syntax be to refer to a named event handler instead of the inline anonymous one? | 15:01 | |
15:02
whiteknight left
|
|||
sorear | you mean like .add_Clicked(&my_sub); ? | 15:02 | |
mberends | sorear: yes, like that. I had tried some variation(s) before that didn't work. | 15:03 | |
jnthn | sorear: Well, as I have it it's also up to the REPR; we just do REPR(foo)->defined(...). | ||
sorear: If you can absoletely be sure you'll only ever create the one, it can work the way you have it. | 15:04 | ||
sorear | jnthn: under what circumstances will jnthn:P6opaque ever create more than one type object? | 15:05 | |
jnthn | sorear: Clone the type object. | ||
sorear | per STable | ||
jnthn | sorear: Also, representation polymorphism. | ||
sorear | jnthn: that doesn't make more than one per STable though | ||
15:05
_jaldhar joined
|
|||
jnthn | sorear: True, but I've been expecting that there'll still be a "canonical" WHAT. | 15:06 | |
$p6opague-dog ~~ Dog and $p6hash-dog ~~ Dog should both be true. | 15:07 | ||
Anyway, if you forbid cloning the type object and were able to be sure that .WHAT on an s-table always pointed off to the type object for that representation, then yeah, it can work the way you have it. | 15:08 | ||
As you said, it's up to the REPR. | |||
On the rep poly, I need to think a little more there...or just implement it. :) | |||
(As in, actually make it work for real.) | 15:09 | ||
I'll try and do that in the not too distant future. | |||
15:10
packetknife joined
|
|||
sorear | jnthn: I could add a SAME_REPR_WHAT easily enough. Type object cloning concerns me more - it had never occurred to me that anyone might want to do that | 15:10 | |
sorear grumbles that the CLR *doesn't* give em any free bits to play with | 15:11 | ||
15:11
replore joined
|
|||
jnthn | I think I did it based on nullness of the attribute store or some such. | 15:12 | |
sorear | Yes, you talked about that in the blog. :) | ||
15:12
packetknife left
|
|||
jnthn | A null is a bit in a twisted sense. ;) | 15:12 | |
sorear | which is why I brought up my approach. | ||
jnthn | No, I meant in the CLR version I used that. :) | ||
sorear | Oh, right. | 15:13 | |
15:13
packetknife joined
|
|||
jnthn | I need to figger out how to do P6opaque well on the CLR at some point soon I guess... | 15:13 | |
sorear | niecza often has defined objects with a null attribute store for memory-saving reasons | ||
jnthn | What I did when prototyping was, well, sucky. | ||
15:13
_jaldhar left
|
|||
jnthn | sorear: BTW, iiuc you're doing a CPS transform in order to support gather/take? | 15:14 | |
Did you consider any other approaches? | 15:15 | ||
sorear | jnthn: stack reification, yes. CPS is a bit of an inexact term | ||
jnthn | "stack reification"? | ||
As in, allocate stack frames on the heap? | |||
sorear | Niecza's call stack is made out of System.Object subclasses, not CLR runtime magic | ||
and on the heap | |||
niecza uses the CLR-stack about as much as nom uses the C-stack - a runops-like function receives control constantly and passes it to many different functions | 15:16 | ||
moritz | so it's kinda of a small VM on top of mono? | 15:17 | |
s/VM/runloop/ | |||
sorear | the main other approach I considered was fibers, until someone in #mono politely informed me that they consumed 1MB of address space each on Windows, which would have limited me to ~2k concurrent gathers on Win32, which seemed unacceptably low | 15:18 | |
jnthn | sorear: I was also bothered and synchronization overhead there. | 15:19 | |
sorear | moritz: in some ways yes | ||
I also considered CLR-level threads for a few seconds, then laughed and moved on :) | |||
jnthn | s/and/about/ | ||
15:20
lateau_ left
|
|||
jnthn | A fiber is far less overhead than a thread but less doesn't mean "very little", from what I've read. | 15:20 | |
Also, I dunno how well they work out away from Windows. | |||
Windows does fibers at kernel level, iiuc. | |||
Gah, too many interesting things to work on ;) | 15:21 | ||
jnthn should call family and let them know he's still alive and stuff...bbiab :) | 15:22 | ||
15:28
_jaldhar joined
15:29
packetknife left
15:42
MayDaniel left
|
|||
dalek | ecza/serialize: 06a8815 | sorear++ | / (3 files): Add support for remaining types of lexicals in new model |
15:51 | |
15:51
shinobicl_ joined
16:04
birdwindupbird joined,
birdwindupbird left
16:05
shinobicl_ left,
jferrero joined
|
|||
dalek | ecza/serialize: 90803c5 | sorear++ | / (3 files): Add signatures to new model |
16:11 | |
16:20
tokuhir__ joined,
tokuhiro_ left
|
|||
diakopter | so ... much ... scrollback | 16:24 | |
benabik | diakopter: I rarely read the scrollback in #perl6… Just too much happening. :-/ | 16:26 | |
sorear | I used to. Now I just /lastlog sorear, /lastlog niecza, and call it done | 16:28 | |
jnthn tends do to it if there's ~12 hours missed | 16:31 | ||
But it's more "skim" than "read in full". :) | |||
TimToady still tries to read everything, eventually, though skim happens... | 16:35 | ||
16:35
thou joined
|
|||
jnthn | :) | 16:36 | |
jnthn has a nose for puns, OO stuff and multi-dispatch :) | |||
16:42
daniel-s left
16:44
Moukeddar joined
16:45
Moukeddar left
16:49
uasi left
16:51
ZapZ left
|
|||
cognominal | std: my %a; %a<a> :exists | 17:03 | |
p6eval | std bb4f150: OUTPUT«ok 00:01 120m» | ||
cognominal | std: my %a; say %a<a> :exists | ||
p6eval | std bb4f150: OUTPUT«ok 00:01 121m» | ||
diakopter | if only | 17:04 | |
17:05
MayDaniel joined
|
|||
sorear | diakopter: if only what? | 17:06 | |
diakopter | if only std could do 'say' | 17:08 | |
but, of course, I should point out to cognomial that niecza runs std | |||
moritz | whaz would it say? | ||
*what | |||
diakopter doesn't know | 17:09 | ||
sorear | I should get back on that project | ||
cognominal | I forgot that std does only parse | ||
diakopter | *cognominal | ||
sorear | niecza: my %a; say %a<a> :exists; # should be 'Bool::False' | ||
p6eval | niecza v9-32-g380d891: OUTPUT«Bool::False» | ||
17:10
DarthGandalf left
|
|||
cognominal | btw, how adverb like :exists works. Are they additional named parameters, to circumfix:<{ }> here? | 17:11 | |
17:11
envi left
|
|||
sorear | cognominal: yes | 17:11 | |
niecza: sub postcircumfix:<{ }>(|$args) { say $args.perl }; my %a; %a<a> :exists; | 17:12 | ||
p6eval | niecza v9-32-g380d891: OUTPUT«\({}.hash, "a", |{"exists" => Bool::True})» | ||
sorear | hmm, that output could be simplified a bit | ||
cognominal | so, they just are syntactic sugar. | 17:13 | |
sorear | yes. | ||
17:13
DarthGandalf joined
|
|||
sorear | niecza: my %a; say postcircumfix:<{ }>(%a, 'a', :exists) | 17:13 | |
p6eval | niecza v9-32-g380d891: OUTPUT«Bool::False» | ||
cognominal | does niecza run on Lion? | 17:14 | |
moritz | it runs on mono | ||
cognominal | I suppose I can install mono with macbrew | ||
sorear | istr someone saying that mono 2.8 doesn't run on Lion but 2.10 does | ||
17:17
thou left
|
|||
dalek | ast: b12d943 | jnthn++ | S03-smartmatch/any-hash-pair.t: Turn a todo into a skip. |
17:22 | |
jnthn | b: say (*.foo).WHAT | ||
p6eval | b 1b7dd1: OUTPUT«WhateverCode()» | ||
dalek | kudo/nom: c41a88b | jnthn++ | src/Perl6/Actions.pm: Fix up *.foo(...) becoming a closure that does the method call. |
||
sorear | b: say *(15).WHAT | 17:27 | |
p6eval | b 1b7dd1: OUTPUT«invoke() not implemented in class 'Whatever' in main program body at line 22:/tmp/8HcCsIbZfY» | ||
sorear | niecza: say *(15).WHAT | ||
p6eval | niecza v9-32-g380d891: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class Whatever at /tmp/QECu0C8oS2 line 1 (MAIN mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 206… | ||
sorear | huh. | ||
I thought I implemented that | |||
jnthn | What're you expecting it to do? | ||
moritz | I don't think so | ||
sorear | same as *.postcircumfix:<( )>(15) | 17:28 | |
jnthn | hm | ||
Guess it could be useful. | |||
moritz | right | 17:29 | |
dalek | kudo/nom: 15af90f | jnthn++ | src/Perl6/Actions.pm: Don't Whatever-curry macros like .WHAT. |
17:30 | |
jnthn | Guess we can get back some tests now :) | ||
moritz: Any idea where some *.foo tests are? Or can I leave that with you? :) | |||
moritz | jnthn: I'll run autounfudge | 17:31 | |
jnthn | OK, thanks | ||
moritz | S02-types/whatever.t has some | ||
jnthn | hmm, we don't run that one at all yet. | 17:32 | |
dalek | kudo/nom: 1c7dde0 | jnthn++ | NOMMAP.markdown: Remove a nommap entry. |
||
moritz | nom: say (*+1).WHAT | ||
p6eval | nom 029c30: OUTPUT«_block1014» | ||
moritz | should be WhateverCode | ||
jnthn | moritz: 15af90f | 17:33 | |
> say (*+1).WHAT | 17:34 | ||
WhateverCode() | |||
:) | |||
moritz | \o/ | ||
jnthn | It was currying the .WHAT. | ||
moritz still compiles that commit | |||
sorear | jnthn: about how many tests/files does nom run? | 17:35 | |
17:35
packetknife joined
|
|||
jnthn | sorear: In the run I just did, Files=460, Tests=14453 | 17:36 | |
Though that includes skips/todo's. | |||
moritz | about 500 skips, I'd guess | ||
jnthn | I *think* it does, anyway. | ||
moritz | yes, it does | ||
jnthn | OK, so 14,000ish. | ||
We should get another one or two thousand back once Pm lands regexy things. | |||
hmm, most of the punch list is regex related now. | 17:37 | ||
Well, much of. | |||
moritz | nom: sub infix:<quack>($a, $b) { say "$a, $b" }; 5 quack 5 | ||
p6eval | nom 029c30: OUTPUT«===SORRY!===Confused at line 1, near "5 quack 5"» | 17:38 | |
jnthn | That's one of the regex related things ;) | ||
moritz | I know :-) | ||
it's in whatever.t | |||
jnthn | ah | ||
guess we have to skip that bit. | |||
DateTime, Date is one nommap entry. Seems that's well on the way now that various blockers are cleared up. | 17:39 | ||
moritz | indeed | ||
jnthn | The parametric roles entry is just down to me having the patience to crank through a few more issues. | ||
None of them are especially hard/major. | |||
moritz | nom: my $code = *.uc eq 'FOO'; say $code(5) | 17:40 | |
p6eval | nom 029c30: OUTPUT«Method 'uc' not found for invocant of class 'Whatever' in <anon> at /tmp/LFLOZXfWOS:1 in <anon> at /tmp/LFLOZXfWOS:1» | ||
moritz | evalbot rebuild nom | ||
p6eval | OK (started asynchronously) | ||
moritz | locally that dies with | ||
Too many positional parameters passed; got 1 but expected 0 | |||
nom: my $c = (* + 1) * 2; say $c(5) | |||
p6eval | nom 029c30: OUTPUT«12» | 17:41 | |
moritz | so recursive currying works with ops, but not with *.method | ||
jnthn | hm, huh. :S | ||
jnthn looks | |||
moritz | roast++ | ||
17:42
MayDaniel left
|
|||
jnthn | > my $code = *.uc eq 'FOO'; say $code(5) | 17:43 | |
Bool::False | |||
> my $code = *.uc eq 'FOO'; say $code('foo') | |||
Bool::True | |||
Testing then will push | 17:44 | ||
sorear | *mumble* niecza isn't ahead of nom anymore :D | 17:46 | |
jnthn | moritz: As an Englishman, I have to say roast++ indeed ;) | ||
jnthn enjoyed his regular Sunday roast when he lived back in the UK :) | |||
moritz | nom: say 1 R- 5 | 17:47 | |
p6eval | nom 029c30: OUTPUT«4» | ||
moritz | nom: say (1 R- *).(5); | ||
p6eval | nom 029c30: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu, Mu %_) in method Numeric at src/gen/CORE.setting:560 in sub infix:<-> at src/gen/CORE.setting:1877 in <anon> at /tmp/VUyzBcFd_8:1 in <anon> at /tmp/VUyzBcFd_8:1»… | ||
jnthn | nom: say (1 R- *).WHAT | 17:48 | |
p6eval | nom 029c30: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu, Mu %_) in method Numeric at src/gen/CORE.setting:560 in sub infix:<-> at src/gen/CORE.setting:1877 in <anon> at /tmp/EwhmQpq2JJ:1 in <anon> at /tmp/EwhmQpq2JJ:1»… | ||
jnthn | ah | ||
17:48
thou joined
|
|||
dalek | kudo/nom: 165527d | jnthn++ | src/Perl6/Actions.pm: Make nested curryings of whatever-curried method calls work (moritz++ for reporting). |
17:50 | |
ast: f1a2a79 | moritz++ | S02-types/whatever.t: fudge whatever.t for rakudo |
17:51 | ||
moritz | b: * = 5; say 'alive' | ||
p6eval | b 1b7dd1: OUTPUT«alive» | ||
moritz | b: * = 5; say 'alive'; say * | ||
p6eval | b 1b7dd1: OUTPUT«aliveWhatever()<0x200d770>» | ||
moritz | nom: * = 5; say 'alive'; say * | 17:52 | |
p6eval | nom 029c30: OUTPUT«Cannot assign to a non-container in <anon> at /tmp/zT_Y1ps3SY:1 in <anon> at /tmp/zT_Y1ps3SY:1» | ||
jnthn | hm, well, it ain't a container :) | ||
moritz | that's for things like my ($first, *, $third) = $str.split('foo') | ||
jnthn wonders what the right way to make that one work is. | |||
moritz | special-casing = ? | 17:53 | |
17:53
packetknife left
|
|||
sorear | TomC++ # cute parrot-dev@ post | 17:53 | |
moritz | aye :-) | ||
jnthn | moritz: Well, more special cases on the assignment critical path are kinda annoying. | 17:54 | |
moritz | jnthn: well, that one kicks only in if the RHS is not a container | ||
jnthn | oh, I wonder if... | ||
sorear | moritz: lhs you mean? | ||
moritz | erm, yes | ||
sorry | |||
jnthn | moritz: oh, good point, it's a failover. | ||
OK, then ti's cheap enough. | |||
17:55
_jaldhar left
|
|||
dalek | ast: 5a430b3 | moritz++ | S02-types/whatever.t: rakudo unfudges for whatever.t |
18:02 | |
moritz | oh noez, the OOM killer eated my thunderbird! | 18:03 | |
nom: my @a = 1..4; say @a[1..*].join('|') | 18:04 | ||
p6eval | nom 1c7dde: OUTPUT«2|3|4» | ||
moritz | \o/ | 18:05 | |
moritz closes three long-ish standing tickets | 18:08 | ||
jnthn++ | 18:12 | ||
18:13
donri left
|
|||
dalek | ast: 47a4fa9 | moritz++ | S0 (2 files): more rakudo unfudges |
18:13 | |
18:14
SHODAN left
18:15
alester joined
|
|||
dalek | ecza/serialize: 788e3f1 | sorear++ | / (4 files): Changes required for finishlex/getsig/explain_mystery |
18:16 | |
18:19
masonkramer joined
18:26
kaare_ joined
|
|||
ingy | hi moritz | 18:30 | |
moritz | hi ingy | ||
ingy | wanna play with me? | 18:31 | |
18:31
donri joined
|
|||
ingy | actually, I was wondering if you'd review some stuff for me | 18:31 | |
alester | ping dukeleto | ||
moritz | ingy: depends on the stuff :-) | ||
alester | seen dukeleto? | ||
aloha | dukeleto was last seen in #perl6 18 hours 59 mins ago joining the channel. | ||
ingy | I've been polishing on the pegex all day | ||
moritz: github.com/ingydotnet/pegex-json-p...r/json.pgx | 18:32 | ||
moritz | I have to eat my supper first, but after that I'll be happy to review it | ||
alester | What is winxed? | 18:33 | |
github.com/petdance/ack/pull/177 | |||
Is it separate from nap? | 18:34 | ||
ingy | moritz: that's working now, with this receiver github.com/ingydotnet/pegex-json-p...ON/Data.pm | ||
moritz | -<pair>? ** /~<COMMA>~/ | ||
wouldn't that allow several commas in a row? | |||
18:34
miso2217 left
|
|||
ingy | moritz: that's [<pair> ** <COMMA>]? | 18:35 | |
benabik | alester: Winxed is a system-level language on Parrot. Something like C to PIR's assembler. | ||
ingy | ~ is short for <WS>* | 18:36 | |
effectively | |||
alester | benabik: extension would be what? | 18:38 | |
benabik | alester: File extension? Most people seem to use .winxed | ||
alester | maybe I'll hold off on winxed | ||
but add nqp | |||
if winxed isn't standardized yet | |||
Then again, the only people using nqp are, what, a dozen Perl 6 devs? | 18:39 | ||
benabik | NotFound's very good at balancing needed features vs. not. It's pretty stable. | ||
Only people using winxed are, what, a dozen parrot devs? ;-) | |||
alester | yeah, that' | 18:40 | |
I meant swinxed | |||
ingy | moritz: I had <pair> ** <comma> working | ||
moritz: and I went to do [ <pair> ** <comma> ]? | 18:41 | ||
benabik | winxed is rapidly becoming the main way to develop on Parrot. We used NQP-rx for quite a while, but winxed is closer to the "metal". If you want to work on P6 on Parrot, NQP is the way to go. Most new projects are using winxed. | ||
ingy | moritz: but noticed it compiled down to <pair>? ** <comma> internally | ||
moritz: so I thought, sure, why not? that's not so bad | 18:42 | ||
moritz: also <p>5 **<c> could mean list of 5 and <p> ** <c>? could mean trailing separator optional | 18:43 | ||
sorear | alester: I don't think winxed will ever be standardized, in the way C or Javascript is | 18:50 | |
alester: it's a small implementation-defined language like Lua | |||
benabik | sorear: Lua's not standardized? People should stop using it immediately. ;-) | 18:51 | |
sorear | benabik: non sequiter | ||
(today's random idea: add S33 with rules for amending the synopses and turn perl6/specs into a nomic.) | 18:52 | ||
benabik | sorear: I just want people to move to a language with an excellent specifications. Like Perl 6. | ||
;-) | |||
sorear | Lua fills Lua's niche far better than Perl 6 can hope to | 18:53 | |
19:00
wolfman2000 joined
19:03
thou left
19:07
miso2217 joined
|
|||
moritz | ingy: so why does <pair>? ** <comma> not allow multiple commas in a row? | 19:07 | |
perl6: say ',,' =~ /[<pair>?] ** \,/ | 19:08 | ||
p6eval | pugs: OUTPUT«***  Unexpected "/[<" There is no =~ operator in Perl 6 -- did you mean ~~ (match) or ~= (concat-assign)? at /tmp/asu0OFNHG9 line 1, column 13» | ||
..rakudo 165527: OUTPUT«===SORRY!===Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~ at line 1, near " /[<pair>?"» | |||
..niecza v9-32-g380d891: OUTPUT«===SORRY!===Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~ at /tmp/KcxzPpTlBI line 1:------> say ',,' =~⏏ /[<pair>?] ** \,/Parse failed» | |||
moritz | perl6: say ',,' ~~ /[<pair>?] ** \,/ | ||
p6eval | niecza v9-32-g380d891: OUTPUT«Unhandled exception: Unable to resolve method pair in class Cursor at /tmp/feW2pvouvu line 1 (MAIN C1_ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 1543 (CORE Regex.ACCEPTS @ 3)  at /tmp/feW2pvouvu line 1 (MAIN mainline @ 1)  at /home/p6ev… | ||
..rakudo 165527: OUTPUT«Method 'pair' not found for invocant of class 'Cursor' in regex <anon> at /tmp/4KxVL_YUTy:1 in method ACCEPTS at src/gen/CORE.setting:5919 in <anon> at /tmp/4KxVL_YUTy:1 in <anon> at /tmp/4KxVL_YUTy:1» | |||
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"*** '<HANDLE>' trapped b… | |||
moritz | perl6: say ',,' ~~ /[a?] ** \,/ | ||
p6eval | niecza v9-32-g380d891: OUTPUT«#<match from(0) to(2) text(,,) pos([].list) named({}.hash)>» | 19:09 | |
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"*** '<HANDLE>' trapped b… | |||
..rakudo 165527: OUTPUT«,,» | |||
moritz | ingy: matches in perl 6 | ||
ingy: I find compiling [a ** b]? to [a? ** b] highly dubious | |||
matches a zero times, then b, then a zero times, then b, then a zero times | 19:12 | ||
PerlJam | alester: just read the recent scrollback and you might want to mention to dukeleto that he can add his own types via the .ackrc file. | ||
19:15
gbacon joined
|
|||
alester | PerlJam: I think it's safe to assume that he knows that. | 19:19 | |
moritz adds .nqp to his ackrc | 19:20 | ||
19:22
alester left
|
|||
benabik | Hm. ackrc you say? That would be useful. | 19:25 | |
sorear | moritz: I've seen syntaxes like <term>? ** ',' in the wild | 19:28 | |
(specifically the Haskell' tuple sections proposal comes to mind) | |||
moritz | sorear: that might well be the case, but it's definitive wrong for matching JSON lists | 19:29 | |
(which doesn't allow multiple or trailing commas) | 19:30 | ||
ingy | hi moritz | ||
moritz waves again | |||
19:31
wolfman2000 left
|
|||
moritz | ingy: did you see my comments above? | 19:31 | |
ingy | yeah | ||
moritz | one more thing... where are all the character names defined? | ||
ingy | well <a> ** <b> matches a or aba etc | 19:32 | |
ones sec | |||
moritz | yes, and <a>? ** <b> matches a, b, abba, bb, bba, ... | ||
ingy | no | 19:33 | |
moritz | why not? | ||
<a>? matches '' | |||
<b> matches 'b' | |||
ingy | because it is a special case | ||
moritz | <a>? matches '' | ||
ah | |||
you failed to mention that, I think :-) | |||
ingy: wouldn't it make more sense to put the ? onto the operator then? | 19:34 | ||
<a> ?** <b> | |||
20:41 < ingy> moritz: and I went to do [ <pair> ** <comma> ]? | |||
ingy | moritz: I did think about that, yes | ||
moritz | 20:41 < ingy> moritz: but noticed it compiled down to <pair>? ** <comma> | ||
ingy | right | ||
moritz | that's just plain wrong | ||
... unless you already had the special case implemented at that point | 19:35 | ||
ingy | I did have a special case for ** yeah | ||
and it didn't allow and ?+* | |||
anyway | 19:36 | ||
it's all up for ideas | |||
which is why I came here | |||
one sec | |||
btw, github.com/ingydotnet/pegex-pm/blo...r/Atoms.pm is where those are currently | 19:37 | ||
moritz | ok, my idea is to write it as '<a> ?** <b>' rather than '<a>? ** <b>', because it's not the same as '[<a>?] ** <b>' | ||
ingy | yeah, makes sense | ||
I wanted ** to do ?** and ++ to do ** | 19:38 | ||
iykwim | |||
moritz | that's only nice if you never plan to do possessive quantifiers | ||
ingy | github.com/ingydotnet/pegex-json-p...n.pgx.json | 19:39 | |
look at the .sep under map | |||
moritz | one more thing, are you restricting the regexes to ASCII? | ||
ingy | no | ||
just the current atoms are defined that way, but they should not be so special | 19:40 | ||
moritz | ok | ||
ingy | they are just Pegex defined rules | ||
whatever I do though needs to support very many programming langs | 19:41 | ||
moritz | then you should think about (1) how to make Unicode properties available | ||
and (2) how get more concistent character names | |||
maybe allow <U+2024> or so | |||
ingy | I think you misunderstand | ||
I really just wanted names for punctuation chars | 19:42 | ||
but really anything between // is a plain old regex | |||
moritz | ok | ||
all in all I rather like the pegex syntax | 19:43 | ||
ingy | I'm not even sure how I feel about all the NAMEs, but I'm going with it for now | 19:44 | |
well it is heavily influenced by p6 :) | |||
moritz | I find some of the NAMES a bit weird | ||
ingy | github.com/ingydotnet/testml-pgx/b...testml.pgx | 19:45 | |
that is my most complex grammar | |||
moritz | they are a wild mixture of HTML entities names and other stuff :-) | ||
ingy | it defines TestML | ||
which many of the TestML and Pegex tests are written in | |||
moritz | ingy: how do error messages of parse errors look like? | 19:46 | |
ingy | pretty decent | 19:47 | |
I'll gist one | |||
github.com/ingydotnet/pegex-pm/blo...compiler.t | |||
that test has inline testml, fyi | |||
the test suite is amazingly fast | |||
which seems to mean that pegex is fast | 19:48 | ||
which is nice | |||
moritz: here is a simple Pegex CLI one liner | 19:53 | ||
gist.github.com/1225480 | |||
And I'll make a syntax error... | |||
gist.github.com/1225483 | 19:54 | ||
:) | |||
The grammar actually has that msg built in | 19:55 | ||
19:55
Moukeddar joined,
Moukeddar left
19:56
whiteknight joined
|
|||
moritz | nice | 19:56 | |
dalek | kudo/nom: e051c8f | jnthn++ | t/spectest.data: Run S02-types/whatever.t. |
||
ingy | moritz: gist.github.com/1225486 is more common | ||
moritz | that's... less awesome :-) | 19:57 | |
19:58
soh_cah_toa joined
19:59
im2ee left
|
|||
ingy | moritz: with debugging: gist.github.com/1225488 | 20:00 | |
I think I'll need to add commit syntax soon | 20:01 | ||
I'm pretty happy with the look of that JSON grammar | 20:02 | ||
I don't think I need to add in the magic WS matching like Regexp::Grammars now that I have ~ | 20:03 | ||
but I am less pleased with the code that receives the parse events and turns them into real data | |||
moritz | that always feels like boilerplate | 20:04 | |
20:04
localhost left
|
|||
ingy | this guy: github.com/ingydotnet/pegex-json-p...ON/Data.pm | 20:04 | |
could be just a bit simpler | |||
currently I ast /a(b)c(d)e/ matches as a hash {1=>'b', 2=>'d'} | 20:05 | ||
20:05
localhost joined
|
|||
ingy | but I should just ['b', 'd'] | 20:06 | |
and just 'b' for /a(b)cde/ | |||
if a regex has no captures I don't ast the match | 20:07 | ||
which is nice | |||
anyway I'll try <a> ?** <b> for now | 20:08 | ||
seems pretty good | |||
The json parser has one serious bug | 20:09 | ||
it barfs on 0, "" and false | |||
oops! | |||
very soon I'll have a Perl 6 Pegex grammar started | 20:10 | ||
for te C'Dent model at least | |||
20:11
zb left
|
|||
ingy | since the grammars are just data structures it makes runtime grammar mod pretty easy | 20:11 | |
20:11
zb joined
|
|||
Woodi | ingy: you plan to add plain C to C'Dent ? | 20:13 | |
moritz -> sleep | |||
Woodi | gn moritz | 20:14 | |
ingy | moritz: night but look at gist.github.com/1225503 | 20:16 | |
pegex compiling the pegex grammar and using it to parse the pegex grammar :) | |||
that's with no special receiver of course... | 20:17 | ||
receiving the parse with Pegex::Compiler::AST produces this: github.com/ingydotnet/pegex-pm/blo...r/Pegex.pm | 20:18 | ||
I made a special thing: > perl -Ilib -MPegex::JSON::Grammar=compile | 20:20 | ||
will compile that grammar and dump it into itself | |||
So pegex grammar classes are always precompiled | 20:21 | ||
Woodi: as a backend? C++ for certain | |||
also beend thinking about XS as a C'Dent backend | |||
so you could write p5 xs modules in p6 python or js | 20:22 | ||
:D | |||
some kind of C backend is a really big goal though | 20:23 | ||
because then you get people using C'Dent subsets of their language just to get fast compiled modules | |||
but then every other C'Dent backend language wins | 20:24 | ||
whether they intended that or not | |||
Woodi | just clonet C'Dent repo and C marked as output langueage | 20:25 | |
ingy | ? | 20:26 | |
Woodi | so, can C'Dent replace Perl[56], Python, Ruby, etc cpmpilers ? :) | ||
*compilers | |||
ingy | C'Dent is only for writing modules | 20:27 | |
and you have to use a the strict C'Dent langugae subset | |||
but the win is that your module works everywhere | |||
so I don't think it replaces anything | 20:28 | ||
Woodi | so i can get Python module and translate it to Perl6 ? | ||
ingy | correct | ||
Woodi | :) | ||
ingy | wait no | ||
you can write a Foo.cd.py module and compile to .pm6 or .go or whatever | 20:29 | ||
you can't compile any .py | |||
Woodi | it's translate for me... | ||
ingy | and currently you can't do anything more than a module that prints hello world | 20:30 | |
:) | |||
but that's just a matter of programming | |||
Woodi | damn :) | 20:31 | |
ingy | Pegex is now almost complete enough to start implementing C'Dent in | ||
the idea is to get C'Dent on Pegex this week | |||
then start adding features to C'Dent | |||
Woodi | i need any working db driver in Perl6, and was hoping :) | 20:32 | |
20:32
pmurias joined
|
|||
ingy | I want to start writing CPAN p5 modules in C'Dent soon | 20:32 | |
acutally | 20:33 | ||
Woodi | p6 is in bigger need for modules... | ||
ingy | a huge success would be to implement all of Pegex in C'Dent | ||
Woodi | can PEG parse Perl ? :) | 20:34 | |
ingy | it can Parse C'Dent Perl :) | ||
.cd.pm | |||
Woodi | k, understud | ||
ingy | Woodi: any module I write for CPAN in C'Dent automatically works in P6 :) | 20:35 | |
so (for CPAN) is a bit misleading | |||
actually I have no grammar yet for .cd.pm | 20:36 | ||
20:36
_jaldhar joined
|
|||
ingy | only for .cd.pm6 | 20:36 | |
but theoretically in can parse cdp5 | |||
anyway, back to the trenches... | |||
Woodi | so no translation from p[56] to C'Dent, back and forth ? someone need to writr in plain C'Dent and then compile to Perl, Python and rest ? | 20:37 | |
gl ingy | |||
ingy | there is no plain c'dent. there is .cd.pm6 .cd.py and .cd.js parsers | 20:43 | |
and .cd.yaml too :) | |||
but who wants to write an ast by hand? | |||
.cd.yaml is great for testing though | 20:44 | ||
pmurias | ingy: if c'dent is supposed to be the lowest common denominator of dynamic languages won't writing in it be annoying? | ||
ingy | pmurias: I hope not | 20:45 | |
if you've ported a lot of your own code | |||
you start using idions that translate | 20:46 | ||
c'dent is pretty much automated porting | |||
20:46
kaare_ left
|
|||
ingy | c'dent is defined at the ast level | 20:46 | |
20:46
vlixes joined
|
|||
ingy | so anything that can compile into a given ast is ok | 20:47 | |
20:47
dorlamm joined
|
|||
ingy | so we could add a lot of tmtowtdi to the .cd.pm[56] langs | 20:47 | |
I mean, just because I can't use hyperoperators in .cd.pm6 is not annoying to me | 20:48 | ||
if I planned to port it 10 times in the first place | 20:49 | ||
it would be really dumb to use things that wouldn't work elsewhere | |||
pmurias | beating manual porting shouldn't be hard | ||
ingy just pulled hyperoperators out of his butt | 20:50 | ||
that is a p6 thing, yeah? :) | |||
pmurias doesn't see a reason why .cd.pm6 shouldn't support them ;) | |||
Woodi | so you need cd.nqp and perl6 compiler generating nqp code :) | ||
pmurias | ingy: yes | ||
ingy | actually I think dukeleto and me made .cd.pir | 20:51 | |
as an input lang! | |||
Woodi | right, pir. | ||
ingy | we definitely add .pir to backends | ||
and .nqp too | 20:52 | ||
pmurias | ingy: do a lot of people actually port their code to multiple languages? | ||
ingy | sadly I don't think so. I'm trying to change that | ||
that's what acmeism is all about | 20:53 | ||
with pegex we can start a p6 implementation in any lang!! | 20:54 | ||
pmurias | no | ||
well you can start one | 20:55 | ||
ingy | pegex is really about sharing some of the p6 goodness with everyone | ||
pmurias | but you won't be able to fullfil the spec with a grammar that is not in perl6 | ||
ingy | I really ♥d p6 regexes | ||
pmurias: sure but hey | |||
I think when rakudo adds a pcre extension I'll be able to convert a lot of p6 grammars to pegex and get 1000 times speed boost | 20:56 | ||
20:58
pernatiy left
|
|||
ingy | pegex is just an approximation or p6regexes, but it's all done in very simple and extendable classes | 20:58 | |
tadzik | Woodi: re Perl 6 and modules, me silent dream is to bring blizkost back to life make it run more stuff than it used to | ||
ingy | hi tadzik | 20:59 | |
pmurias | ingy: and one other possible problem i see with c'dent is that the apis will be unpythonic/unperlish/unrubish | ||
ingy | pmurias: c'dent is not for writing code, it's for writing modules :) | ||
but I don't think that's true anyway | 21:00 | ||
I've done a ton of porting | |||
and everything generally matches up line for line | |||
once you define your idiom set | |||
21:01
MayDaniel joined
|
|||
tadzik | hi ingy | 21:01 | |
pmurias | ingy: so you end up having the same api for your modules in all the languages you port it to? | 21:02 | |
ingy | oh I see what you mean | 21:05 | |
sorry it's late | |||
Woodi | tadzik: what was a stopper on blizkost ? | ||
21:05
gbacon left
|
|||
tadzik | Woodi: manpower I suppose | 21:05 | |
ingy | pmurias: yeah sure | 21:06 | |
Woodi | tuits-- | ||
ingy | I mean it's targeted at OO langs only | ||
the cool thing is that if you generate C then when you swig or XS it back you get the exact same api | 21:09 | ||
21:12
MayDaniel left
|
|||
ingy | tadzik: what is blizkost? | 21:12 | |
tadzik | ingy: Parrot - Perl 5 bridge | ||
so you can use CGI:from<perl5> and it works in Perl 6 | 21:13 | ||
ingy | is there current effort to implement p6 in p5? | ||
diakopter | no | 21:14 | |
ingy | pugs had a p5 runtime, yes? | ||
soh_cah_toa | that's an interesting idea... | ||
ingy | audreyt once showed me that you can build a vm for function programming on top of any lang that supports closures :) | 21:15 | |
21:15
dukeleto left
|
|||
plobsing | parrot's m0 has a perl5 backend. so rakudo might conceivably runnable on p5 at some point | 21:16 | |
21:16
dukeleto joined
|
|||
ingy | that was here answer to me when I asked if Bash could possibly be a backend for C'Dent | 21:16 | |
*her | |||
plobsing | bash has closures? | ||
ingy | nope | 21:17 | |
:) | |||
soh_cah_toa | plobsing: i think the current m0 backend is just a prototype and the final implementation won't be p5 but c | ||
ingy | it doesn't even have functions that return things | ||
plobsing | soh_cah_toa: there are at least some people that want multiple backends | ||
ingy | still it was a great answer | 21:18 | |
soh_cah_toa | i don't really see any advantages to multiple m0 backends but i'm not gonna digress the conversation and debate it here ;) | 21:19 | |
ingy | what is m0? | 21:20 | |
soh_cah_toa | ingy: a rework of parrot's internal vm components | ||
plobsing | ingy: maybe I've missed something. how does the fact that you can't use one implementation strategy bar the existence of any simple (not too turing tarpit) implementation? | ||
ingy | plobsing: it doesn't | 21:21 | |
plobsing | so how does the answer given have anything to do with the question asked? | ||
ingy | well audreyt didn't know if bash had closures | 21:22 | |
plobsing | ah | ||
ingy | it was a great answer with a disappointing ending | 21:23 | |
I like hacking in bash sometimes. it's amazing how far you can swim in that turing tarpit | |||
plobsing | wait, doesn't creating a new process close-over the environment? couldn't subshells then be treated as closures? | 21:28 | |
ingy | I leave this as an exercise for the reader :] | 21:30 | |
Woodi | or use `cat somefile` :) | ||
ingy | how does one get a callable reference to a subshell? | 21:31 | |
plobsing will now be unable to think about anything else this afternoon. thanks a lot ingy. | |||
ingy is one of the readers | |||
plobsing | igny: the PID is the reference. call is done via stdin/stdout (it is a pipe-mill). you can fetch those from /proc/ if necessary. | 21:33 | |
ingy | plobsing: do you need a thesis topic? | 21:35 | |
plobsing | what institution would take such a proposal? besides an asylum? | 21:38 | |
21:46
dorlamm left
|
|||
plobsing | it does seem like an interesting (and challenging topic). I might try to implement a scheme that way sometime. | 21:46 | |
21:57
wallberg left,
wolfman2000 joined
22:02
wolfman2_ joined
22:03
wolfman2_ left
|
|||
ingy | plobsing: nice :) | 22:03 | |
let me know what comes of it if you do. | |||
22:05
wolfman2000 left
22:17
tokuhiro_ joined
22:20
tokuhir__ left
|
|||
sorear | good * #perl6 | 22:22 | |
22:26
Trashlord left
|
|||
dalek | ecza/serialize: fb5e02c | sorear++ | / (7 files): Compiler-side modifications to attach code to subs and run units |
22:41 | |
ingy | I am finding the ** syntax less and less usefu :( | 22:46 | |
useful | |||
it seems I never want just a ** b | 22:47 | ||
I want [a ** b]? or a [ b a ]+ | 22:48 | ||
soh_cah_toa | ingy: you're saying the ** quantifier doesn't work inside non-capturing groups? | 22:50 | |
ingy | no | 22:52 | |
I'm saying that matching one or more a's separated by b's is not useful to me yet | 22:53 | ||
I seem to want 0 or more or 2 or more | |||
so the special ** syntax for one or more feels yagni at the moment | 22:54 | ||
I'm sure ** is more generalized in p6 than what I am using it for | |||
but i feel like I wasted my time implementing it in pegex | 22:55 | ||
soh_cah_toa | ah, ok | 22:56 | |
ingy | then again, a [ b a ]* has a subtle difference than a ** b | ||
in that I had to return the result of the first as [a,[a,a,...]] | 22:57 | ||
but with ** I can return [a,a,a,...] | |||
which is much cleaner | |||
sigh. I'll pester moritz tomorrow | 22:59 | ||
soh_cah_toa | :) | ||
plobsing | ingy: does pegex have semantic expressions, or does it always return the tree of matched terminals? | 23:04 | |
23:07
[particle]1 joined,
vlixes left
|
|||
sorear | plobsing: iirc, pegex uses an actions-like mechanism to make pegex files more language-independant | 23:08 | |
plobsing: it's a little more powerful than p6 actions because it can trigger not just on rule successful exit but also on rule start and rule failure | 23:09 | ||
23:09
[particle] left
|
|||
plobsing | sorear: cool! can the actions rewrite the tree being returned? | 23:11 | |
sorear | plobsing: unknown | 23:13 | |
plobsing | I ask, because the [a, [a, [...]]] problem could easily be solved by rewritting the tree as we bubble up | 23:14 | |
my experience with pegs is from ometa, where listOf is easy for users to implement (but is common enough that it became a builtin). | 23:17 | ||
sorear | does ohmeta use combinatorial pegs like parsec? | 23:19 | |
plobsing | sort of. parameterized rule calls are implemented by creating a new stream with the arguments at the head and the current stream as a shared tail. | 23:21 | |
23:21
egillth left
|
|||
plobsing | it is a rather simple argument-passing mechanism, but it lets you do cool things like pattern-match on your arguments the same way you pattern-match on the input | 23:22 | |
(also, most implementations, including the original, are called OMeta) | |||
only mine is ohm | |||
23:23
whiteknight left
23:24
whiteknight joined
23:25
dukeleto left
23:26
dukeleto joined,
dukeleto left
|
|||
sorear | plobsing: wait, wait, I think I confused myself. I thought ometa was the previous name of winxed? | 23:26 | |
23:26
dukeleto joined,
dukeleto left
23:27
dukeleto joined,
dukeleto left
|
|||
plobsing | no. ometa is a peg system written by alessandro warth, originally in smalltalk, but then also in javascript | 23:27 | |
it has since been ported to several languages, winxed included | 23:28 | ||
23:28
dukeleto joined
23:32
dukeleto left,
Exodist joined
23:33
dukeleto joined
23:44
molaf left
23:46
pmurias left
23:49
Trashlord joined
23:51
Trashlord left
23:56
molaf joined
23:57
LoRe_ joined
|