»ö« 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 block␤at /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 row␤at /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 terminated␤at /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 terminated␤at /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 $stop␤at /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 row␤at /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␀␀␀z􏿽xE2
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 terminated␤at /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' ~~ set␤␤False␤»
..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:1␤␤0␤»
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«False␤True␤»
..rakudo a4c8c5: OUTPUT«True␤False␤»
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).:<[+]>⏏.say␤␤Unhandled 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 1␤␤Unhandled 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«123␤Unhandled 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 ==> instead␤at /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 ==> instead␤at /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,3␤␤Parse failed␤␤»
..rakudo a4c8c5: OUTPUT«===SORRY!===␤Two terms in a row␤at /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 loop␤Parse
..failed␤F…
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 row␤at /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,3␤␤Parse 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,3␤␤Parse failed␤␤»
..rakudo a4c8c5: OUTPUT«===SORRY!===␤Two terms in a row␤at /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:1␤␤1..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:1␤␤1..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,3␤␤Parse failed␤␤»
..rakudo a4c8c5: OUTPUT«===SORRY!===␤Two terms in a row␤at /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 name␤at /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 name␤at /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 name␤at /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 method␤at /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 failed␤FAILED 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␀␀␀ ␀␀␀f􏿽xE2