»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by moritz on 3 May 2013. |
|||
labster | ah, okay, I see how rel2abs would infinite loop on Windows. | 00:05 | |
it gets $*CWD as a parameter, which is something like "C:\foo", which looks non-absolute from a unix point of view, so it recurses trying to make $*CWD begin with a slash. | 00:08 | ||
I wonder if I should just disallow calling of no-argument .relative and .absolute unless you're on the appropriate system. | 00:10 | ||
oh well, in the meantime... | 00:20 | ||
dalek | ast: 499c45f | (Brent Laabs)++ | S32-io/io-path-win.t: fudge IO::Path.absolute due to infinite recursion on Win32 |
00:25 | |
00:49
Targen joined
|
|||
TimToady | pmichaud: on Pm-24, how could you ever tell the difference? an inner : is moot if the outer *: cannot backtrack into it, seems to me | 00:51 | |
00:51
snearch left
00:53
kurahaupo left,
kcwu left
00:59
anuby joined
01:00
woosley joined
01:01
kurahaupo joined
|
|||
labster | r: sub not-foo { "2" }; say not-foo(); | 01:08 | |
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Undeclared routine: foo used at line 1» | 01:09 | |
timotimo | er, shouldn't longest token matching catch that? | ||
TimToady | n: sub not-foo { "2" }; say not-foo(); | 01:10 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«2» | ||
TimToady | so it would seem | ||
01:21
FROGGS_ joined
01:35
arlinius joined
01:38
japhb_ left
01:42
adu joined
|
|||
adu | someone in this chatroom made an HTML template, and I'm trying to find it | 01:43 | |
it was an HTML template with, like, a bunch of donate buttons, like paypal, bitcoin, ... | 01:45 | ||
I can't remember the name, but it's something like "free-your-web-site" | |||
who was it? | |||
diakopter | is there a shorthand to ask try() to catch/return if something is thrown? | 01:47 | |
(catch/return that exception, I mean) | |||
I mean, I suppose a macro could do it. | 01:48 | ||
flussence | diakopter: not sure, but «try foo() orelse bar($!)» might work | ||
01:48
cooper_ joined
|
|||
diakopter | r: (my $a= try die 44) orelse say $a | 01:50 | |
camelia | rakudo 9ed5c5: OUTPUT«Nil» | ||
diakopter | r: (my $a= try 44) orelse say $a | ||
camelia | rakudo 9ed5c5: ( no output ) | ||
diakopter | r: (my $a= try 44) orelse say $a; say "'$a'" | ||
camelia | rakudo 9ed5c5: OUTPUT«'44'» | ||
flussence | r: (my $a = try die 'foo') orelse say $! | 01:55 | |
camelia | rakudo 9ed5c5: OUTPUT«foo in block at /tmp/KMPzlzpNV8:1» | ||
flussence | r: (my $a = try die 'foo') orelse say "'$!'" | 01:56 | |
camelia | rakudo 9ed5c5: OUTPUT«'foo'» | ||
02:00
lustlife joined
02:09
arlinius left
02:10
xorp joined
02:12
xorp left
02:16
kurahaupo left
02:34
adu left
02:45
adu joined
03:06
daniel-s_ joined
03:11
xinming joined
03:17
kurahaupo joined
|
|||
dalek | ast: 1b67b86 | coke++ | S32-str/capitalize.t: rakudo fudge |
03:35 | |
03:36
crab2313 joined
03:42
adu left
03:43
adu joined
03:44
preflex_ joined
03:45
preflex_ is now known as preflex
03:49
crab2313 left
|
|||
labster | r: sub so-say { "we all" }; print so-say; | 04:13 | |
camelia | rakudo 9ed5c5: OUTPUT«True» | ||
labster combines bugs for fun. | |||
TimToady | not-so-funny :) | 04:23 | |
04:25
Psyche^ joined
|
|||
adu | hi all | 04:26 | |
TimToady: so are you really the grand designer? | 04:27 | ||
labster: is that a reference to battlestar? | |||
labster: BTW, I'm a huge battlestar fan | 04:28 | ||
I'm convinced that Starbuck is an Angel | 04:29 | ||
04:29
Psyche^ is now known as Patterner
|
|||
labster | Well, it definitely has to do with prefix:<not> and prefix:<so>. | 04:30 | |
rn: sub funny { ":)" }; sub not-so-funny { ">:O"}; say funny() and not-so-funny; | 04:31 | ||
camelia | rakudo 9ed5c5: OUTPUT«:)Cannot convert string to number: radix (in decimal) expected after ':' in ':⏏)' (indicated by ⏏) in method Numeric at src/gen/CORE.setting:10020 in sub prefix:<-> at src/gen/CORE.setting:2818 in sub prefix:<-> at src/gen/CORE.setting:2817 in sub prefix:<… | ||
..niecza v24-40-g31f36d2: OUTPUT«:)» | |||
labster | not even sure what happened there ^ | ||
adu: yes, it's a battlestar reference. Perl poetry has gotten even easier. | 04:32 | ||
adu <3 labster | |||
labster | what kind of Angel do you mean? The kind with wings, or the really strange ones in Neon Genesis Evangelion? | 04:33 | |
04:33
skids left
|
|||
adu | labster: there are 4 Angels in battlestar, Baltar's head Six, Six's head Baltar, Baltar's head Baltar, and Kara Trace after she dies and is resurrected | 04:34 | |
diakopter | r: sub so'so-so'-so { "we all" }; print so'so-so' -1 | ||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Missing blockat /tmp/QCLO_Rtx1p:1------> sub so'so-so⏏'-so { "we all" }; print so'so-so' -1 expecting any of: statement list prefix or term prefix or meta-prefix new name to be … | ||
labster | or just the attractive woman type of angel. if it's that kind, I definitely agree. | ||
diakopter | argh. | ||
sorear | adu: TimToady is actually Mr.Wall; the proper title in cases like this is generally "Senior Cat Herder" | 04:35 | |
adu | sorear: lolol | ||
diakopter knows why to laugh too, even though I haven't seen BG | 04:36 | ||
labster | rn: sub so-what { say "nyan" }; so-what; | ||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/VgyjRtkueq:1------> sub so-what { say "nyan" ⏏}; so-what; expecting any of: postfix infix stopper infix or meta-infix statement end statement … | ||
..niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Confused at /tmp/fP698c8Uj2 line 1:------> sub so-what { say "nyan" ⏏}; so-what;Parse failed» | |||
sorear | diakopter: that's a BG reference? I did not know | ||
adu | sorear: also, the force that makes the final five listen to music could be considered a type of Angel | ||
er i Mean labster | 04:37 | ||
diakopter | sorear: er, oops I misread... seems not; ergh. | ||
labster | geez, I really need to watch the last couple of seasons of BSG. I missed a few episodes, subsequently got lost, and decided to watch it later on netflix -- and haven't done it yet. | 04:38 | |
adu | labster: it makes soooo much more sense if you agree with me | ||
labster: there are 3 types of people in battlestar: Humans, Cylons, and Angels, ….. just keep that in mind | 04:40 | ||
bonsaikitten | and just remember, jesus saves | 04:41 | |
labster | and takes half damage | ||
adu | bonsaikitten: whom? | ||
bonsaikitten | I found that rather annoying, random religion stapled on to the end because ... err ... yeah | ||
adu | bonsaikitten: that was not a complete sentance | 04:42 | |
labster | adu: parse error? | ||
bonsaikitten | adu: that's about as far as I understood the reasoning for the big Allah Akhbaah at the end | ||
adu | bonsaikitten: please complete your sentance so I can refute it | ||
bonsaikitten | adu: that would imply that I have the mental flexibility to "understand" how turning SciFi into religious propaganda makes sense | 04:43 | |
adu | bonsaikitten: battlestar isn't religious propaganda, it's a story about a bunch of people fighting robots | 04:44 | |
labster | BSG the original started out waist-deep in Mormon theology. I'm not getting the surprise here. | ||
bonsaikitten | adu: until in (iirc) season 5 it turns into a christian story of redemption for no apparent raisin | 04:45 | |
diakopter | r: .++ | ||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Method 'unshift' not found for invocant of class 'NQPMu'» | ||
bonsaikitten | labster: if it starts out like that it's fine | ||
adu | labster: also, the original started out with Baltar wanting to kill all Humans | ||
labster: and ended with Baltar begging the Cylons to spare his life, … what a pitiful Human | 04:46 | ||
bonsaikitten: season 5 did have a particular focus on Baltar, and Baltar was the only side-story with cristian undertones, aside from that most of it was Machine brutality | 04:48 | ||
bonsaikitten | adu: I guess I interpret things mildly different from you | 04:49 | |
adu | bonsaikitten: have you ever heard of thestone.com? | 04:50 | |
bonsaikitten | adu: about 12 seconds ago ;) | ||
labster submits rakudobug | |||
adu | bonsaikitten: the community charged with maintaining that website can be found at www.scarecrowsfield.com/, but that's besite the point | 04:51 | |
bonsaikitten: it was an incredibly inspiring collection of visual puzzles | |||
thestone.com made you think about what it means to be first, what it means to be important, what it means to be history | 04:52 | ||
it was an incredibly religious experience, and yet it was pure logic | 04:53 | ||
it made you question the line between religion and reason | 04:54 | ||
bonsaikitten | what a strangely hostile website | ||
adu: religion is the absence of reason | 04:55 | ||
adu | bonsaikitten: I guess I interpret things mildly different from you | ||
bonsaikitten | faith demands no proof. proofs demand no faith | ||
TimToady | that is a religious statement :) | ||
labster | r: my $faith is Cool; $faith.bless(*) | 04:56 | |
camelia | rakudo 9ed5c5: ( no output ) | ||
labster | no output from camelia -- she's more into Zen. | 04:57 | |
diakopter | her cocoon also freezes time | ||
adu | labster: lolol | 04:58 | |
TimToady | frantic progress on the inside, lack of external signs on the outside, seems fitting :) | ||
bonsaikitten | adu: possibly we use the word "religious" with different meanings | 04:59 | |
adu | bonsaikitten: from meriam-webster: "scrupulously and conscientiously faithful", that's my definition | 05:01 | |
bonsaikitten: but in order to solve thestone.com, you had to be faithful that you would be rewarded for your efforts in solveing the puzzles | 05:02 | ||
because the only reward you ever got, was the answer | 05:03 | ||
and an HTML page that said "Yes, the answer is ..." | 05:04 | ||
sorear | adu: getting DNS errors | 05:08 | |
adu | sorear: from www.scarecrowsfield.com/? | 05:09 | |
sorear | no, isup.me/thestone.com | ||
adu | thestone.com shut down about 14 years ago | ||
as I said, www.scarecrowsfield.com/ maintains the legacy of thestone.com as what they call "The Stone Monument" | 05:10 | ||
sorear: sorry about the confusion | 05:11 | ||
apparently there was no money in inspiring people | 05:12 | ||
sorear | stupid registration forms | 05:13 | |
adu | sorear: it's worth it :D | ||
sorear: I should be more specific "The Stone Monument" / "The Immediate" | 05:14 | ||
sorear | and some jerk deleted the "bugmenot" account | 05:15 | |
adu | sorear: it should be free | ||
moritz | \o | 05:16 | |
adu | o/ | ||
sorear: yes, I just made an account for free | 05:18 | ||
05:19
dmol joined
|
|||
sorear | is there any legitimate reason for the site to require registration? | 05:20 | |
05:23
fgomez left
|
|||
adu | sorear: dependency resolution, the later puzzles require that you've solved the earlier puzzles | 05:23 | |
05:55
adu left
05:56
frdmn joined
|
|||
dalek | ar: 7bfa75a | (Gabor Szabo)++ | .gitignore: ignore *.swp files |
06:02 | |
06:06
clkao joined
06:22
dickinsm joined
06:33
dmol left
06:34
kaleem joined
06:36
FROGGS_ left
06:44
dickinsm left
06:45
daxim left
06:46
xinming left
06:49
xinming joined
06:51
domidumont joined
06:52
FROGGS_ joined
06:53
FROGGS_ is now known as FROGGS
07:03
domidumont left
07:04
domidumont joined
07:19
dickinsm joined
07:21
kivutar joined
07:25
dickinsm left
07:27
arlinius joined
|
|||
lizmat | labster: the so-foo/not-foo is more endemic: | 07:35 | |
rn: sub s-foo { "2" }; say s-foo() | |||
camelia | niecza v24-40-g31f36d2: OUTPUT«2» | ||
..rakudo 9ed5c5: OUTPUT«===SORRY!===Unrecognized regex metacharacter ) (must be quoted to match literally)at /tmp/DcI9kTMvXd:1------> sub s-foo { "2" }; say s-foo(⏏)Regex not terminatedat /tmp/DcI9kTMvXd:1------> sub s-foo { "2" }; say s-foo… | |||
lizmat | rn: sub m-foo { "2" }; say m-foo() | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«2» | ||
..rakudo 9ed5c5: OUTPUT«===SORRY!===Unrecognized regex metacharacter ) (must be quoted to match literally)at /tmp/sOpOL5i4FG:1------> sub m-foo { "2" }; say m-foo(⏏)Regex not terminatedat /tmp/sOpOL5i4FG:1------> sub m-foo { "2" }; say m-foo… | |||
labster | I guess it is. | 07:37 | |
rn: my \s = 3; say s.perl; | 07:38 | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Regex missing terminator (or semicolon must be quoted?) at /tmp/Dbyk3jXPmk line 1 (EOF):------> my \s = 3; say s.perl;⏏<EOL>Parse failed» | ||
..rakudo 9ed5c5: OUTPUT«===SORRY!===Unrecognized regex metacharacter ; (must be quoted to match literally)at /tmp/fCH_zj2z8h:1------> my \s = 3; say s.perl⏏;Couldn't find terminator $stopat /tmp/fCH_zj2z8h:1------> my \s = 3; say s.perl;[33… | |||
lizmat | that last one already has a bug report, FROGGS has told me | ||
07:39
rindolf joined
|
|||
labster | r: sub rx-for-loneliness { "the love doctor"}; say rx-for-loneliness; | 07:42 | |
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/ZWwR3Nnm2Y:1------> liness { "the love doctor"}; say rx-for-⏏loneliness; expecting any of: postfix infix stopper infix or meta-infix statement end … | ||
07:43
kivutar left
|
|||
labster | sub rx-for { "the love doctor"; }; say rx-for; | 07:43 | |
r: sub rx-for { "the love doctor"; }; say rx-for; | 07:44 | ||
camelia | rakudo 9ed5c5: OUTPUT«␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀[␀␀␀0␀␀␀m␀␀␀S␀␀␀O␀␀␀R␀␀␀R␀␀␀Y␀␀␀!␀␀␀␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀[␀␀␀0␀␀␀m␀␀␀␀␀␀U␀␀␀n␀␀␀r␀␀␀e␀␀␀c␀␀␀o␀␀␀g␀␀␀n␀␀␀i␀␀␀zxE2 | ||
labster | oh wow | ||
moritz | and on the terminal you wouldn't even notice it | 07:53 | |
because most terminals don't print the 0-bytes | |||
it's related to UTF-32 leaking out through error messages | |||
lizmat | strange, I only get "Regex not terminated" | 07:54 | |
r: sub rx-for { "the love doctor"; }; say rx-for | 07:55 | ||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Regex not terminatedat /tmp/VWk5A_NKwG:1------> x-for { "the love doctor"; }; say rx-for⏏<EOL> expecting any of: argument list prefix or term prefix or meta-prefix infix stopper… | ||
lizmat | the ; makes a difference | ||
FROGGS | -.- | ||
07:55
census joined
|
|||
FROGGS | morning fellows in misery | 07:56 | |
lizmat | morning FROGGS! | ||
FROGGS | O/ | ||
tadzik | hey hey | ||
FROGGS | ola | ||
labster: btw, I was sure the already is a report for so-foo/not-foo, but I can't find it | 07:57 | ||
diakopter | FROGGS: misery? I do feel miserly.. | ||
r: say so not Cool, max | 07:58 | ||
camelia | rakudo 9ed5c5: OUTPUT«True-Inf» | ||
labster | FROGGS: you're probably right. The channel was just being so silly then that I felt like being productive. | 07:59 | |
diakopter | moi? | ||
labster | not you diakopter. | 08:00 | |
FROGGS | diakopter: btw, that output of ./smoke is a bit, well, nonverbose... do you managed to capture that TAPs yet? | ||
diakopter | :D | ||
tadzik | I guess feather.perl6.nl/~sergot/modules/mo...rness.html has to be fineshed by someone [tm] | 08:01 | |
I may find some tuits for it this week | |||
I have a version of Panda somewhere that uses it instead of running prove | 08:02 | ||
last time I checked, it always said "all tests pass" ;) | |||
08:03
kresike joined
|
|||
kresike | hello all you happy perl6 people | 08:03 | |
diakopter | FROGGS: wait what? | ||
I don't smoke | |||
or ./smoke | 08:04 | ||
FROGGS | hmmm, that it is a braino on my side | ||
tadzik | I think colomon++ was interested in smoking | ||
diakopter | VMware Workstation unrecoverable error: (vmx) | 08:06 | |
NOT_IMPLEMENTED d:/build/ob/bora-1031769/bora/lib/aioManagers/aioWin32Completion.c:3173 | |||
oops, ww | |||
[that error is new to me... :S ] | 08:07 | ||
FROGGS | ahh, my fault | ||
sorry diakopter | |||
08:13
fhelmberger joined
|
|||
FROGGS | tadzik++ | 08:14 | |
tadzik: feel free to give me tasks for that | |||
tadzik | FROGGS: well, I suppose I should read up on P5's TAP::Harness and its definition of Success | 08:19 | |
FROGGS | true | ||
(and then write todo-list :o) | |||
tadzik | :) yep | 08:20 | |
FROGGS | or better: make issues | ||
lizmat | rn: | ||
rn: my %a= Set.new( (a => 2) ); say %a | |||
camelia | niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Unmatched key in Hash.LISTSTORE at /tmp/yTYO0kb6Vn line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4313 (module-CORE @ 583)  at /home/p6eval/niec… | ||
..rakudo 9ed5c5: OUTPUT«Odd number of elements found where hash expected in method STORE at src/gen/CORE.setting:6889 in block at /tmp/X2DeQn_GNk:1» | |||
tadzik | FROGGS: I think there's a panda branch running p6prove | ||
or if there isn't, it's a one-line change anyway | |||
lizmat | I don't understand this error | ||
tadzik | it'd be nice to know on what modules p6prove is wrong when determining test result | ||
lizmat | looking at src/core/Set.pm | ||
tadzik | then I can track down individual things | ||
lizmat | line 20: when Pair { %e{.key} = True; } | 08:21 | |
am I missing something here ? | |||
tadzik | I'm afraid I brought Set to Rakudo :) | ||
FROGGS | tadzik: k, will try that today | ||
tadzik | FROGGS++ | 08:22 | |
my %a= Set.new( Pair.new(:key(a), :value(2) ); say %a | |||
r: my %a= Set.new( Pair.new(:key(a), :value(2) ); say %a | |||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Unable to parse expression in argument list; couldn't find final ')'at /tmp/UJxTFP5RPw:1------> w( Pair.new(:key(a), :value(2) ); say %a⏏<EOL> expecting any of: postfix» | ||
tadzik | ooh | ||
r: my $a= Set.new( (a => 2) ); say %a | |||
camelia | rakudo 9ed5c5: OUTPUT«===SORRY!===Variable '%a' is not declared. Did you mean '$a'?at /tmp/ntWwi4puYY:1------> my $a= Set.new( (a => 2) ); say %a⏏<EOL> expecting any of: postfix» | ||
tadzik | r: my $a= Set.new( (a => 2) ); say $a.perl #grrrrr | 08:23 | |
camelia | rakudo 9ed5c5: OUTPUT«set("a")» | ||
tadzik | lizmat: there you are | ||
if you assign one value to %a, being Set or not, you get a key with no value | |||
lizmat | *sigh* | ||
tadzik | r: my %a = 5 | ||
camelia | rakudo 9ed5c5: OUTPUT«Odd number of elements found where hash expected in method STORE at src/gen/CORE.setting:6889 in block at /tmp/i7qzEX2O8X:1» | ||
lizmat | that makes utter sense.... | ||
lizmat is going to do some fitness to clear the mind | |||
08:23
donaldh joined
08:26
kivutar joined
08:30
rhr_ left
|
|||
mathw | morning | 08:31 | |
08:31
rhr joined
|
|||
tadzik | hello mathw | 08:31 | |
mathw | hi tadzik | 08:32 | |
how's it going? | |||
tadzik | pretty good. Busy times | 08:33 | |
but I finally got my t430 last week \o/ | |||
hoelzro | tadzik: thinkpad? | 08:34 | |
tadzik | yep | ||
my old one is on the well-deserved retirement | |||
hoelzro | \o/ | 08:35 | |
hoelzro has a t420 | |||
I love that machine | |||
diakopter too | |||
s | |||
FROGGS | toos? | ||
diakopter | 420s | ||
FROGGS | :o) | ||
FROGGS has an awesome dell machine | |||
tadzik | s like "smaller"? | ||
mathw is liking very much his T430 but isn't so keen on the instability Linux is exhibiting on it | 08:36 | ||
tadzik | I wouldn't mind a 13"-ish thing | ||
mathw | not sure if that's the machine or the latest crop of distros though. Possibly a bit of a mixture of both. | ||
08:36
daxim joined
|
|||
tadzik | mathw: I put the new xubuntu on mine, works like a charm | 08:36 | |
even got smapi to work | |||
mathw | wow | ||
I initially put Fedora 18 on mine, but there were a number of really strange and nasty issues with text rendering | 08:37 | ||
tadzik | well, "smapi" | ||
it's no longer a thinkpad specific kernel module, just one named acpi_call and a Perl script running it | |||
diakopter | tadzike: hopefully I'm getting an X1 Carbon Touch next week | ||
mathw | then I put ubuntu 13.04 on it, and that was fine (with me even starting to get used to Unity) when it decided abruptly that Empathy wasn't going to be able to talk to the telepathy account manager anymore | ||
and all I could find about it was something suggesting it's an apparmor config issue which has resurfaced after being a problem around the 12.04 era | 08:38 | ||
however none of the log files which are supposed to mention this sort of thing mention anything, so I'm not sure | |||
but on the bright side it's not just me | |||
tadzik | diakopter: wow | 08:41 | |
mathw: I keep away from any big DEs | 08:42 | ||
I ignore xfce and use i3 on my xubuntu | |||
I basically only run ubuntu for Steam sake :P | |||
bonsaikitten | tadzik: that no sense | 08:43 | |
tadzik | why not? | 08:45 | |
I like the comfort of working with my OS, not _on_ my OS | |||
on ubuntu everything Just Works, most of the problems are already solved | 08:46 | ||
bonsaikitten | hrm, you must use a different ubuntu than I did | ||
since I hate compiling I don't use it anymore :) | |||
tadzik | keep in mind I'm not using Unity as a desktop environment :) | 08:47 | |
without it ubuntu is pretty much debian with newer glibc | |||
bonsaikitten | heh | 08:48 | |
yeah, I tried using unity | |||
it was a fun game, but ... it doesn't make any sense | |||
FROGGS has seen a greeting card: "5 out of 4 people can't do fractions" | |||
mathw | yeah unity is a bit weird | 08:49 | |
moritz | r: '' ~~ /<:L>/ | ||
camelia | rakudo 9ed5c5: OUTPUT«Cannot get character of empty string in regex at /tmp/et0dL5aQYn:1 in method ACCEPTS at src/gen/CORE.setting:10370 in method ACCEPTS at src/gen/CORE.setting:683 in block at /tmp/et0dL5aQYn:1» | 08:50 | |
mathw | not all the interactions seem to have been really thought through, so it's got some bizarre inconsistencies | ||
and I don't like the way they try to hide the menus | |||
moritz | I think I know where it needs fixing | ||
mathw | however I'm not entirely averse to new stuff as I'm extremely comfortable with gnome shell | ||
moritz | nqp/src/vm/parrot/QAST/Compiler.nqp method uniprop | ||
bonsaikitten | mathw: it also doesn't seem to like the idea of using multiple windows | ||
so it might work on a mobile phone, but even there it's quite crummy I guess | 08:51 | ||
mathw | I'm VERY dubious about the one OS for all those form factors idea | ||
moritz | probably nees a check that makes the regex fail if the string is shorter than the pos | ||
mathw: it can make sense to have one OS for all those, but I'm very sceptical of having the same UI for them | 08:52 | ||
bonsaikitten | mathw: KDE seems to have figured that one out - multiple "shells" that are specialized for one use, but all using the same backend machinery | ||
mathw | moritz: point, have to separate the relevant parts. Same kernel is proven after all. Could share more of the stack than that, but not sure a tablet should use the same shell as a desktop or a laptop or a phone. | 08:54 | |
probably shouldn't | |||
bonsaikitten: they may be onto something there, if only it wasn't all ugly and awkward (to my way of thinking) | |||
jnthn | moritz: I gotta head out in just a moment, but I suspect a fix can be stolen from enumcharlist or cclass | ||
mathw | they seem to have a nice pile of tech to play with though | 08:55 | |
bonsaikitten | mathw: hrm, I find the gtk way horribly fugly, and they still haven't figured out simple widgets like a file selector | ||
moritz | jnthn: looks like a good hint | 08:56 | |
mathw | bonsaikitten: I think the best thing is that neither of us are forced to use what we don't like at this point. | 08:57 | |
bonsaikitten | mathw: well, thanks to the nice people from redhat we shouldn't even have that choice | ||
so much effort just to keep them from breaking everything | 08:58 | ||
08:59
donaldh left
|
|||
mathw | are you referring to systemd and friends? | 09:00 | |
jnthn | meeting & | 09:01 | |
bonsaikitten | mathw: yes, such a great downgrade to be more like windows | 09:05 | |
arnsholt | TBH, I'm glad some people are trying to replace init and friends | ||
bonsaikitten | and little things like breaking input methods | ||
arnsholt: good idea, bad implementation - they don't even write any comments in the sourcecode when they can avoid it | 09:06 | ||
arnsholt | Really, it's the best (maybe) tech the early 1980s have to offer | ||
bonsaikitten | also, sysvinit has been beefed up a lot ... OpenRC, for example | ||
(which is amusingly the best candidate for debian now) | |||
masak | good antenoon, #perl6 | 09:09 | |
FROGGS | hi masak | 09:11 | |
mathw | hi masak | ||
tadzik | hi masak | 09:12 | |
Timbus | hi masak | 09:16 | |
09:16
berekuk joined
|
|||
Timbus | do you have logs to the masakism course | 09:16 | |
tadzik | GlitchMr has them, I think | 09:17 | |
09:17
berekuk left
|
|||
masak | they're on irclog | 09:19 | |
moritz | irclog.perlgeek.de has them | ||
masak | irclog.perlgeek.de/masakism/2013-05-01 | ||
Timbus | oh neato | 09:20 | |
masak | moritz++ | ||
Timbus | i can read these and just, imagine im there | ||
09:20
thou left
09:29
berekuk joined
|
|||
masak | :) | 09:34 | |
interesting fact: the word "awesome" was used six times that day. ;) | 09:35 | ||
(four times by me, but still) | |||
moritz | I wonder how often it's used in the IRC channel of the window manager named 'awesome' :-) | ||
masak .oO( all their errors are LTA ) | 09:40 | ||
09:59
kurahaupo left
|
|||
mathw .oO( window managers shouldn't have errors ) | 10:01 | ||
tadzik | heh, you can use this one which has Less Than 1000 sloc [tm], it's probably bug-free | 10:02 | |
moritz | iirc xmonad is quite short | 10:08 | |
arnsholt uses XMonad | 10:10 | ||
10:10
anuby left
|
|||
tadzik | I very like i3 | 10:11 | |
it's probably the only one where you configure it, not write pieces of code. And it has tray *gasp*! | |||
arnsholt | I'm pretty happy with it. But configuring it can be a bit daunting at times, since it's all done in Haskell =D | ||
tadzik | :) | ||
arnsholt | Yeah, I should probably figure out something tray-ish for my XMonad | ||
dalek | p: b4ad9fc | moritz++ | src/vm/parrot/QAST/Compiler.nqp: [QRegex] fix matching of <:L> past end of string Fixes RT #117889 |
10:13 | |
10:32
daniel-s_ left
10:33
bbkr joined
|
|||
FROGGS | n: my @var = <a b ab c>; my $aref = \@var; say 'a b ab c0' ~~ m/$aref[0]/ | 10:44 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«Potential difficulties: Apparent subscript will be treated as regex at /tmp/gCjEvrZD33 line 1:------> aref = \@var; say 'a b ab c0' ~~ m/$aref⏏[0]/False» | ||
FROGGS | n: my @var = <a b ab c>; my $aref = \@var; say 'a b ab c0' ~~ m/$aref/ | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«False» | ||
dalek | ast: 23dc92a | (Tobias Leich)++ | S05-metasyntax/litvar.t: fix test (precedence) |
10:45 | |
10:47
WinRar joined,
WinRar left
|
|||
moritz | irclog.perlgeek.de/ now with small activity images | 10:49 | |
all those images are on the same time scale, but with diffent scalings on the y axes | 10:50 | ||
FROGGS | uhh, cool! | 10:51 | |
moritz++ | |||
arnsholt | Neat! | ||
Time scale last 24 hours or something like that? | |||
moritz | no, time scale since I started logging | 10:52 | |
arnsholt | Ah, cool | ||
moritz | needs much less redoing :-) | ||
like, once a week or so | |||
it's not yet cron'd, but I plan to do that eventuelly | 10:53 | ||
*eventually | |||
and then on the #perl6 index page, I could add a per-month activity image | |||
FROGGS | is #perl6 the most active channel? | ||
arnsholt | moritz: In that case, I guess y is "lines per logged day"? | 10:54 | |
FROGGS | moritz: that could be used as background image of the calendar-title-cell | ||
that page could benefit from github's style :o) | 10:55 | ||
moritz | arnsholt: y is "lines logged per time unit", where time unit = timespan of loggin / 100 | ||
FROGGS: good idea | |||
sergot | hi ! o/ | 10:56 | |
FROGGS | hi sergot | ||
dalek | kudo/nom: ad71045 | moritz++ | src/core/Str.pm: fix argument type of :$where in Str.wordcase |
||
kudo/nom: a4c8c57 | moritz++ | tools/build/NQP_REVISION: bump NQP revision to get fix for RT #117889 |
|||
ast: d07a830 | moritz++ | S05-mass/properties-general.t: RT #117889: <:L> past the end of string |
10:57 | ||
FROGGS | ohh, I like it if bugs dont 'live' longer than a day \o/ | 10:59 | |
moritz++ | |||
moritz | jnthn++ gave a good hint how to fix it | ||
FROGGS | ('live' means: bugfix-date minus discovery-date) | ||
arnsholt | moritz: That makes sense. No need to plot thousands of points for that | 11:00 | |
masak | moritz: it's interesting that #perl6 is the only channel with a constant activity :) | 11:20 | |
nwc10 | moritz: the graphs currently show parts and joins as activity? If so, is it easy to either (a) have two lines, one excluding parts and joins or (b) the one line exclude parts and joins? | 11:21 | |
masak | I'd go with (b). | 11:24 | |
tadzik | b | ||
masak | no need to clutter up a nice clean idea ;) | ||
tadzik | parts/joins are mostly worthless on irc imho | ||
moritz | masak: it's the only channel that I log for so long | ||
masak | oh! | 11:25 | |
that makes more sense. (but is less interesting, too) :) | |||
moritz | you are right, I should remove all those lines | ||
11:26
daxim left
|
|||
moritz | ... done in git. | 11:27 | |
11:27
daxim joined
|
|||
lizmat | rn: my Set $h .= new( ( foo => 1, bar => 0).hash ); say $h | 11:38 | |
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«set(foo, bar)» | ||
lizmat | is it wrong of me to expect that the constructor would only add keys to the set that have a True value ? | 11:39 | |
moritz | apparently, yes :-) | 11:40 | |
you'd use a bag otherwise, no? | |||
rn: my Bag $h .= new( ( foo => 1, bar => 0).hash ); say $h | |||
11:40
sqirrel joined
|
|||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«bag("foo" => 1)» | 11:40 | |
moritz | rn: my Bag $h .= new( ( foo => 1, bar => 0).hash ); say $h.set | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Unable to resolve method set in type Bag at /tmp/My_QzKGyvu line 1 (mainline @ 6)  at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4313 (module-CORE @ 583)  at /home/p6… | ||
..rakudo a4c8c5: OUTPUT«No such method 'set' for invocant of type 'Bag' in block at /tmp/4JLBVOEMt5:1» | |||
moritz | rn: my Bag $h .= new( ( foo => 1, bar => 0).hash ); say set($h) | ||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«set(foo)» | ||
lizmat | - when Pair { %e{.key} = True; } | 11:41 | |
+ when Pair { %e{.key} = True if .value; } | |||
src/core/Set.pm, line 20 | |||
moritz | lizmat: I don't think that's desirable | 11:42 | |
lizmat: because that behavior is already available if you use a bag | |||
lizmat | well, I would think that would make things *more* consistent | 11:44 | |
moritz | nr: my %h = (a => 1, b => 0); say so 'b' ~~ %h | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«False» | ||
..rakudo a4c8c5: OUTPUT«True» | |||
moritz | nr: my %h = (a => 1, b => 0); say so 'b' ~~ set(%h( | 11:45 | |
nr: my %h = (a => 1, b => 0); say so 'b' ~~ set(%h) | |||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Unable to parse expression in argument list; couldn't find final ')'at /tmp/CHxLwtWaW6:1------> (a => 1, b => 0); say so 'b' ~~ set(%h(⏏<EOL> expecting any of: postfix argument list»… | ||
..niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Unable to parse argument list at /tmp/hGEehJgezJ line 1 (EOF):------> (a => 1, b => 0); say so 'b' ~~ set(%h(⏏<EOL>Couldn't find final ')'; gave up at /tmp/hGEehJgezJ line 1 (EOF):------> (a => 1… | |||
rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«False» | |||
moritz | nr: my %h = (a => 1, b => 0); say so 'b' ~~ set(<a b>) | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«Potential difficulties: %h is declared but not used at /tmp/jgu_9hbH33 line 1:------> my ⏏%h = (a => 1, b => 0); say so 'b' ~~ setFalse» | ||
..rakudo a4c8c5: OUTPUT«False» | |||
moritz | wtf? | ||
nr: say set(<a b>) | 11:46 | ||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«set(a, b)» | ||
moritz | nr: say so 'a' ~~ set(<a b>) | ||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«False» | ||
colomon | I don't think Set or Bag do ACCEPTS | ||
moritz | I would have expected that to a membership test | ||
Any Set force set comparison Set($_) === X | |||
colomon | rn: say 'a' (elem) set(<a b>) | 11:47 | |
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«True» | ||
moritz | that's what I would have expected | ||
anyway | |||
rn: say 'b' ~~ %( a => 1, b => 0) | 11:48 | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«False» | ||
..rakudo a4c8c5: OUTPUT«True» | |||
moritz | that's a niecza bug | ||
Cool Hash hash entry existence X.{$_}:exists | |||
colomon | moritz: not disagreeing with you on the question of ACCEPTS, just stating what it does and how to get that effect. | 11:49 | |
11:49
kurahaupo joined
|
|||
moritz | opened github.com/sorear/niecza/issues/172 | 11:49 | |
colomon | moritz++ | ||
moritz | what I actually wanted to show to lizmat is that set(%h) should (IMHO) be consistent with ~~ %h | 11:50 | |
colomon | moritz: I'm still fuzzy this morning, but Set and Bag are not consistent with each other about how they handle getting a => 0.... | 11:52 | |
moritz | colomon: yes, that's kinda my point | 11:53 | |
colomon: a Bag excludes a => 0 | |||
colomon | right | ||
lizmat | "KeySet and KeyBag are derived from this type, but constrain their values to be Bool and UInt, respectively. A KeyHash automatically deletes any key whose value goes false." | ||
moritz | so the behavior that lizmat wants for Set already exists in Bag | ||
lizmat | the type being KeyHash | ||
moritz | lizmat: weren't you experimenting with Set? | 11:54 | |
moritz now also confused | |||
lizmat | yes, I'm trying to write a lightning talk for tonights Amsterdam.pm meeting, Perl5 to Perl6 nuggets, part 2 | ||
whether it's Set or KeySet is not important for the examples | 11:55 | ||
anyways, I was thinking it was a small oversight in src/core/Set.pm | 11:56 | ||
fixable by: when Pair { %e{.key} = True if .value; } | |||
colomon | lizmat: I'm not sure it's an oversight, but it might be a design error. | ||
lizmat | (adding the "if .value") | ||
is it worth making an issue out of it? | 11:57 | ||
colomon | feels like it deserves a thoughtful blog post. | 11:59 | |
lizmat | well, if I'm going to blog, it would be about the inconsistency between: | 12:01 | |
rn: my %a= foo => 1, bar => 2; say %a | |||
camelia | niecza v24-40-g31f36d2: OUTPUT«{"bar" => 2, "foo" => 1}» | ||
..rakudo a4c8c5: OUTPUT«("foo" => 1, "bar" => 2).hash» | |||
lizmat | and: | ||
my Hash $a.= new( foo => 1, bar => 2 ); say $a | 12:02 | ||
rn: my Hash $a.= new( foo => 1, bar => 2 ); say $a | |||
camelia | niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Excess arguments to Hash.new, unused named foo, bar at /home/p6eval/niecza/lib/CORE.setting line 0 (Hash.new @ 1)  at /tmp/PWFoPihsRF line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3)  at /home… | ||
..rakudo a4c8c5: OUTPUT«().hash» | |||
lizmat | at least Niecza tells me what I'm doing "wrong" :-) | ||
jnthn | That should probably Just Work. | 12:03 | |
In fact, I'm a bit surprised it doesn't already. | |||
lizmat | apparently only positionals are taken into account, and any named parameters are dropped on the floor | ||
lizmat needs to get on the road | 12:04 | ||
12:05
woolfy joined
|
|||
nwc10 sees that jnthn made it safely back from Euroland. | 12:07 | ||
jnthn | nwc10: Yes, my work there is finnished. :) | 12:08 | |
nwc10 | groan | 12:09 | |
FROGGS | hehe | ||
12:24
donaldh joined
12:25
kivutar left
|
|||
masak .oO( lol your puns are so Pori ) | 12:26 | ||
jnthn | .oO( can't Tampere with my punning... ) |
12:28 | |
masak | nwc10: btw, Sweden is in Euroland, too. just not in the Euro*zone* :P | ||
12:28
kivutar joined
|
|||
donaldh | jnthn: Should VMExceptionInstance be stringifiable or should Ops.smart_stringify have a special case for VMExceptionInstance? | 12:28 | |
jnthn | donaldh: I though I'd already done that. | ||
donaldh | jnthn: oh/ | ||
masak | nwc10: let me explain it to you with this simple Euler diagram: en.wikipedia.org/wiki/Template:Sup...ean_Bodies | ||
jnthn | donaldh: (in smart_stringify) | ||
donaldh | jnthn: on rak_jvm_support? | 12:29 | |
jnthn | donaldh: possibly :) | ||
12:30
Woodi joined
12:32
cognominal joined
|
|||
donaldh | jnthn: yep, just on rak-jvm-support. I'll switch to that branch. (I think I said that last week) | 12:32 | |
Util | rn: my @a = {title => "a"}, {title => "b"}; my @t = map *.<title>, @a; say @t.perl; | 12:34 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«["a", "b"].list» | ||
..rakudo a4c8c5: OUTPUT«Array.new("a", "b")» | |||
Util | rn: my @a = {title => "a"}, {title => "b"}; my @t = @a>>.<title>; say @t.perl; | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str at <unknown> line 0 (ExitRunloop @ 0)  at /home/p6eval/niecza/lib/CORE.setting line 352 (Any.at_key @ 9)  at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/gmCmKI4bxJ line 0 (ANON @ … | 12:35 | |
..rakudo a4c8c5: OUTPUT«postcircumfix:<{ }> not defined for type Str in method sink at src/gen/CORE.setting:10030 in method STORE at src/gen/CORE.setting:6889 in sub hash at src/gen/CORE.setting:7042 in sub hyper at src/gen/CORE.setting:14023 in sub hyper at src/gen/CORE.setting… | |||
Util | Didn't that work sometime in the past? | ||
moritz | yes, and it will work again some day, when rakudo and niecza catch up the current spec | 12:40 | |
timotimo | "how hard can it be? *opens code* - ... oh" | ||
12:41
lizmat joined
|
|||
moritz | timotimo: I did that twice for this very problem | 12:41 | |
lizmat is on the road | 12:42 | ||
Util | moritz, timotimo: Thanks! | 12:43 | |
moritz | oh, might not be so hard after all | 12:45 | |
"just" needs fixing method dispatch:<hyper>(Mu \SELF: $name, |c) | |||
timotimo | cool! | ||
moritz | or maybe multi sub hyper(\op, \obj) { | 12:47 | |
that's where the difficulties start :/ | |||
12:54
kurahaupo left
|
|||
FROGGS | I dont get it, running t/spec/S11-modules/nested.t using ./perl6 passes, but fails using t/harness :/ | 12:57 | |
jnthn | FROGGS: Do you have a Something.pm lying around in your Rakudo repo? | 13:00 | |
FROGGS | maybe... brb | ||
jnthn | FROGGS: iirc, t/harness gives -I. or so | ||
FROGGS | k, thanks so far | ||
moritz | FROGGS: also maybe the test plan doesn't match the number of tests | 13:01 | |
or the the test produced additional output to STDOUT | |||
t/harness is stricter than visual inspection :-) | |||
13:07
FROGGS left
|
|||
moritz | I have a patch. It causes 4 spectests to fail | 13:14 | |
$ ./perl6 -e 'say ({ b => 1}, {b => 2})>>.<b>' | 13:15 | ||
1 2 | |||
r: say -Any | 13:18 | ||
camelia | rakudo a4c8c5: OUTPUT«use of uninitialized value of type Any in numeric context in block at /tmp/WfzkxA_mod:10» | ||
moritz | meh | ||
moritz HATES THE DUCKMAP SPEC | |||
13:18
PacoAir joined
|
|||
moritz | "(For this meaning of "responds to", we ignore any multi candidates defined in Cool, or the negation above would not work, since Array responds to negation via Cool." | 13:18 | |
no, Array responds to negation via Any | |||
at least in Rakudo | |||
n: say -Any | 13:19 | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«Use of uninitialized value in numeric context at /home/p6eval/niecza/lib/CORE.setting line 1356 (warn @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 294 (Any.Numeric @ 8)  at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/l6Jvd6dXDB line 1 (mainli… | ||
moritz | and since Any has to respond to negation, there's no point in adding an extra layer of Cool(aid) | ||
pmichaud | I wonder if the spec means "defined in Cool or Any or Mu" | ||
anything defined in Any is (to some extent) also defined for Cool. | 13:20 | ||
moritz | anyway, it's unimplementable at the moment | ||
because we don't have a multi dispatcher that we can tell to exclude Cool | |||
13:21
MrMeek-afk joined,
ajr joined
|
|||
moritz | I'm so ».« close to just freakin' give @foo>>.method different semantics than -<< @foo | 13:21 | |
13:22
ajr is now known as Guest5794
|
|||
moritz | because that solves 99% of the user-visible problems with the current behavior without implementing duck mapping | 13:22 | |
which is a crazy concept anyway, which I never liked | |||
13:24
FROGGS joined
|
|||
jnthn | I really, really do not want duck mapping. | 13:25 | |
masak | moritz: let's hear it -- what are you proposing? | ||
pmichaud | do we need a multi dispatcher that can exclude Cool, OOC? | ||
what about .^methods(:excl) ? | 13:26 | ||
jnthn | pmichaud: Do we care if it's fast? | ||
moritz | masak: make anyting>>.method go only one level deep, always | ||
jnthn | +1 to make anything>>.method go only one level deep always | ||
masak | moritz: oh, I'm forever +1 on that one. | 13:27 | |
jnthn | The problem is we'd have to duplicate the whole cache infrastructure for the "exclude cool" dispatch. | 13:29 | |
13:31
skids joined
|
|||
pmichaud | moritz: is your proposal assuming that operators would also be restricted to one-level-deep, too? | 13:31 | |
or is it just >>.method ? | |||
moritz | pmichaud: just >>.method | 13:33 | |
pmichaud | so, that wouldn't fix the .{ } case above, right? | ||
moritz | .{ } is a method, in that context (afaict) | 13:34 | |
pmichaud | it's not going to be. | ||
postcircumfix:<{ }> is slated to become an operator. | |||
masak | yay | ||
pmichaud | (as is postcircumfix:<[ ]>) | ||
masak | sorear++ was right all along... :) | 13:35 | |
moritz | pmichaud: then I'd propose "anything with >> in postfixish" | ||
pmichaud | "anything with >> in postfixish" has a smell, I think. | ||
FROGGS | jnthn: I had a A.pm in reakudo/ -.- | ||
jnthn | Do we want >>+<< to be more than one level deep? | ||
moritz | pmichaud: "every time >> is used on a postfix operator or method call" | ||
pmichaud | moritz: still smelly that we have two different hyper interpretations. | 13:36 | |
moritz | or just "every time >> is used on a postfix" | ||
pmichaud | jnthn: [[1,2], [3,4]] >>+<< [[5,6], [7,8]] | ||
moritz | pmichaud: aye; but not as smelly as duck mapping | ||
pmichaud | pretty sure that doesn't want to be [4, 4] | ||
jnthn | pmichaud: That outer [...] should not flatten anyway? | 13:37 | |
pmichaud | modulo syntax | 13:38 | |
((1,2), (3,4)) >>+<< ((5,6), (7,8)) if you insist. | |||
jnthn | Well, that one just falls out of flattening | ||
([1,2],[2,4]) ... is the interesting one, iiuc. | |||
FROGGS | ahh jnthn: do you have time today to talk about symbol tables? | 13:39 | |
pmichaud | S03 gives the example of -<< [ [1,2], 3] becoming [ [-1, -2], -3 ] so I think my original example was correct-ish. | 13:40 | |
FROGGS | nr: say -<< [ [1,2], 3] | 13:41 | |
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«-1 -2 -3» | ||
FROGGS | nr: say (-<< [ [1,2], 3]).perl | ||
camelia | rakudo a4c8c5: OUTPUT«([-1, -2], -3)» | ||
..niecza v24-40-g31f36d2: OUTPUT«[[-1, -2], -3].list» | |||
pmichaud | bug. :) | 13:42 | |
jnthn | Do we not have some ticket about other meta-ops flattening too much? | 13:43 | |
jnthn forgets the details | |||
FROGGS: Later on, yes. Meant to be being attentive to a meeting atm ;) | |||
pmichaud | yes, we have lots of flattening issues | ||
but that one isn't a flattening issue, it's a "hyper doesn't respect containers on its arguments" issue, I think. | 13:44 | ||
FROGGS | jnthn: cool | ||
13:45
Targen left
|
|||
masak | FROGGS: are you submitting a rakudobug, or should I? | 13:46 | |
moritz | fwiw I have a local patch that changes >>.method and >>.<subscript> to only go deep one level | 13:47 | |
it just fails one block of spectests, which expects to be able to say %hash>>.abs and have it work on the hash values, not the pairs | |||
pmichaud | I'm not a fan of having different meanings for hyper depending on the postfixishness. I'm not saying that the current duck mapping is the answer either, but giving hypers this sort of distinction feels very wrong to me. | 13:48 | |
13:49
kivutar left
|
|||
masak | pmichaud: agreed. | 13:49 | |
moritz | so let's have >> for flat-hyper and >>> for deep hyper | ||
masak | pmichaud: fwiw, I'm not a fan of deep hypering in any situation. I could accept that as an operator adverb, but I don't like it as the default behavior. | ||
moritz: or just a method for deep hyper. | 13:50 | ||
moritz | and «« vs « | ||
masak | moritz: «« would need to be <<<< as ASCII :) | ||
pmichaud | masak: what about the [[1,2], [3,4]] >>+<< [[5,6], [7,8]] situation above? | ||
just say we don't support it? | |||
masak | pmichaud: hm. | ||
moritz | masak: I'm not sure an method is the correct solution for something symmetrical | ||
masak | pmichaud: I can't help thinking it's S09-related. like, maybe hyper does the right thing if you've defined a shape for the data structure. | 13:51 | |
pmichaud | masak: yes, I was wondering that also. | ||
masak: but I don't know that I should have to define a shape just to get nested arrays to dtrt. | |||
masak | pmichaud: I dunno, doesn't feel like too much to ask. | ||
jnthn | And typically in Perl we use different operators for different sematnics. | ||
masak | pmichaud: it's kind of a lead-in to S09. "predeclare, and you'll get nice features!" | 13:52 | |
jnthn | (In this case, meta-operators) | ||
I'd be happiest if we could differentiate the shallow vs deep cases. | |||
masak | but I admit to not having thought deeply about this :) | ||
pmichaud | well, TimToady++ has been backing off of things that do too much introspective dwimming, so perhaps this will be another one of those instances. | 13:53 | |
jnthn: duckmapping *does* differentiate the shallow vs deep cases; we just don't like the way it does it. :) | |||
jnthn | pmichaud: No no. I mean, *you write something different in the code*. :) | ||
pmichaud | right, you're wanting it to differentiate syntactically | 13:54 | |
jnthn | >>+<< vs >>>+<<< for example, though maybe not like that :P | ||
pmichaud | but it's not really the case that we always change operators for different semantics | ||
at least, I don't think it is. | |||
13:54
kivutar joined
|
|||
jnthn | Well, eq vs ==, for example. | 13:54 | |
moritz | pmichaud: at least we try to, really hard | ||
like abandoning perl 5's reverse() ambiguty | 13:55 | ||
sjn | \o | ||
jnthn | We've also split reverse into flip and reverse, to give another example where we've leaned to naming different operations differently. | ||
masak | sjn: \o | ||
jnthn | It just depends I guess how different we consider the two. | ||
pmichaud | I know we can come up with examples where we have different operators for different semantics, I'm just not sure it's universal yet. | ||
moritz | also p5's & can be string or integer bitwise ops | ||
13:55
kaleem left
|
|||
sjn | masak, jnthn: any thoughts about good short poster-able examples? :) | 13:55 | |
jnthn | .oO< @a >>+<< @b :depth(*) | 13:56 | |
) | |||
moritz | pmichaud: we have a few operators that violate that rule deliberately, like ~~ | ||
jnthn | Adverbs are always a big of a hack though :) | ||
uh, bit of, but... :) | |||
moritz | @a >*>+<*< @b | ||
moritz not quite serious about >*>+<*< | |||
jnthn | o.O :) | 13:57 | |
pmichaud | I may be wrong, but it also feels like we're arguing for different semantics based on difficulty of implementation, and not necessarily what the programmer would want/expect. | ||
(in the hypers case) | |||
I haven't seen many examples of above where we say "it needs to be this way because that's what programmers expect" | 13:58 | ||
moritz | pmichaud: when duck mapping was introduced, I also presented several arguments about it violating the principle of least surprise | 14:01 | |
pmichaud | moritz: oh, I can believe that. | ||
I truly am not a fan of duck mapping either. | |||
moritz | pmichaud: likt that it's not safe against adding operations to container types | ||
pmichaud | but I'm not convinced that "make everything shallow" is the right answer to that. | ||
moritz | no, but "make postfixes shallow" is a the best compromise I've heard of so far | 14:02 | |
pmichaud | I wonder if deepness is somehow tied to the operator or method being hypered. | ||
masak decommutes | 14:03 | ||
14:03
lizmat left
|
|||
jnthn | decommute also & | 14:03 | |
pmichaud | moritz: I don't think I want -<< [[1,2], 3] to be deep but [[1, -2], 3]>>.abs to be shallow. | ||
moritz | oh wait | ||
14:03
lizmat joined
|
|||
moritz | S03 has this piece: | 14:03 | |
Unary hyper operators always produce a hash or array of exactly the | |||
same I<declared> shape as the single argument. If the item is not | |||
declared with a shape, only the top dimension is mapped, equivalent | |||
to a normal C<.map> method. | |||
which directly contradicts the -<< [[1,2], 3] example | 14:04 | ||
pmichaud | Yes, I believe that the spec is self-contradictory on duckmapping also, which is part of what makes it confounding. | ||
14:05
census left
|
|||
pmichaud | because it also says | 14:06 | |
For unary hypers, we use a policy called "duck mapping", which says that when a node responds directly to the operator supplied, it is considered a leaf node, and any Iterable components of the node are ignored. | |||
lizmat | something entirely different, if I may: | 14:08 | |
rn: class Hash2 is Hash { multi method new (*%n-->Hash) { nextwith(%n.kv) } }; my $h= Hash2.new( a => 1, b => 2 ); say $h; | |||
camelia | niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Illegal control operator: nextsame/nextwith at /home/p6eval/niecza/lib/CORE.setting line 1538 (nextwith @ 5)  at /tmp/sdtnjMCFIG line 1 (Hash2.new @ 5)  at /tmp/sdtnjMCFIG line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.… | ||
..rakudo a4c8c5: OUTPUT«Too many positional parameters passed; got 5 but expected 1 in method new at src/gen/CORE.setting:727 in any at src/gen/Metamodel.nqp:2885 in any call_with_args at src/gen/Metamodel.nqp:2882 in block at src/gen/CORE.setting:548 in method new at /tmp/t8i… | |||
moritz | pmichaud: right; I believe we had the exact same discussion before | 14:09 | |
lizmat | I guess I'm either not understanding multi-dispatch, or I'm doing something else wrong ? | ||
moritz | pmichaud: which ended in me telling you that the section I quoted earlier was newest, and I wanted to remove the rest, and you said you weren't sure and wanted to get TimToady's opinion first | ||
pmichaud | I don't think we want -<< [[7,8], 9] to suddenly become [-2, -9], no. | 14:10 | |
lizmat arriiving in Amsterdam, afk until later | 14:11 | ||
14:11
lizmat left
|
|||
pmichaud | but yes, if the unary hyperops end up being shallow for arguments with no declared shape, then hyperops in general probably ought to be shallow in all such situations as well. | 14:12 | |
14:15
bluescreen10 joined
|
|||
pmichaud | what's the new "leave a message" syntax? | 14:15 | |
(.tell who what?) | |||
moritz | .msg pmichaud like this, maybe? | 14:16 | |
yoleaux | moritz: Sorry, this command is admin-only. | ||
moritz | .tell pmichaud like this, maybe? | ||
yoleaux | moritz: I'll pass your message to pmichaud. | ||
pmichaud | .tell lizmat (Hash2.new multimethod fail) the problem appears to be that Rakudo's Hash.new method isn't declared 'multi'. | ||
yoleaux | 14:16Z <moritz> pmichaud: like this, maybe? | ||
pmichaud: I'll pass your message to lizmat. | |||
pmichaud | method new(*@args) { @args.hash } | ||
(afk) | 14:22 | ||
14:25
Moukeddar joined
|
|||
moritz opened github.com/perl6/specs/issues/42 | 14:32 | ||
hoelzro | the bot should report opened issues! | 14:33 | |
Moukeddar | guys,o/ , can i bother you with some cqrs related questions | 14:34 | |
14:38
Targen joined
14:43
frdmn left
14:46
am0c joined
14:51
rindolf left
14:58
kbenson joined
15:00
mucker joined
15:01
Moukeddar left
15:02
sftp left,
sftp joined
15:10
kaare_ joined
|
|||
kresike | bye folks | 15:11 | |
15:11
kresike left
15:16
stevan_ joined
15:20
kaleem joined
15:25
domidumont left
15:37
am0c left
|
|||
mucker | java.lang.RuntimeException: java.lang.RuntimeException: Method code too large! #JAVA_OPTS=-Xms512M -Xmx1G -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M | 15:41 | |
trying to build nqp | 15:42 | ||
jnthn | mucker: It's fixed in the rak-jvm-support branch; I'll try and get that merged shortly (next couple of days) so that master will also be fixed for this. | 15:44 | |
nwc10 | jnthn: you know the cause? | ||
mucker | jnthn++ can I checkout the branch now ? | 15:45 | |
jnthn | mucker: Yes, it should build just fine. | ||
nwc10: Yeah, a patch that I didn't think had gone into master did, somehow. | 15:46 | ||
nwc10 | aha. Oops. | ||
jnthn | nwc10: The reason I can't just merge the branch already is 'cus Rakudo's mainline branch won't build against rak-jvm-support at the moment on Parrot. | ||
nwc10 | that's a tad inconvenient | ||
jnthn | Yeah. All is fine in the jvm-support branch of Rakudo, though. :) | 15:47 | |
nwc10 | that branch will build with Parrot? | ||
jnthn | Yes. | ||
But if I merge it now I also drag JVM stuff into Rakudo mainline. | |||
Which may not be desirable until I get it to at least run *something*. :) | 15:48 | ||
donaldh | jnthn: I could send a pull request for the sub() {...} workaround. | ||
jnthn | Anyway, what I can do is rebase -i that jvm-support branch, put all the refactor-related patches before the JVM-support-adding patches, then merge the branch up to the end of the support-adding ones. :) | 15:49 | |
And then "problem solved" :) | |||
15:49
kaleem left
|
|||
jnthn | donaldh: I plan to get the branch merged in the next couple of days somehow, so don't worry about it. :) | 15:50 | |
donaldh | cool | ||
jnthn: I sent a pull request for REPL | |||
jnthn: I was looking for a lib for full REPL editing/history. Could be jline.sourceforge.net/ | 15:52 | ||
jnthn | Ooh, great :) | ||
donaldh | I'll work on that next unless there's something more useful :-) | 15:53 | |
jnthn | BSD license is fine, too :) | ||
A working REPL is certainly useful. | 15:54 | ||
dalek | rl6-roast-data: ea3e082 | coke++ | / (4 files): today (automated commit) |
||
donaldh decommutes | 15:56 | ||
15:56
donaldh left
|
|||
dalek | p/rak-jvm-support: d0a2b89 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files): Updates to IO ops to get REPL working |
15:57 | |
p/rak-jvm-support: 19008e4 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files): Merge pull request #95 from donaldh/repl Updates to JVM IO ops to get REPL working |
|||
15:58
stevan__ joined
16:02
stevan_ left
16:09
clkao left,
clkao joined
|
|||
[Coke] | does anyone care enough about szabgab's .gitignore commit to revert it? | 16:10 | |
(rakudo-star) | |||
16:11
thou joined
|
|||
[Coke] | (I do, but will probably not get to it for days) | 16:12 | |
sorear | n: {} ~~ {} | 16:16 | |
camelia | niecza v24-40-g31f36d2: ( no output ) | ||
sorear | n: say {} ~~ {} | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«False» | ||
16:16
lizmat joined
16:18
mucker left
16:22
lizmat left
16:28
stevan__ left
|
|||
colomon | rn: my %h = a => 12; say 'a' ~~ %h; say %h ~~ %h | 16:29 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«FalseTrue» | ||
..rakudo a4c8c5: OUTPUT«TrueFalse» | |||
colomon | hmm. | ||
masak | um. | ||
16:29
Subterra joined
|
|||
masak | at least one of <Niecza Rakudo> is wronge there ;) | 16:30 | |
colomon | I'm leaning towards both! | 16:31 | |
Hash Hash hash keys same set $_.keys === X.keys | |||
masak | me too. | ||
so Rakudo is wrong on the second one. | |||
and Niecza is wrong on the first one. :) | |||
colomon | Any Hash hash slice existence X.{any @$_}:exists | ||
masak | colomon: or evern | ||
Cool Hash hash entry existence X.{$_}:exists | 16:32 | ||
even* | |||
colomon | Niecza is actually wrong on the second too, you just can't tell | ||
masak .oO( secretly wrong! ) | |||
16:33
dmol joined,
gtodd joined,
xilo joined
|
|||
colomon | rn: my %a = a => 1; my %b = a => 2; say %a ~~ %b | 16:34 | |
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«False» | ||
colomon | should be true, right? | ||
PerlJam | How do you figure? | 16:35 | |
colomon | PerlJam: Hash smartmatch is supposed to compare the hash's keys. | ||
masak | colomon: yes. | 16:36 | |
colomon | github.com/perl6/roast/blob/master...h.t#L7-L29 | ||
it's a bad sign when half the tests are todo'd on every single implementation. | |||
PerlJam | weird. | ||
masak | PerlJam: agreed. | ||
PerlJam: but perhaps makes a little more sense in a 'when' than in a '~~' | |||
dalek | Heuristic branch merge: pushed 19 commits to nqp/rak-jvm-support by jnthn | 16:38 | |
colomon | though does $_.keys === X.keys actually make sense as a test? | 16:39 | |
rn: say <a b> === <a b> | |||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«False» | ||
colomon | Either I don't understand something or $_.keys === X.keys is a very sloppy approximation of what is actually wanted | ||
16:39
lizmat joined
|
|||
masak | colomon: huh. yes, === feels very wrong there. | 16:41 | |
colomon | rn: say <a b> <<===>> <a b> | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Unsupported use of >> to do right shift; in Perl 6 please use +> or ~>at /tmp/I6Xelja_SW:1------> say <a b> <<===>>⏏ <a b>» | ||
..niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Cannot make assignment out of <<== because sequencer operators are too fiddly at /tmp/zM9TLs3cUJ line 1:------> say <a b> <<===⏏>> <a b>Bogus statement at /tmp/zM9TLs3cUJ line 1:------> say <a b> … | |||
masak | colomon: «===» I woulda understood, like with Array Array. | 16:42 | |
colomon | rn: say <a b> «===» <a b> | ||
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«True True» | ||
colomon | masak: that can't be right, because order of .keys is not guaranteed. | ||
what is actually wanted here is Set equality... | 16:43 | ||
16:43
Guest5794 left,
lizmat left
|
|||
masak | colomon: oh, yes. | 16:43 | |
colomon | $_.set eqv X.set | 16:44 | |
except Set eqv Set is NYI in Niecza. Dunno about Rakudo. | |||
afk # fetching noms for family | |||
dalek | p/rak-jvm-support: c3f5a0f | jnthn++ | src/QRegex/P5Regex/Grammar.nqp: Fix all but one of the P5Regex tests on JVM. |
16:45 | |
masak | feels weird-ish to define smartmatching between hashes in terms of sets, for some reason. | 16:46 | |
colomon | of course, then the question becomes is it $_.set eqv X.set or $_.keys.set eqv X.keys.set ? | ||
masak: that's probably not the right way to implement it, but it is exactly the desired semantics. I think. | 16:47 | ||
16:47
fhelmberger left
|
|||
sorear | masak: niecza doesn't have a Hash.ACCEPTS, it's inherited from Mu :D | 16:48 | |
16:50
mucker joined
|
|||
masak | colomon: agreed. | 16:53 | |
sorear: hehe. "what is the sound of one Hash clapping?" :P | |||
16:54
frdmn joined
|
|||
daxim | 1/0 # oh shi… | 16:56 | |
dalek | p/rak-jvm-support: 75b5649 | jnthn++ | src/QRegex/Cursor.nqp: Make !dump_array tolerate nullness better. Gets us down to just 3 p6regex tests failing on JVM. |
16:59 | |
16:59
stevan_ joined
|
|||
colomon | sorear: I'm working on that issue... thus the questions! | ||
[Coke] | jnthn++ | 17:00 | |
17:02
DarthGandalf joined
17:32
Chillance joined
17:34
daxim left
|
|||
TimToady | re unary hypers, see github.com/perl6/specs/commit/3320...ab5573e428 | 17:35 | |
dunno why dalek didn't report it... | 17:36 | ||
17:36
domidumont joined
|
|||
moritz | TimToady++ | 17:37 | |
pmichaud | so it is "per operator"! \o/ | ||
TimToady | FAQ answer: "That's a nodal operator, so it doesn't recurse." | 17:38 | |
hopefully not too F | |||
pmichaud | as long as the dwim really dwtm it won't be F :) | ||
moritz | I'm just not sure if I understood the method case | ||
TimToady | you have to have a proto, I think, to have a structural method | 17:39 | |
otherwise it's probably going to be assumed to be non-structural | |||
has to be something that is easy for the hyper controller to discover quickly, anyway | 17:40 | ||
assuming it can't be known at compile time | |||
which some methods might be knowable depending on which classes can close/finalize at CHECK time | |||
and yes, it's an introspection, but hopefully it's the least smelly way to get something that dwims most of the time | 17:42 | ||
in any case, it's an introspection that doesn't need to be made on every node, just on the initial hyper dispatch | 17:43 | ||
pmichaud | well, it's introspection at the level of the operator, which means we can likely hotpath some of them | ||
TimToady | two minds with but a single thought... :) | ||
arnsholt | masak: translate.google.no/#no/sv/postoppkrav | 17:48 | |
moritz | wait, doesn't it need to introspect for each element again? | ||
arnsholt | (And anyone else Scandinavian-phone, I guess. moritz perhaps?) | ||
moritz | I guess it can cache based on type | 17:49 | |
masak | arnsholt: wt... | 17:50 | |
sorear | .tr :no :sv postoppkrav | 17:52 | |
yoleaux | TORSK (no → sv) | ||
arnsholt | masak: There's a relatively coherent explanation for it | ||
pmichaud | it needs to introspect each element for non-structural operators. Yes, it could cache based on type. | 17:53 | |
17:53
kivutar left
|
|||
sorear | arnsholt: Is that one of those statistical translation glitches? | 17:53 | |
arnsholt | There's probably no translation model for the no-sv pair (not surprising since they're both small languages and statistical MT requires relatively large parallel corpora) | ||
sorear: Sort of | |||
sorear | like how city names sometimes get switched | ||
pmichaud | for structural operators, such as .{} and .elems it wouldn't need to introspect. | ||
sorear | .tr :no :en postoppkrav | 17:54 | |
yoleaux | COD (no → en) | ||
sorear | .tr :sv :en torsk | ||
yoleaux | cod (sv → en) | ||
arnsholt | So instead of not allowing translation from Norwegian to Swedish, they first translate from Norwegian to English and then to Swedish | ||
sorear | so it goes through english and gets "roundoff error"? | ||
arnsholt | I'd say roundoff error is on the charitable side, but yeah =) | ||
TimToady | for operators that are known to be disjunct with structural operations, one could still do the failover trick in one direction or the other | 17:55 | |
sorear | do these two words refer to specific species of fish? | ||
TimToady | (the .duckmap vs .deepmap distinction is really only useful when the operators are not know to be disjunct) | 17:56 | |
so the initial dispatch itself can in many cases serve as the "introspection" | |||
sorear | Aha | 17:57 | |
TimToady | *the initial dispatch on the item | ||
pmichaud | indeed... in Rakudo's case it can introspect the operator at compile-time | ||
sorear | Haha | ||
pmichaud | I'm afk again... TimToady++ for rapid spec issue clarifications. | ||
arnsholt | sorear: No. Postoppkrav is Cash on delivery (or whatever COD is an abbreviation for) | ||
sorear looks at no.wikipedia.org/wiki/Postoppkrav and sv.wikipedia.org/wiki/Torsk | 17:58 | ||
arnsholt | Torsk is the fish cod, though | ||
Oh. Collect on delivery | |||
Nothing fish-related, at any rate =) | 17:59 | ||
jnthn | :D | ||
arnsholt | (And the all-capsing of COD as an abbreviation triggers all-caps TORSK on the Swedish side, of course) | ||
In fact, I think I'll show this one to my students on Friday ^_^ | 18:01 | ||
sorear | What do you teach? | 18:03 | |
18:04
gtodd left
|
|||
arnsholt | Introduction to comp.ling./NLP | 18:04 | |
(IIRC the official title is introduction to language technology) | 18:05 | ||
And I talked about SMT last friday, so it's pretty relevant to what I've taught recently. And this lecture is the sum-stuff-up lecture, anyways | |||
18:06
gtodd joined
|
|||
masak | arnsholt: oh, that's wonderful :) | 18:06 | |
arnsholt: and it makes perfect sense. | 18:07 | ||
arnsholt: I hope in 20 years we'll have a translator algorithm that will literally laugh at GT for being so silly. ;) | |||
arnsholt | We can hope ;) | ||
20 years is far enough into the future that it's hard to guess what's possible, anyways =) | |||
sorear | "hi. while translating your manuscript into German I found a way to radically simplify the proof of theorem 4.6" | 18:08 | |
colomon | "And I think theorem 4.7 might be wrong..." | 18:09 | |
arnsholt | Heh. Is that an actual thing that's happened, or conjecture? =) | ||
sorear | arnsholt: no, we don't have AGI at that level yet | ||
TimToady | The state of machine translation in 20 years will be that the meat is rotten, but the booze is holding out. :) | 18:10 | |
arnsholt | Yeah. Figured it might have come from a human translator at some point =) | ||
TimToady: =D =D =D | |||
The lectures from last year (written by my advisor) had a variant on that, but I cut it from my slides, sadly =) | 18:11 | ||
18:11
rindolf joined
|
|||
dalek | ecs: 3320ccb | larry++ | S03-operators.pod: distinguish structural unaries by 'is nodal' trait People naturally expect structural unaries like subscripts to be flat but non-structural unaries to recurse when hypered. The best place to hang this info is on the top-level function/method/proto that will be passed to the hyper controller as object representing the operation in question. Subscripts and methods like .values are considered "nodal". For static functions on static shapes of known type, this enables compile-time knowledge of what can be sent to the GPU. Fixes #42 |
18:11 | |
TimToady | there it is, finally... | 18:12 | |
PerlJam | dalek: had to read it and understand it first. | ||
s/:// | |||
TimToady | TCF? | 18:13 | |
sorear | arnsholt: closest case I know of is the Titius-Bode law one | ||
18:14
lizmat joined
|
|||
sorear | en.wikipedia.org/wiki/Titius-Bode_law#History p. 2-3 | 18:14 | |
18:15
ajr joined,
ajr is now known as Guest20215
|
|||
arnsholt | sorear: Neat. Didn't know about that one! | 18:16 | |
18:17
gcole joined
18:20
stevan_ left
18:28
thou left
|
|||
masak | TimToady++ # nodality | 18:31 | |
dalek | rl6-roast-data: 02e44a5 | coke++ | / (4 files): today (automated commit) |
18:34 | |
18:36
domidumont left
|
|||
[Coke] | niecza has been dirty for 294 days. pugs has been dirty for 3 days. rakudo has been dirty for 3 days. | 18:37 | |
TimToady | nr: (1,2,3).:<[+]>.say | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Unsupported use of . to concatenate strings; in Perl 6 please use ~at /tmp/7iDxACw3kN:1------> (1,2,3).:⏏<[+]>.say» | ||
..niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Colonpair dotties NYI at /tmp/uoLg6yFGDT line 1:------> (1,2,3).:<[+]>⏏.sayUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5)  at /home/p6eval/niecza… | |||
[Coke] | rakudo failures have changed. niecza is much improved. someone is killing pugs. | ||
sorear | niecza is improving? | 18:38 | |
diakopter | spec regression? :) | ||
[Coke] | sorear: colomon is fudging and fixing, yes. | ||
down to 35 failures, from 182 yesterday. | 18:39 | ||
TimToady | nr: (1,2,3).&prefix:<[+]>.say | 18:41 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Undeclared routine: 'prefix:<[+]>' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37)  … | ||
..rakudo a4c8c5: OUTPUT«===SORRY!===Undeclared name: &prefix:<[+]> used at line 1» | |||
TimToady | nr: (1,2,3).reduce(&[+]).say | 18:44 | |
camelia | rakudo a4c8c5, niecza v24-40-g31f36d2: OUTPUT«6» | ||
colomon | sorear: I started feeling guilty about working on automatically smoke testing the Rakudo ecosystem while ignoring the routine Niecza fails [Coke] was reporting every day. :) | ||
sorear | colomon++ | 18:45 | |
colomon | sorear: though a lot of it is just that my $work has been incredibly dreary the last few weeks. | ||
sorear | aww. | ||
TimToady occasionally wishes for shorter postfix reduction sugar when working on RC solutions that are largely left-to-right | |||
moritz | nr: say 1, 2, 3 ==> &[+] | 18:46 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«123Unhandled exception: Feed ops NYI at /home/p6eval/niecza/lib/CORE.setting line 1504 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3447 (infix:<==>> @ 4)  at /tmp/YpAiU3ZybZ line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.settin… | ||
..rakudo a4c8c5: OUTPUT«===SORRY!===Sorry, do not know how to handle this case of a feed operator yet.at /tmp/HqUzS3bAyu:1------> say 1, 2, 3 ==> &[+]⏏<EOL> expecting any of: postfix» | |||
moritz | r: 1, 2, 3 ==> [+] | 18:47 | |
camelia | rakudo a4c8c5: ( no output ) | ||
moritz | r: 1, 2, 3 ==> [+] ==> say | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Preceding context expects a term, but found infix ==> insteadat /tmp/TGPYBfDCLC:1------> 1, 2, 3 ==> [+] ==>⏏ say» | ||
18:47
alester joined
|
|||
TimToady | r: 1, 2, 3 ==> [+]() ==> say | 18:48 | |
camelia | rakudo a4c8c5: OUTPUT«6» | ||
TimToady | r: 1, 2, 3 ==> ([+]) ==> say | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Sorry, do not know how to handle this case of a feed operator yet.at /tmp/siTeIx_LHv:1------> 1, 2, 3 ==> ([+]) ==> say⏏<EOL> expecting any of: argument list postfix» | ||
moritz | r: 1, 2, 3 ==> infix:<+> ==> say | 18:49 | |
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Preceding context expects a term, but found infix ==> insteadat /tmp/Cfs22VMnMl:1------> 1, 2, 3 ==> infix:<+> ==>⏏ say» | ||
moritz | r: 1, 2, 3 ==> say | ||
camelia | rakudo a4c8c5: OUTPUT«1 2 3» | ||
moritz | r: 1, 2, 3 ==> infix:<+> | ||
camelia | rakudo a4c8c5: ( no output ) | ||
moritz | r: say(1, 2, 3 ==> infix:<+>) | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Unable to parse expression in argument list; couldn't find final ')'at /tmp/zuDNTmCYRQ:1------> say(1, 2, 3 ⏏==> infix:<+>) expecting any of: postfix infix stopper infix or meta-infix»… | ||
moritz gives up | |||
diakopter | r: say 1, 2, 3 ==> &infix:<+> | 18:52 | |
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Sorry, do not know how to handle this case of a feed operator yet.at /tmp/TOOPjOUSaf:1------> say 1, 2, 3 ==> &infix:<+>⏏<EOL> expecting any of: postfix» | ||
dalek | ecza: 69a3432 | (Solomon Foster)++ | lib/CORE.setting: Implement respectable version of Hash.ACCEPTS. |
||
18:52
thou joined
|
|||
TimToady | note that say is tighter than ==> | 18:52 | |
18:53
japhb_ joined
|
|||
TimToady | and in any case, the pointy end of ==> wants something variadic | 18:53 | |
r: say (1,2,3 ==> &prefix:<[+]>) | 18:55 | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Sorry, do not know how to handle this case of a feed operator yet.at /tmp/aslS2jON63:1------> say (1,2,3 ==> &prefix:<[+]>⏏) expecting any of: postfix» | ||
TimToady | r: say (1,2,3 ==> prefix:<[+]>) | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Undeclared routine: prefix:<[+]> used at line 1. Did you mean '&prefix:<+>', '&prefix:<++>', '&prefix:<+^>'?» | ||
diakopter | r: say (1,2,3 ==> [&prefix:<+>]) | ||
camelia | rakudo a4c8c5: OUTPUT«prefix:<+> 1 2 3» | ||
diakopter | heh. | 18:56 | |
TimToady | r: say (1,2,3 ==> [&infix:<+>]) | ||
camelia | rakudo a4c8c5: OUTPUT«infix:<+> 1 2 3» | ||
18:56
bluescreen100 joined
|
|||
jnthn | If the final thing is an array it pushes onto it :) | 18:56 | |
18:57
bluescreen10 left,
thou left
|
|||
jnthn | More typically you write ... ==> my @a; :) | 18:57 | |
masak | r: sub plus(*@v) { [+] @v }; say (1, 2, 3 ==> &plus) | ||
TimToady | but that should maybe be parsing as a reduction, not a composer? | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Sorry, do not know how to handle this case of a feed operator yet.at /tmp/36T977i8hw:1------> (*@v) { [+] @v }; say (1, 2, 3 ==> &plus⏏) expecting any of: postfix» | ||
masak | r: sub plus(*@v) { [+] @v }; say (1, 2, 3 ==> plus) | ||
camelia | rakudo a4c8c5: OUTPUT«6» | ||
masak | \o/ | ||
jnthn | TimToady: oh, hmm | 18:58 | |
TimToady: I dunno if Rakudo does the [&foo] case of reduction yet. | |||
18:58
sqirrel left
|
|||
TimToady | nr: [&infix:<+>] 1,2,3 | 18:58 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Two terms in a row (preceding is not a valid reduce operator) at /tmp/Hhe9Sv4lF4 line 1:------> [&infix:<+>] ⏏1,2,3Parse failed» | ||
..rakudo a4c8c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/PjEIZg25Qt:1------> [&infix:<+>] ⏏1,2,3 expecting any of: postfix infix stopper infix or meta-infix statement end statement modifier st… | |||
jnthn | std: [&infix:<+>] 1,2,3 | 18:59 | |
camelia | std b33d8e0: OUTPUT«===SORRY!===Two terms in a row (preceding is not a valid reduce operator) at /tmp/5VqsJvXb2R line 1:------> [&infix:<+>] ⏏1,2,3 expecting any of: infix or meta-infix infixed function statement modifier loopParse | ||
..failedF… | |||
TimToady | hmm | ||
jnthn | Hm, even STD doesn't recognize that one. :) | ||
colomon | n: say 1e0 .. 1e0 | ||
camelia | niecza v24-40-g31f36d2: OUTPUT«1e0..1e0» | ||
TimToady | nr: [&(*+*)] 1,2,3 | ||
camelia | rakudo a4c8c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/P8BnCl9eW6:1------> [&(*+*)] ⏏1,2,3 expecting any of: postfix infix stopper infix or meta-infix statement end statement modifier statem… | ||
..niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Two terms in a row (preceding is not a valid reduce operator) at /tmp/b5rs468vgW line 1:------> [&(*+*)] ⏏1,2,3Parse failed» | |||
TimToady | nr: [&[+]] 1,2,3 | 19:00 | |
camelia | niecza v24-40-g31f36d2: OUTPUT«===SORRY!===Two terms in a row (preceding is not a valid reduce operator) at /tmp/TcEoqfJ6Ri line 1:------> [&[+]] ⏏1,2,3Parse failed» | ||
..rakudo a4c8c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/Aot5CXctge:1------> [&[+]] ⏏1,2,3 expecting any of: postfix infix stopper infix or meta-infix statement end statement modifier statemen… | |||
dalek | kudo/jvm-support: ad71045 | moritz++ | src/core/Str.pm: fix argument type of :$where in Str.wordcase |
19:03 | |
kudo/jvm-support: a4c8c57 | moritz++ | tools/build/NQP_REVISION: bump NQP revision to get fix for RT #117889 |
|||
kudo/jvm-support: 29d5cbe | jnthn++ | / (2 files): Merge branch 'nom' into jvm-support |
|||
Util | #parrotsketch (network irc.perl.org) meeting in 27 minutes. GSoC proposals will be discussed. (Including "JavaScript backend for NQP&Rakudo") | ||
19:03
thou joined
|
|||
colomon | rn: my $a = Any; say 1..$a; | 19:08 | |
camelia | niecza v24-42-g69a3432: OUTPUT«Use of uninitialized value in numeric context at /home/p6eval/niecza/lib/CORE.setting line 1356 (warn @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 294 (Any.Numeric @ 8)  at <unknown> line 0 (ExitRunloop @ 0)  at /home/p6eval/niecza/lib/CORE.s… | ||
..rakudo a4c8c5: OUTPUT«use of uninitialized value of type Any in numeric context in block at /tmp/2YQuNE4M4A:11..0» | |||
colomon | rn: my $a = Any; say (1..$a).perl; | 19:09 | |
camelia | rakudo a4c8c5: OUTPUT«use of uninitialized value of type Any in numeric context in block at /tmp/nbYdZlmhnj:11..0» | ||
..niecza v24-42-g69a3432: OUTPUT«Use of uninitialized value in numeric context at /home/p6eval/niecza/lib/CORE.setting line 1356 (warn @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 294 (Any.Numeric @ 8)  at <unknown> line 0 (ExitRunloop @ 0)  at /home/p6eval/niecza/lib/CORE.s… | |||
FROGGS | jnthn: do you have time now? (I promise it won't take to long :o) | 19:11 | |
TimToady | nr: [&(&[+])] 1,2,3 | ||
camelia | niecza v24-42-g69a3432: OUTPUT«===SORRY!===Two terms in a row (preceding is not a valid reduce operator) at /tmp/w5nPflTWkx line 1:------> [&(&[+])] ⏏1,2,3Parse failed» | ||
..rakudo a4c8c5: OUTPUT«===SORRY!===Two terms in a rowat /tmp/XfS0HSkWqn:1------> [&(&[+])] ⏏1,2,3 expecting any of: postfix infix stopper infix or meta-infix statement end statement modifier state… | |||
dalek | ast: 6e3ee4d | (Solomon Foster)++ | S0 (6 files): Unfudge tests for Niecza. |
||
jnthn | FROGGS: Yes :) | 19:12 | |
FROGGS | cool | 19:13 | |
so, we have a per-package symbol table ($package.WHO) | |||
19:13
census joined
|
|||
jnthn | Yes. | 19:13 | |
FROGGS | which is a hash, key is the longname of the var/sub, value is its, well, "value" | ||
jnthn | Well, var/sub/type/constant/whatever :) | 19:14 | |
it's actually a Stash | |||
r: say (package foo { }).WHO.WHAT | |||
camelia | rakudo a4c8c5: OUTPUT«(Stash)» | ||
moritz | but Stash isa Hash :-) | ||
jnthn | r: say (package foo { }).WHO.^mro | ||
camelia | rakudo a4c8c5: OUTPUT«(Stash) (Hash) (EnumMap) (Iterable) (Cool) (Any) (Mu)» | ||
jnthn | Which is a kind of Hash with diddles. :) | ||
FROGGS | k, so it behaves like a hash | ||
diddles O.o? | |||
okay, I'll read what a stash is later | |||
jnthn | I think it overrides at_key for some reason | ||
Just look at Stash.pm. | |||
FROGGS | will do | 19:15 | |
jnthn | Though I think it has an extra method in jvm-support branch | ||
FROGGS | so, in perl5, there is a bit more within the symbol table, for example the package from where a variable was imported | ||
timotimo | i've read somewhere that putting lots of hashes into your compiler or runtime guarantees for bad performance. does rakudo or nqp have that problem? | ||
FROGGS | package-name | ||
TimToady | nr: say [[&infix:<+>]] 1,2,3 | ||
camelia | niecza v24-42-g69a3432: OUTPUT«6» | 19:16 | |
..rakudo a4c8c5: OUTPUT«===SORRY!===Unable to parse expression in bracketed infix; couldn't find final ']'at /tmp/qs9aGp9G3I:1------> say [[&⏏infix:<+>]] 1,2,3» | |||
jnthn | Adding the name is probably easy. | ||
FROGGS | and, in perl5 the key is not the longname, but the desigilname, so $var, %var, @var and &var are stored within the same slot for some reason | 19:17 | |
jnthn | Why does it track where things were imported from? | ||
FROGGS | I dont think we actually want/need that, but just wanted to say | ||
jnthn | I'm pretty sure we should not be storing them under the desigilname in Perl 6. :) | ||
timotimo: Well, package lookups at runtime are not an especially common case. | |||
FROGGS | jnthn: redeclaration of symbol X, it was already imported from Y or similar | ||
so, now my questions: | 19:18 | ||
jnthn isn't sure he gets the redeclaration issue; either it's the same thing, or it's a different thing. :) | |||
timotimo | jnthn: and lexical variables are looked up more cleverly through lexpads? | ||
jnthn | timotimo: Lexpads on Parrot are hash-based, but it can optimize things in the current block to a register access. | ||
timotimo | i suppose the lookup is made at compiletime and a more direct kind of access? | 19:19 | |
ah, okay | |||
jnthn | timotimo: The JVM impl is smarter and resolves most things to an index. | ||
FROGGS | why it is a problem to do the autovivify thing for our-vars, and add the lookups properly? | ||
jnthn | What is "the auto-vivifying thing"? | ||
FROGGS | r: our @var; say @var.WHAT | ||
camelia | rakudo a4c8c5: OUTPUT«(Any)» | ||
jnthn | At the moment, though, I suspect that a Stash does the same kind of auto-viv as a nomrla Hash. | 19:20 | |
I mean, if you do | |||
FROGGS | err, it doesnt do that yet... | ||
jnthn | Sure it does | ||
FROGGS | hold on, I'll grab for the right word | ||
jnthn | r: my %h; say %h<@a>.WHAT | ||
camelia | rakudo a4c8c5: OUTPUT«(Any)» | ||
jnthn | I think what probably *should* happen is that, at compile time, we install the correct kind of container (be it scalar, array, or hash) | 19:21 | |
Just like we do for lexicals. | 19:22 | ||
FROGGS | here: if I declare a my-var, it reifies correctly | ||
so, I've stolen this code, and it reifies correctly to an array or hash so I can assign to it when declaring | |||
but for this, I have to comment out the symbol lookup code | 19:23 | ||
19:23
thou left
|
|||
FROGGS | Perl6::Actions line 1924 that is | 19:23 | |
jnthn | And you'll probably also find that you have turned it into a lexical, and it's not stored in the package. :) | ||
FROGGS | ya, looks like | 19:24 | |
jnthn | I think that what needs to happen at block entry is just binding the lexical to the thing in the package, so it's a lexical alias to the thing in the package. | 19:25 | |
I think we may even do that bit today | |||
The missing piece is that we don't install anything in the package at compile time. | |||
FROGGS | ya, my last patch just installed something at a place from what I thought it is the package | ||
right? | |||
19:26
thou joined
|
|||
jnthn | Um, where is your last patch? | 19:26 | |
FROGGS | talking about this commit: github.com/rakudo/rakudo/commit/ff...02f226b166 | 19:28 | |
jnthn | oh | ||
FROGGS | so, I have to put it in $package.WHO, and add the reify-code to the place called $pkg there? | ||
jnthn | That patch looks like a confusion of compile time and runtime. | ||
No, you should not be generating code to do anything other than binding the lexical to the container in the package. | 19:29 | ||
The container should be installed in the package at compile time. | |||
Into $*PACKAGE.WHO | |||
Like install_lexical_container installs into the lexpad at compile time. The difference being that lexpads clone those per entry, whereas there's only one package. | |||
r: package Foo { { our $x = 42; }; say $x } | 19:30 | ||
camelia | rakudo a4c8c5: OUTPUT«42» | ||
jnthn | That is *wrong*. | ||
And I think ffe441f is to blame. | |||
FROGGS | why is that wrong? | ||
jnthn | Because $x is not in scope there. | 19:31 | |
moritz | because $x is just a lexical alias to $Foo::x | ||
jnthn | our declares a *lexical* alias. | ||
moritz | and the lexical isn't allowed to leak from its scope | ||
19:31
thou left
|
|||
moritz is surprised we don't have a spectest for that | 19:31 | ||
FROGGS | so only this is allowed to work? package Foo { { our $x = 42; }; say $Foo::x } | 19:32 | |
moritz | yes | ||
FROGGS | ahh | ||
I always thought I dont need to prefix the package-name I'm in | 19:33 | ||
TimToady | I believe it's currently specced that the = 42 happens at INIT time | 19:34 | |
moritz | p5eval: use strict; { our $x = 5 }; print $x | ||
p5eval | moritz: ERROR: Global symbol "$x" requires explicit package name at (eval 7) line 3. | ||
moritz | even p5 does it with lexical aliases | ||
FROGGS | O.o | 19:35 | |
okay | |||
TimToady | and if we allow initializers on 'our', we should probably warn if some location is initialized to two different values | ||
jnthn | Should multiple "our $x" declarations warn? | 19:37 | |
(even without an initializer)? | |||
TimToady | no, I don't think so | ||
dalek | kudo/nom: 37c7620 | (Tobias Leich)++ | src/core/Cursor.pm: dont't treat array references as arrays in regexes They will be stringified instead, and must be dereferenced to be arrayish. |
||
moritz | r: my $x; my $x | ||
camelia | rakudo a4c8c5: OUTPUT«Potential difficulties: Redeclaration of symbol $x at /tmp/s_kBIlWPRK:1 ------> my $x; my $x⏏<EOL>» | ||
jnthn | Actually it's not clear to me how to warn for the initializer but not for the declaration. | ||
TimToady | well, two our in the same scope, sure | ||
std: our $x; our $x | 19:38 | ||
camelia | std b33d8e0: OUTPUT«ok 00:00 42m» | ||
TimToady | well, maybe not :) | ||
jnthn | :) | ||
FROGGS | I think I have enough information to go ahead... | 19:39 | |
thanks, y'all | |||
TimToady | our $x; INIT { $x.defined and $x !=== 42 and warn "\$x initialized to both $x and 42"; $x = 42 } | 19:40 | |
something like that | |||
jnthn | Needs care if the initializer has side-effects, but yes | 19:41 | |
TimToady | or less LTA "42 overrides previously initialized value of $x" | 19:42 | |
FROGGS | but that is obvious, 42 overrides everything | ||
TimToady | you have a tremendous grasp of the obvious :) | ||
FROGGS | *g* | 19:43 | |
TimToady: why does p5 have this (in my eyes weird) symbol table? is it because of the sigil-changing nature of p5? | 19:46 | ||
ingy *grasps* for air | 19:48 | ||
TimToady | partly that, and partly a premature space optimization | ||
dalek | p/rak-jvm-support: d37930f | jnthn++ | src/vm/parrot/ (2 files): Turn various lexical lookups into nqp:: ops. These were Perl 6 ops before, but aren't really Perl 6 specific and probably would be easier to optimize here. |
||
FROGGS | k, thanks | ||
TimToady | also some early operators mistakenly related values with the same desigilname | 19:49 | |
moritz | open FOO; | 19:50 | |
(short for open FOO, $FOO) | |||
TimToady | like that, yeah | ||
FROGGS | moritz: that is exactly the point where I hit this weirdness lately | 19:51 | |
you pass a thing called filehandle to open, which is (so I have learned) a reference to the symbol table entry | |||
moritz | iirc you can also do push a, 42; and have it automatically push to @a | 19:52 | |
FROGGS | but this symbol table entry can contain the other vars of the same desigilname as well | ||
TimToady | which is why sometimes it's hard to tell the difference between FOO and *FOO | ||
19:52
berekuk left
|
|||
FROGGS | and I have to support that these days >.< | 19:52 | |
moritz | p5eval: push a, 42; \@a | ||
p5eval | moritz: [42] | ||
FROGGS | ohh man | ||
moritz | but that warns iin my environment | 19:53 | |
TimToady | obviously it means the array, since you're doing a push :) | ||
FROGGS | hehe, yeah | ||
TimToady was differently stupid back then | |||
FROGGS .oO( and there is this 42 again..., obviously... ) | |||
19:54
berekuk joined
|
|||
TimToady wonders why they skipped 5 and just use 2, 3, and 7... | 19:54 | ||
FROGGS scratches his chin but can't make sense of that | 19:56 | ||
moritz | r: say [*] 2, 3, 7 | ||
camelia | rakudo a4c8c5: OUTPUT«42» | ||
FROGGS | ohh | 19:57 | |
moritz | r: say (^8).grep: *.is-prime | ||
camelia | rakudo a4c8c5: OUTPUT«2 3 5 7» | ||
FROGGS takes his nerd-badge off | |||
PerlJam | .oO( We don't need no stinkin' badges! ) |
20:00 | |
20:03
kaare_ left
20:07
Rix left
20:08
lizmat left
|
|||
cognominal | In a grammar with the appropriate braid set, why could not use <Regex.Nibler> as a short for <.LANG('Regex','nibbler')> ? Is there already a meaning for that syntax? | 20:08 | |
jnthn | LANG is quite coupled to having a %*LANG. It's not part of Cursor itself; it's part of the compiler infrastructure that comes from HLL::Grammar. | 20:09 | |
If you just want to call a rule in another grammar, there is <GrammarName::rulename> iirc | 20:10 | ||
20:10
Rix joined
|
|||
cognominal | yes, that why I talked of braid. | 20:10 | |
So why using %*LANG if there is already another syntax? | 20:11 | ||
what is the benefit, except possibly overriding %*LANG deeper in the grammar, which is not done as far I understand | 20:13 | ||
20:13
domidumont joined
|
|||
cognominal | anyway, having <.LANG(…)> is already nice. | 20:13 | |
colomon | rn: say 'b' ~~ %( a => 1, b => 0) | ||
camelia | rakudo 37c762, niecza v24-42-g69a3432: OUTPUT«True» | 20:14 | |
TimToady | does <GrammarName::rulename> rebless the cursor into the other grammar? | 20:16 | |
jnthn | cognominal: %*LANG is about the actions | ||
TimToady | if not, it could have surprising dispatches internally | ||
jnthn | TimToady: rebless doesn't really make sense, but it does create a cursor of the correct type, yes. | ||
TimToady | what I meant | ||
jnthn | Yeah :) | ||
20:16
thou joined
|
|||
TimToady | "the cursor" makes about as much sense as "the electron" does in QM | 20:17 | |
jnthn | :) | ||
dalek | ast: 731db03 | jnthn++ | S32-io/io-path- (2 files): Fix fudging of IO::Path tests. It is io-path-unix.t that has hangs on Windows, not io-path-win.t. |
20:18 | |
jnthn | labster: Please see 731db03 when you get chance; seems I miscommunicated what was hangin' on Win32 yesterday. | 20:19 | |
labster: I fudged the exact two that hang. | |||
dalek | kudo/jvm-support: 70f1e4e | jnthn++ | src/Perl6/Actions.nqp: Start refactoring $_ handling. This refactors the routine case, but not the general block case. The aim is to eliminate special casing of $_ in Perl6Lexpad. |
||
kudo/jvm-support: c17d5bd | jnthn++ | src/ (3 files): Switch to use new nqp:: ops. |
|||
labster | Oh. Thanks. Actually, you communicated it right, I just did it wrong. | 20:20 | |
dalek | kudo/jvm-support: cff67a3 | jnthn++ | src/vm/parrot/ops/perl6.ops: Elimiante dynops moved to NQP level. |
||
jnthn | labster: ah, ok. I was so tired after the travel yesterday... ;) | ||
Assume dit was me. :) | |||
labster | I investigated the cause, and then fudged, so I forgot what I was doing, I guess. | 20:21 | |
colomon | \o/ | ||
[Coke] | colomon? | ||
colomon | [Coke]: just excited to see jnthn++ hard at work. :) | 20:22 | |
labster | jnthn: since I have your attention, can a fellow get a commit bit to rakudo? | ||
I sent in the CLA last month. | 20:23 | ||
20:23
Guest20215 is now known as ajr
|
|||
[Coke] | .seen allison? | 20:23 | |
yoleaux | I haven't seen allison? around. | ||
[Coke] | .seen allison | ||
yoleaux | I haven't seen allison around. | ||
pmichaud | labster: commitbit coming up | ||
moritz | labster: jnthn already approved via email; now somebody (I think pmichaud) just has to actually give you one | ||
20:23
ajr is now known as Guest58766
|
|||
moritz | I don't think I have the permissions | 20:23 | |
cognominal | pmichaud, jnthn, so, if I want to use some NQP grammar rules and their associated actions in my own language, do I have do do something else between setting the braid by updating LANG in the TOP rule and calling them using <.Lang('NQP', 'somerulename')> ? | 20:24 | |
s/language/grammar/ | |||
pmichaud | moritz: I'm pretty sure you have permissions... could you go ahead and grant the commitbit to verify that you do? | ||
cognominal | ...and importing NQPHLL | ||
20:25
Guest58766 left
|
|||
cognominal | s/between/besides/ | 20:25 | |
pmichaud | cognominal: I don't know. I don't know that anyone has tried to use the NQP rules from another language. | 20:26 | |
20:26
ajr_ joined
|
|||
pmichaud | inheriting from HLL::Grammar and HLL::Actions is pretty standard, but haven't tried using the NQP equivs yet. | 20:28 | |
cognominal | NQP already uses Regex rules, but that's a little different. | ||
20:29
domidumont left
|
|||
grondilu | rn: (my @A)[0] = *; @A[2] := (@A[0,1]); @A[0] = "foo"; say @A[2]; # trying to put intra-array references in an array | 20:30 | |
camelia | rakudo 37c762, niecza v24-42-g69a3432: OUTPUT«foo (Any)» | ||
grondilu is amazed this actually works | |||
jnthn | cognominal: LANG requies that %*LANG has an entry for the thing you want to switch to. | 20:34 | |
cognominal | yes, I know that | ||
jnthn | %*LANG<NQP> := nqp::getcomp('nqp').parsegrammar; # or so may do it | ||
And similar for NQP-actions | 20:35 | ||
cognominal | so %*LANG<MAIN> := NQP::Grammar; will not be sufficient | 20:36 | |
jnthn | Well, that makes your main language be NQP | ||
cognominal | oops I meant | ||
jnthn | I don't think you have NQP::Grammar in scope. | ||
cognominal | so %*LANG<NQP> := NQP::Grammar; will not be sufficient | ||
jnthn | That'd be a confusion of running compiler and running program. | ||
Which we musn't do, otherwise we are in epic trouble for bootstrapping :) | |||
pmichaud | well, *we* can't do it because of bootstrapping, but other languages aren't bootstrapping :) | 20:37 | |
jnthn | pmichaud: Oh, sure, just explaining why NQP::Grammar ain't automatically in scope. | 20:38 | |
pmichaud | right. | ||
jnthn | Unfortunately you can't just "use NQP" either to get them. | ||
cognominal | that's for my AST generating language. But I think the rule I will use is pretty safe except if the user type :$a | ||
pmichaud | when a compiler for XYZ is running, the NQP compiler isn't automatically loaded. It'd have to be use'd or otherwise loaded first. | ||
jnthn | Well, you can in another compiler probably... | 20:39 | |
cognominal | in that case it will need the context to find a variable. | ||
jnthn | If you're pre-compiling. | ||
20:39
Moukeddar joined
|
|||
cognominal | …and that's the problem jnthn describes | 20:39 | |
Moukeddar | o/ #perl6 | ||
masak | Moukeddar! \o/ | 20:42 | |
sorear | o/ | 20:46 | |
cognominal | jnthn, for your trick to work, I would need to write a modified compunit that receive as parameter the rule to call. statmenlist in the case of nqp, and colonpair in my cade. | 20:51 | |
jnthn, thx you, you helped very much | |||
21:01
skids left
21:05
Subterra is now known as Kelder
|
|||
dalek | kudo/jvm-support: deba5d3 | jnthn++ | src/Perl6/ (2 files): Another step on the $_ cleanups. This should mean that the code path for a null $_ in Perl6Lexpad PMC is never hit. Seems we get one test failure from this. |
21:06 | |
kudo/jvm-support: 210d023 | jnthn++ | src/ (6 files): Eliminate Perl6Lexpad PMC's magical $_ handling. |
|||
kudo/jvm-support: 4855dd8 | jnthn++ | src/Perl6/World.nqp: Fix POST block regression. |
|||
jnthn | TimToady: For S12's interface consistency section, do we just want to make sure that leftover named arguments are accepted, or is the creation of a *%_ important? | 21:09 | |
TimToady: That is, what it the default is an anonymous *% parameter? | 21:10 | ||
TimToady: This would mean we don't need to actually bind a %_ variable. | |||
pmichaud | jnthn: istr that %_ was only necessary if it was used. | ||
jnthn | pmichaud: I don't see anything in the S12 section that says that | 21:11 | |
pmichaud: Also, what does "used" mean? | |||
pmichaud | used as in "appears in source", I think. | ||
jnthn | That is a good general question for optimization, in fact. | ||
method foo() { eval('say %_'); } # what about this, for example... | 21:12 | ||
pmichaud | I'd think that's DIHWIDT. | ||
jnthn | MY::<%_> ? | ||
pmichaud | it's similar to @_ in that respect, I think. | ||
jnthn: S06:327 might be relevant. | 21:13 | ||
jnthn | looking | ||
pmichaud | "depending on whether either or both of those variables are used in the body of the routine. | ||
jnthn | That seems to be about the use of %_ as a placeholder, which I'd considered a different case so far. | 21:14 | |
Well, a usage in the same class as placeholder-y things, anyway. | |||
pmichaud | right, but given | ||
sub foo { ... } | |||
would foo( :named ) be valid or invalid? | 21:15 | ||
jnthn | Invalid. | ||
21:15
SmokeMachine left
|
|||
pmichaud | rn: sub foo { ... }; say foo(1); # checking | 21:15 | |
jnthn | But for methods .foo(:named) is always valid (modulo "is hidden") | ||
camelia | rakudo 37c762: OUTPUT«===SORRY!===CHECK FAILED:Calling 'foo' will never work with argument types (int) (lines 1, 1) Expected: :()» | ||
..niecza v24-42-g69a3432: OUTPUT«Unhandled exception: >>>Stub code executed at /tmp/dtSWr4mG9M line 1 (foo @ 4)  at /tmp/dtSWr4mG9M line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 4329 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4330 (module-CORE @… | |||
21:15
bluescreen100 left
|
|||
pmichaud | okay... yes, it's different. | 21:16 | |
jnthn | Trouble is that at the moment we do some...magic...on %_ to try and reduce the cost. | ||
But it's (a) ugly, (b) hurts access to %_, and (c) a complete nightmare to port. | 21:17 | ||
Whereas I'd prefer to have a way to know to just not bind a %_. | |||
S12 seems to want to accept unknown named args, which a *% would do without binding anything. | |||
FROGGS | do we need that too? github.com/noidontdig/gitdown | 21:18 | |
jnthn | We can of course try to catch/simplify this in the optimizer, but it's nice if we don't have to ;) | ||
21:18
donaldh joined
|
|||
pmichaud | well, if %_ could be created but populating it could be deferred until actually used, that might work okay. but that might be messy, too. | 21:18 | |
jnthn | That's effectivley what we do today and it is icky. | 21:19 | |
21:19
sqirrel joined
|
|||
pmichaud | how much does it save us? | 21:19 | |
jnthn | One object allocation per method call... | ||
pmichaud | that's it? | 21:20 | |
jnthn | Yes. | ||
It's every method call, of course. | |||
pmichaud | right, but we already do a lot of allocations. Not sure one more will hurt. | ||
jnthn | but it costs us an entire extra attribute per QAST::Var node. | ||
no, wait | |||
That's not true. | |||
21:20
SmokeMachine joined
|
|||
jnthn | It's an extra entry in the symbol table. | 21:20 | |
Still, it's a little fragile. | 21:21 | ||
And it only works at all because all Parrot lexical lookups are, optimization aside through strings. | |||
On the JVM I've no equivalent of the LexPad PMC. | |||
And I've no desire to have that. | |||
diakopter | I didn't think we did lots of allocations on method calls | ||
pmichaud | what does the extra attribute per QAST::Var have? | ||
diakopter | oh wait what channel/year is this | 21:22 | |
jnthn | I misspoke; there isn't one. | ||
pmichaud | okay. | ||
jnthn | It's the :lazyinit thing that goes in the .symbols hash. | ||
Which I would also not be sad to lose. | |||
pmichaud | anyway, might be worth removing the %_ optimization and see what hurts. | ||
jnthn | It's kinda hard to keep. | 21:23 | |
I'd rather toss the current one and find a way to win it back through some kind of analysis. | |||
pmichaud | works for me, definitely. | ||
unless toss the current one means we go back to 2010-era slowness. | |||
jnthn | If one extra allocation per method call (until I elimiante it) does that, we're in trouble... | 21:24 | |
pmichaud | exactly. | ||
anyway, I'm fine with always generating the %_ parameter. We probably want it for introspection anyway. | |||
jnthn | And maybe TimToady++ will backlog this and decide that *% is enough :) | ||
pmichaud | *% can work too. | ||
I have to go do other stuff for the evening... be back tomorrow | 21:25 | ||
jnthn | OK. | ||
I had one other question, but it can wait. | |||
21:25
gdey joined
21:26
Kelder is now known as Ayiko
21:32
dmol left
21:35
sjohnson left
21:36
sjohnson joined
21:37
kurahaupo joined
|
|||
ajr_ | Which synopsis deals with the "special" variables? (Specifically, any equivalent to $. ) | 21:38 | |
masak | ajr_: S28. | ||
ajr_ | Thanks | ||
jnthn | raw.github.com/perl6/specs/master/...-names.pod | ||
FROGGS | r: say $. | 21:43 | |
camelia | rakudo 37c762: OUTPUT«===SORRY!===Non-declarative sigil is missing its nameat /tmp/RxnCNA26Rb:1------> say $⏏. expecting any of: argument list prefix or term prefix or meta-prefix» | ||
FROGGS | you get a hint for some of them: | 21:44 | |
r: say $@ | |||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Non-declarative sigil is missing its nameat /tmp/pKITiyX4Y3:1------> say $⏏@ expecting any of: argument list prefix or term prefix or meta-prefix» | ||
FROGGS | hmmm | ||
r: try 'failed!!'; say $@ | |||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Non-declarative sigil is missing its nameat /tmp/MSeonUss8K:1------> try 'failed!!'; say $⏏@ expecting any of: argument list prefix or term prefix or meta-prefix» | ||
FROGGS | ? | ||
r: try 'failed!!'; say $@; | 21:45 | ||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Unsupported use of $@ variable as eval error; in Perl 6 please use $!at /tmp/NT_LroV8k3:1------> try 'failed!!'; say $@⏏;» | ||
FROGGS | ahh, there you go | ||
r: say $.; | |||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Unsupported use of $. variable; in Perl 6 please use the filehandle's .line methodat /tmp/bfm7owJKNF:1------> say $.⏏;» | ||
sorear | n: say $. | 21:47 | |
camelia | niecza v24-42-g69a3432: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/yvOVlOwK1s line 1:------> say ⏏$.Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /t… | ||
sorear | n: say $@ | ||
camelia | niecza v24-42-g69a3432: OUTPUT«===SORRY!===Unsupported use of $@ variable as eval error; in Perl 6 please use $! at /tmp/TXSrlrwQKK line 1 (EOF):------> say $@⏏<EOL>Parse failed» | ||
21:48
rindolf left
21:50
PacoAir left
|
|||
ajr_ | Is $*IN.input_record_number() NYI ? | 21:57 | |
flussence | well it's not in rakudo/src anywhere, so it seems not | 21:58 | |
ajr_ | tx | ||
21:59
kurahaupo left
|
|||
FROGGS | r: say $*IN.^methods | 22:00 | |
camelia | rakudo 37c762: OUTPUT«open close eof get getc lines read seek tell write opened t print slurp copy chmod Str flush d e f l r s w x z modified accessed changed say <anon> <anon> <anon>» | ||
22:01
pmurias_ joined,
pmurias_ left,
pmurias joined
|
|||
pmurias | jnthn: re %_ read the whole paragraph | 22:01 | |
jnthn | pmurias: In S12? | 22:02 | |
22:02
lustlife left,
kurahaupo joined
22:03
Moukeddar left,
mucker left
|
|||
jnthn | pmurias: I did, a couple of times. I don't see anything that I missed :) | 22:03 | |
pmurias | I missed the fact that methods accept unspecifed named argument ;) | ||
but for subs we should only put the %_ into signature if mentioned | 22:04 | ||
jnthn | Correct; I was just talking about methods here. | ||
The sub case is already handled correctly afaik. | 22:05 | ||
Well, so is the method case, it's just a matter of optimization/optimizability. | |||
pmurias | is %_ a contextual? | ||
jnthn | No | ||
dalek | kudo/jvm-support: 7dc4bdc | jnthn++ | src/ (6 files): Eliminate %_ magic in Perl6LexPad. |
||
kudo/jvm-support: 1082c07 | jnthn++ | src/Perl6/Actions.nqp: Elimiante final lazyinit mention. |
|||
pmurias | so we could optimize it away in the absence of eval/MY | 22:06 | |
(if it's not used othewise) | |||
dalek | p/rak-jvm-support: 9a087d2 | jnthn++ | src/vm/parrot/QAST/Compiler.nqp: Kill off lazyinit thing we no longer need. It was always a bit of a hack, anyway. |
||
jnthn | Yeah. We could do with knowing the rules for such things. | ||
The pseudo-package usages we can spot without too much trouble. | 22:07 | ||
But eval is trickier, especially the method form of it. | |||
jnthn wonders why we have a method form of eval... :) | 22:08 | ||
pmurias | how does it look like? | ||
jnthn | "foo".eval | ||
pmurias | shouldn't we get rid of that? ;) | ||
jnthn | That's a language design question I guess. :) | 22:09 | |
sorear | %_ is pretty lazy though, does it really cost that much? | 22:10 | |
oh, jnthn is removing the lazy %_ optimization? what? | |||
jnthn | But it's one that needs considering in so far as we already made CALLER:: restricted so we can optimize lexicals away, but not knowing what an eval may happen kinda scuppers that. | ||
22:10
sqirrel left
|
|||
jnthn | sorear: The optimization was unportable and depended on being able to hook lexical lookups by name. | 22:11 | |
sorear | let's add a tcl-like uplevel() | ||
:) | |||
jnthn | sorear: I'd rather do the optimization through realizing %_ is never used | 22:12 | |
(And turn it into *%) | |||
sorear | jnthn: can't you generate special code for %_ lookups that autovivifies? | ||
jnthn | sorear: I can but...ick. | ||
colomon used the method form of eval sometime in the last week... | |||
jnthn | sorear: Trouble is that it spreads all over. Like, into MY:: and OUTER:: and eval. | ||
sorear | jnthn: You seem to be turning into me. Stop it. :D | ||
pmurias | jnthn: so with the current language design to optimize away lexicals we will have to determine the possibility of a function/method being eval in disguise? | 22:18 | |
jnthn | pmurias: Well, that's kinda my question: how do we determine that? I think the answer probably wants to be spec. | ||
sorear doesn't want to rule out the possibility of uplevel() | 22:19 | ||
though this may fall under "all's fair if you pre-declare" | |||
jnthn | sorear: Yeah. Lexical stuff (like eval) is pretty fine to analyze. It's method-y things that are too late bound. | 22:20 | |
sorear | jnthn: tcl uplevel(2, "foo") does an eval("foo") in the lexical scope of CALLER::CALLER | 22:21 | |
pmurias | isn't writing uplevel in speced Perl6 impossible? | ||
jnthn | sorear: oh, my... | ||
sorear: I think the rules about CALLER:: and its interaction with anything not marked "is dynamic" already creates "fun" for that one. | |||
Though, predeclaration to make everything "is dynamic" could potentially cut it... :) | 22:22 | ||
pmurias | eval ignores "is dynamic" so we might as well have uplevel ;) | 22:23 | |
masak | 'night, #perl6 | ||
diakopter | o/ | ||
pmurias | is there much demand for having eval first class? making it syntactical would help with it violating "is dynamic" | 22:25 | |
diakopter | pmurias: but... how would that help anything? you want the compiler to try to predict what code will end up in it? | 22:30 | |
but if you're saying making it syntactical would merely prevent the &eval symbol from being declared so that the compiler knows when it sees an eval, there's an eval there, that can already be statically determined, or at least conservatively guessed. | 22:32 | ||
sorear | diakopter: cannot be conservatively guessed, unless you want to trigger on everyfunction call | 22:33 | |
any function symbol can be rebound to &eval at runtime | |||
diakopter | I was assuming that wouldn't be allowed either | ||
sorear | also, there's an eval method on Str | 22:34 | |
diakopter | (it wouldn't be a function object) | ||
oh yeah. | |||
sorear | so $foo."$method"() might cause an eval | ||
diakopter | oh, I confused myself and my point.. <grr, fail> | 22:36 | |
22:39
skids joined
22:43
lizmat joined
22:47
ajr_ left
|
|||
donaldh | jnthn: you have pull request :-) | 23:03 | |
23:04
Chillance left
|
|||
donaldh sleeps | 23:05 | ||
23:06
donaldh left
|
|||
grondilu spent half an hour trying to figure out the silliest error he's made in ages | 23:09 | ||
TimToady suspects .eval may be in the category of .WHAT | 23:10 | ||
grondilu | So I had an error about a value being "Any", which caused a problem. So in order to debug, I put a "warn $value.perl if $value ~~ Any;" | ||
After half an hour, I realized that Any matches pretty much anything: | |||
jnthn | Oops. Yes. | 23:11 | |
grondilu | rn: my $x = "foo"; say $x ~~ Any; | ||
camelia | rakudo 37c762, niecza v24-42-g69a3432: OUTPUT«True» | ||
diakopter | TimToady: that would help, yes, iiusorearc | ||
labster | r: my $path = "foo/bar".path; say ~$path ~~ ~$path.perl.eval; # .perl test | ||
camelia | rakudo 37c762: OUTPUT«True» | ||
23:11
berekuk left
|
|||
TimToady | nr: my $meth = 'WHAT'. say 42."$meth"() | 23:12 | |
camelia | niecza v24-42-g69a3432: OUTPUT«===SORRY!===Unsupported use of . to concatenate strings; in Perl 6 please use ~ at /tmp/0DR6cE_uzs line 1:------> my $meth = 'WHAT'. ⏏ say 42."$meth"()Parse failed» | ||
..rakudo 37c762: OUTPUT«===SORRY!===Unsupported use of . to concatenate strings; in Perl 6 please use ~at /tmp/TtXzw0TXwp:1------> my $meth = 'WHAT'. ⏏ say 42."$meth"()» | |||
TimToady | sigh | ||
diakopter | period as semicolon; giggle | 23:13 | |
23:15
berekuk joined
|
|||
TimToady | nr: my $meth = 'WHAT'; say 42."$meth"() | 23:15 | |
camelia | rakudo 37c762: OUTPUT«No such method 'WHAT' for invocant of type 'Int' in block at /tmp/OwZ3mB9sgd:1» | ||
..niecza v24-42-g69a3432: OUTPUT«Unhandled exception: Unable to resolve method WHAT in type Int at /tmp/uBId7EI1cC line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 4329 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4330 (module-CORE @ 583)  at /home/p… | |||
TimToady | nr: my $meth = 'eval'; say 42."$meth"() | 23:16 | |
camelia | rakudo 37c762, niecza v24-42-g69a3432: OUTPUT«42» | ||
labster | Maybe EVAL should be in capital letters too, as a warning that something is likely to go wrong there. | 23:18 | |
diakopter | n: my $foo := &goto; hi: $foo('hi') | ||
camelia | niecza v24-42-g69a3432: OUTPUT«(timeout)» | ||
TimToady | I don't mind if we break that | ||
jnthn | TimToady: I could live with .eval being specialer too | 23:19 | |
diakopter | also, expanded to .EVALUATERATIONISMISTIFICNESSMENTACIOUSLY() | 23:20 | |
jnthn | TimToady: Should we pick some trait to put on the proto for the eval sub, rather than treating the name "eval" specially? | ||
TimToady | postfix:<.eval> | 23:22 | |
diakopter | heh | 23:23 | |
23:24
pmurias left
|
|||
diakopter | TimToady: I'm sorry to keep asking this (if I have?), but why isn't the language inside postfix:<HERE> a regex slang-ish thing | 23:24 | |
maybe one that disallows whitespace or something, except postcircumfix, which requires one | 23:26 | ||
jnthn | .tell donaldh thanks for the PR; I need to tweak it a bit before I can apply it, as it seems spaces instead of tabs got into the Makefile and the .bat needs updating as well as the .sh runner. Otherwise seems fine...will get to it tomorrow | 23:27 | |
yoleaux | jnthn: I'll pass your message to donaldh. | ||
jnthn | Sleep time... 'night, #perl6 | ||
TimToady | diakopter: I have no idea what you're asking for... | ||
diakopter | a kitchen sink factory generator designer excavator | 23:28 | |
TimToady | a slang derives an entire language, which comprises many syntactic categories, but it may add methods in any category including postfix | 23:30 | |
but it makes little sense to talk about one category as a slang | |||
sorear | because the language inside <HERE> is a single-quoted quotewords string | ||
diakopter | sorear: :) I know what it is | ||
sorear | if you forbid whitespace in that, you break %hash<a b c> | 23:31 | |
which I use fairly often in p5 | |||
diakopter | sorear: but yes, I'm wondering why it's that and not prefix:/ this is my pattern for my prefix operator / | ||
23:32
lue joined
|
|||
sorear | because regexes are code and so not comparable | 23:32 | |
TimToady | oh, so that's what you mean by 'regex' | ||
this was not AT ALL clear | |||
sorear | name suffixes need to be comparable in order for MMD and explicit calling to work | ||
diakopter | but like I said, I suspected I have (or someone had) asked that before, but I just (like always) don't remember the answer | 23:33 | |
TimToady | all of the :<> :() etc forms are degenerate cases of :foo<> and :bar() | 23:34 | |
and the <> and () are optional in those cases | |||
so we can't allow :foo/stuff/ | 23:35 | ||
since / looks like an infix | |||
ergo, :// would have to be a very special case | |||
and we try to avoid those, feebly | |||
diakopter | hrm. going out on a twig here.., but | 23:39 | |
TimToady | and in general, if you really need to pick your quote for some reason, you can do :[ q/stuff/ ] | ||
diakopter | wait what | 23:40 | |
sorear | TimToady: I think diakopter was suggesting that it literally be a regex, because "is parsed" isn't good enough ? | ||
not just change the quote to / | |||
diakopter | nod | ||
TimToady | okay, now that I finally know what you mean, I'll have to think about it. :) | 23:41 | |
diakopter | I mean, it's a pattern, so.. or at least allow a level of indirection where it can refer to a named pattern | ||
TimToady | what is the use case? | ||
diakopter | family of similar operators | 23:42 | |
TimToady | that's a noun phrase, not a use case :P | ||
what's the verb? | |||
diakopter | eval("family of similar operators") | ||
TimToady | pretend I'm really stupid today | 23:43 | |
sorear | sub infix:/ '%' \w+ '%' / ($x, $y) { } # emulate R's generic infix syntax | ||
TimToady | oh, you mean in *declarations* | 23:44 | |
you never said that, I was thinking rvalue names | |||
23:44
quietfanatic joined
|
|||
TimToady | well, I've wanted 'method *' from time to time :) | 23:44 | |
diakopter adjusts the gamma rays away from Mountain View | 23:45 | ||
there, now you can read my mind better | |||
TimToady | this seems like a less powerful feature than supporting macros in syntax categories that can have 'is parsed' | 23:46 | |
diakopter | also, it might mean the operator's symbol table name isn't identical to its pattern, but has a more descriptive name | 23:47 | |
TimToady | or maybe 'is reparsed' in this case, so that it doesn't try to parse the <sym> automatically | ||
yes, another way of saying what I just said :) | |||
like the prefix:reduce rule that is really controlling '[' ~ ']' <infixish> | 23:48 | ||
but I'd rather get the generalized macro parsing mechanism hooked up than come up with a low-wattage sugar for some of it | |||
diakopter | while I'm dreaming, could this be how more alternations can be added to [wrapped around?] term in a slang? | ||
TimToady | sub term:<foo> already adds terms, I believe | 23:49 | |
or my \foo | |||
but we had other reasons for those bits of sugar | 23:50 | ||
nr: sub term:<foo> { 42 }; say foo + 2 | |||
camelia | rakudo 37c762, niecza v24-42-g69a3432: OUTPUT«44» | ||
TimToady | there you go | 23:51 | |
a new derived grammer with more term: entries | |||
diakopter | well sorta | ||
sorear | r: module Foo {}; BEGIN { for 'a'..'z' -> $l { FOO::EXPORT::DEFAULT::{'&term:<'~$l~'>'} = sub { "$l$l$l" } } }; import Foo; say x | 23:53 | |
camelia | rakudo 37c762: OUTPUT«===SORRY!===Could not find symbol '&DEFAULT'» | ||
TimToady | the subset of macros that can be parsed that can be thought of as fitting in 'function call' syntax are worth dealing with that way, but we need to be able to write macros that fire off on any category and proceed by 'is parsed' | ||
sorear | r: module Foo {}; BEGIN { for 'a'..'z' -> $l { FOO::EXPORT::{'&term:<'~$l~'>'} = sub { "$l$l$l" } } }; import Foo; say x | ||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Could not find symbol '&EXPORT'» | ||
sorear | r: module Foo {}; BEGIN { for 'a'..'z' -> $l { EXPORT::DEFAULT::{'&term:<'~$l~'>'} = sub { "$l$l$l" } } }; import Foo; say x | 23:54 | |
camelia | rakudo 37c762: OUTPUT«===SORRY!===Could not find symbol '&DEFAULT'» | ||
sorear | r: module Foo { BEGIN { for 'a'..'z' -> $l { EXPORT::DEFAULT::{'&term:<'~$l~'>'} = sub { "$l$l$l" } } } }; import Foo; say x | ||
camelia | rakudo 37c762: OUTPUT«===SORRY!===Could not find symbol '&DEFAULT'» | ||
diakopter | r: module Foo { BEGIN { for 'a'..'z' -> $l { $EXPORT::DEFAULT::{'&term:<'~$l~'>'} = sub { "$l$l$l" } } } }; import Foo; say q | 23:56 | |
camelia | rakudo 37c762: OUTPUT«» | ||
diakopter | O_O | ||
r: say q | |||
camelia | rakudo 37c762: OUTPUT«» | ||
diakopter | oh. | ||
sorear | r: module Foo { sub zz is export {}; BEGIN { EXPORT::DEFAULT::{'&term:<a>'} = 1 } } | 23:57 | |
camelia | rakudo 37c762: OUTPUT«===SORRY!===Error while compiling block : Error while compiling block (source text: "{ EXPORT::DEFAULT::{'&term:<a>'} = 1 }"): Error while compiling op p6store (source text: "="): Error while compiling op hllize: Error while compiling op callmethod (source text: … | ||
sorear | i think I may have found a bug | ||
diakopter | :D | ||
or 3 | |||
sorear | rn: say q | ||
camelia | niecza v24-42-g69a3432: OUTPUT«===SORRY!===No delimiter found at /tmp/dpsFCE7mEl line 1 (EOF):------> say q⏏<EOL>Parse failed» | ||
..rakudo 37c762: OUTPUT«» | |||
TimToady | r: say 42 ~ q | 23:58 | |
colomon | std: say q | ||
camelia | rakudo 37c762: OUTPUT«42» | ||
std b33d8e0: OUTPUT«===SORRY!===No delimiter found at /tmp/F_zp0DEQzy line 1 (EOF):------> say q⏏<EOL>Parse failedFAILED 00:00 41m» | |||
TimToady | well, rakudo doesn't use a quote nibbler quite like std or niecza | 23:59 | |
sorear | r: say q.perl | ||
camelia | rakudo 37c762: OUTPUT«␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀[␀␀␀0␀␀␀m␀␀␀S␀␀␀O␀␀␀R␀␀␀R␀␀␀Y␀␀␀!␀␀␀␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀[␀␀␀0␀␀␀m␀␀␀␀␀␀C␀␀␀o␀␀␀u␀␀␀l␀␀␀d␀␀␀n␀␀␀'␀␀␀t␀␀␀ ␀␀␀fxE2 |