»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:04 LlamaRider left
tadzik I don't know of any 00:06
00:14 lichtkind joined 00:26 fgomez left
japhb grondilu: OpenGL bindings were already in the most-wanted bindings list at github.com/perl6/perl6-most-wanted...indings.md ; what did you update? 00:29
00:30 cognominal__ left
japhb timotimo_, not_gerd: I wrote the initial versions of the Parrot OpenGL bindings. There was such a vast API to wrap that I ended up writing a regex-based C header snarfer to gather everything I needed and generate the bindings (code, data, constants, etc.) 00:31
There's just a bloody lot there.
diakopter r: class F { also is F; } 00:33
p6eval rakudo 1c9939: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 97799 (src/gen/CORE.setting.pir:46529) (src/gen/CORE.setting:9487)␤called from Sub 'parents' pc 6770 (src/gen/perl6-metamodel.pir:3346) (src/gen/Metamodel.pm:647)␤called from Sub 'compute_mro' pc…
diakopter mrohaha
r: class ::F { ... }; class F is ::F { } 00:36
p6eval rakudo 1c9939: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 97799 (src/gen/CORE.setting.pir:46529) (src/gen/CORE.setting:9487)␤called from Sub 'parents' pc 6770 (src/gen/perl6-metamodel.pir:3346) (src/gen/Metamodel.pm:647)␤called from Sub 'compute_mro' pc…
diakopter hoohoohaha
r: role F { ... }; class F does F { } 00:38
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Method 'is_composed' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤»
diakopter heehee
I sense a fuzzing attack coming on
r: role F { ... }; class G does F { } 00:39
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤None of the parametric role variants for 'F' matched the arguments supplied.␤Cannot call ''; none of these signatures match:␤␤»
diakopter tralala 00:40
4 MLTA errors 00:41
00:41 fgomez joined 00:42 telex joined
diakopter r: role F { ... }; class G { ... }; class F { }; class G { } 00:44
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Method 'is_composed' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤»
00:45 kurahaupo joined 00:57 anuby joined 01:01 hypolin joined
diakopter r: class :: { }; ::(::) 01:03
p6eval rakudo 1c9939: OUTPUT«No such symbol 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 47::!UNIT_MARKER 51'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805
..(src/gen/CORE.setti…
diakopter the whole symbol is 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 47::!UNIT_MARKER 51'
?
cool symbol
r: ::(::) 01:04
p6eval rakudo 1c9939: OUTPUT«No such symbol 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 43::!UNIT_MARKER 51'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805
..(src/gen/CORE.setti…
diakopter oh; it's the stringification of the pseudostash 01:06
r: $:: 01:07
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤ResizablePMCArray: index out of bounds!␤»
diakopter ftw.
01:08 fgomez left
diakopter r: $/.$/ 01:11
p6eval rakudo 1c9939: OUTPUT«No such method 'Any' for invocant of type 'Any'␤ in at src/gen/BOOTSTRAP.pm:882␤ in any at src/gen/BOOTSTRAP.pm:879␤ in block at /tmp/JZG1LEmYnK:1␤␤»
diakopter die in bootstrap? o_O
01:15 fgomez joined
sorear some of the methods on basic types are defined in BOOTSTRAP.pm 01:15
presumably this is a die in the lexical scope of bootstrap, but not its dynamic scope
01:16 vaelxon left
[Coke] is bummed about google reader. 01:17
diakopter r: ()...() # heehee 01:25
p6eval rakudo 1c9939: OUTPUT«(timeout)» 01:26
diakopter n: ()...()
p6eval niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: Need something on the RHS␤ at /home/p6eval/niecza/lib/CORE.setting line 1490 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3333 (ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3338 (series-listop @ 18) ␤ at /ho…
01:26 fgomez left 01:29 census left 01:30 fgomez joined
grondilu japhb: I updated github.com/perl6/ecosystem/wiki/Mo...ed-Modules 01:32
01:32 census joined
japhb grondilu, did you notice the 'NOTE' at the top? ;-) 01:33
diakopter r: say .HOW.new[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0] 01:38
p6eval rakudo 1c9939: OUTPUT«Perl6::Metamodel::ClassHOW.new()␤»
diakopter (wtf)
PerlJam r: my $item = 42; say $item[0][0][0][0][0]; # same thing 01:39
p6eval rakudo 1c9939: OUTPUT«42␤»
diakopter yeah ok
r: say .HOW.new.Capture 01:40
p6eval rakudo 1c9939: OUTPUT«No such method 'has-accessor' for invocant of type 'NQPAttribute'␤ in method Capture at src/gen/CORE.setting:971␤ in block at /tmp/XuVde4Ezhf:1␤␤»
grondilu japhb: no, I did not. My bad. 01:41
japhb grondilu, no worries. Just teasing. :-) 01:42
01:44 lizmat left, araujo joined, araujo left, araujo joined 01:45 Liz joined 01:46 Liz is now known as Guest75059 01:49 census left 01:57 jerome left 02:02 grondilu left 02:03 sqirrel_ joined 02:07 sqirrel left, lichtkind left 02:19 swarley| joined 02:21 bowtie left 02:24 am0c joined
diakopter r: say $1111111111111111111111111111111111.WHAT 02:54
p6eval rakudo 1c9939: OUTPUT«(Failure)␤»
03:07 orafu left, orafu joined 03:19 dalek left, dalek joined, ChanServ sets mode: +v dalek 03:20 anuby left 03:22 anuby joined 03:35 gdey joined, gdey left 03:46 fgomez left 04:00 rking joined 04:04 fgomez joined 04:11 Cynede joined
Cynede So far I desired to use blocking packages and alternative deps for packaging panda and it's deps. 04:15
04:19 xorp joined 04:25 SamuraiJack joined
diakopter r: say $1111111111111111111111111111111111 04:36
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Any␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/XLGRKR3F0c:1␤␤»
TimToady n: say $1111111111111111111111111111111111 04:37
p6eval niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: weird object in sub_finish Int␤ at /home/p6eval/niecza/src/NieczaBackendDotnet.pm6 line 242 (StaticSub.finish @ 11) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 4257 (NieczaActions.comp_unit @ 15) ␤ at /home/p6eval/niecza/src…
diakopter p: say $1111111111111111111111111111111111
p6eval pugs: OUTPUT«␤»
TimToady n: say $111 04:38
p6eval niecza v24-33-gfc6d5fd: OUTPUT«(Any)␤»
diakopter r: say $2147483647
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
diakopter r: say $2147483648
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Any␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/sr5kYPTbMk:1␤␤»
04:39 quietfanatic joined
TimToady r: say $(2147483648*2) 04:39
p6eval rakudo 1c9939: OUTPUT«4294967296␤»
TimToady r: say $4294967296
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Any␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/NHR3_z0_xR:1␤␤»
TimToady r: say $::(2147483648*2) 04:41
p6eval rakudo 1c9939: OUTPUT«No such symbol '$::4294967296'␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/1kD7Ji57O_:1␤␤»
quietfanatic r: say $::(2)
p6eval rakudo 1c9939: OUTPUT«No such symbol '$::2'␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/BzJzYTPa7g:1␤␤»
quietfanatic r: say ::<$2>
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
quietfanatic r: say ::<$111111111111111> 04:42
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
TimToady r: 'foo' ~~ /(.)(.)(.)/; say ::<$2>
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
04:42 davidagain left
TimToady r: 'foo' ~~ /(.)(.)(.)/; say $::<$2> 04:43
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤ResizablePMCArray: index out of bounds!␤»
TimToady r: 'foo' ~~ /(.)(.)(.)/; say $::<2>
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤ResizablePMCArray: index out of bounds!␤»
TimToady r: 'foo' ~~ /(.)(.)(.)/; say $::(2)
p6eval rakudo 1c9939: OUTPUT«No such symbol '$::2'␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/ga9todl4Dp:1␤␤»
TimToady r: 'foo' ~~ /(.)(.)(.)/; say $/[2]
p6eval rakudo 1c9939: OUTPUT«「o」␤␤»
TimToady r: 'foo' ~~ /(.)(.)(.)/; say $()
p6eval rakudo 1c9939: OUTPUT«foo␤»
quietfanatic r: 'foo' ~~ /(.)(.)(.)/; say $1111111111111111 04:44
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Match␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/xeFs4guoFl:1␤␤»
Cynede perl6 channel feels so perl
TimToady well, the same idiot designed both of them :) 04:45
quietfanatic Cannot use noun perl as adjective at 21:44
Cynede TimToady does Allison work on perl now?
TimToady not much
diakopter r: my $m=Match.new; nqp::bind_pos($m, $_*1000, 5) for 1..214748; 04:46
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Error while compiling op bind_pos: No registered operation handler for 'bind_pos'␤»
Cynede TimToady Is there some reason why all modules must be reinstalled with rakudo update?
04:47 preflex left
TimToady we don't guarantee binary compatibility yet 04:47
04:47 preflex_ joined
TimToady that's one of the reasons p5 development slowed to a crawl 04:48
quietfanatic do modules generally have a compiled component?
04:48 preflex_ is now known as preflex
Cynede I've got same quesiton 04:48
TimToady beats me :)
Cynede why do I need reinstall the text
quietfanatic And if so, I'd think they could be automatically recompiled in the same way they were initially compiled
TimToady I don't think any of the module system experts are awake at the moment 04:49
Cynede TimToady who are module system experts? :)
TimToady "Not I!" said the pig.
Cynede -_-' 04:50
TimToady may I join Perl6? :D
diakopter r: my $m=Match.new; say $m[11111111111111111111111111111111111111111111111111111]
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
TimToady the question is, can we stop you? :) 04:51
diakopter Cynede: yes, just type /join #perl6
Cynede TimToady github organization? :P
TimToady you should use "organization" in the same utterance as "TimToady"
*shouldn't 04:52
my n't key is broken again...
Cynede :S
TimToady same utterance? 04:53
diakopter moritz: tell phenny tell moritz can you add me to admin the perl6 org plz
moritz: tell phenny ask moritz so we can add folks while you're asleep 04:54
04:57 kivutar joined
diakopter p6eval: use Inline::JavaScript; { setInterval(function(){ 'phenny: are you alive' }, 5000050) } 04:57
Cynede I know -_-' we need recompile text modules because it's -Ofun :D
diakopter Cynede: moritz will be glad to add you in a couple hours when he awakens 04:58
Cynede diakopter really? That could be awesome !!! because I just use perl for about week or 2 weeks
diakopter rakudo is in a separate org; it requires a signed CLA 04:59
Cynede diakopter Contributor License Agreement ? 05:00
diakopter yep something like that
Cynede diakopter I see but I need to learn some parrot first . 05:01
diakopter nah
you mentioned you wanted to help with speed
Cynede diakopter yes )
diakopter long term, the best way to do that is to work on the optimizer, which is written in NQP 05:02
(a micro subset of Perl 6)
quietfanatic Is it still too early for me to say Parrot is dying?
05:02 _jaldhar joined
Cynede can't remember how to get nickname back from temprary unavailable 05:02
TimToady thinks it's too late to say that... :) 05:03
Cynede quietfanatic that sounds sad?
quietfanatic I...dunno. Never mind.
diakopter Cyenede: /msg nickserv ghost $nick $password 05:04
Cynede diakopter doesn't help ) 05:05
05:05 Cynede is now known as Heather
diakopter try recover instead of ghost 05:05
Heather diakopter there is release
diakopter quote NickServ release $nick $password
05:06 raiph joined
Heather How can I create simple code wrapper 05:07
alike surroundX { .... } which will do something at start of block and in the end 05:08
diakopter Heather: see perl6advent.wordpress.com/2011/12/0...character/
for an example
.wrap and callwith 05:09
05:09 mikemol joined
Heather diakopter I want something alike C# "using" for disposible objects, like I don't want to care about closing file 05:09
diakopter ok; maybe do something like that example except the trait name is 'disposable' 05:10
TimToady why not just a function that takes a closure? 05:11
sub surroundX(&foo) { say "Before"; foo; say "After" }; surroundX { say "Middle" }
nr: sub surroundX(&foo) { say "Before"; foo; say "After" }; surroundX { say "Middle" } 05:12
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«Before␤Middle␤After␤»
Heather yes, thanks.
diakopter so you could make a combinator that generates those things for particular classes
Heather TimToady though it must also work with try finally if I want to follow C# using )
TimToady nr: sub surroundX(&foo) { say "Before"; foo; say "After"; CATCH { when * { say "FINALLY!"} } }; surroundX { say "Middle"; die "oops" } 05:13
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«Before␤Middle␤FINALLY!␤»
diakopter so you could say my $filecloser = disposable(sub ($f) { $f.close }); $filecloser((my $a=Blah.new), { $a.do_stuff }) 05:14
TimToady or something like that
nr: sub surroundX(&foo) { say "Before"; foo; say "After"; LEAVE { say "FINALLY!"} }; surroundX { say "Middle"; die "oops" } 05:15
p6eval niecza v24-33-gfc6d5fd: OUTPUT«Before␤Middle␤FINALLY!␤Unhandled exception: oops␤ at /tmp/bkYMPe3hDR line 1 (ANON @ 4) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/bkYMPe3hDR line 1 (surroundX @ 6) ␤ at /tmp/bkYMPe3hDR line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.set…
..rakudo 1c9939: OUTPUT«Before␤Middle␤oops␤ in block at /tmp/zQS0EnbSo6:1␤␤»
TimToady rakudo doesn't properly unwind the stack yet on globally handled die
05:16 _jaldhar left
TimToady the spec has "my $handle will leave { .close } = open ...." 05:16
but it's not yet implemented
diakopter r: my $blah = &(/foo/).wrap(sub (*@a, *%b) { say 'hi'; callwith(|@a, |%b); say 'bye' }); $blah('foo') 05:17
p6eval rakudo 1c9939: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'WrapHandle'␤ in at src/gen/BOOTSTRAP.pm:895␤ in any at src/gen/BOOTSTRAP.pm:879␤ in block at /tmp/gkif3_nEV0:1␤␤»
05:18 _jaldhar joined
quietfanatic iirc wrap modifies its invocant 05:18
and returns a thingie with an unwrap method
or something like that 05:19
diakopter r: my $blah = &(/foo/).wrap(sub (*@a, *%b) { say 'hi'; callwith(|@a, |%b); say 'bye' }); try .say for $blah.^methods
p6eval rakudo 1c9939: OUTPUT«restore␤»
Heather oh...
diakopter r: my $blah = &(/foo/); $blah.wrap(sub (*@a, *%b) { say 'hi'; callwith(|@a, |%b); say 'bye' }); $blah('foo') 05:20
p6eval rakudo 1c9939: OUTPUT«hi␤No such method '!cursor_start_all' for invocant of type 'Str'␤ in regex at /tmp/8nH9EMEHIJ:1␤ in any call_with_args at src/gen/Metamodel.pm:2877␤ in block at src/gen/CORE.setting:541␤ in sub at /tmp/8nH9EMEHIJ:1␤ in any enter at src/gen/Metamodel.pm:2974…
diakopter r: my $blah = &(/foo/); $blah.wrap(sub (*@a, *%b) { say 'hi'; callwith(|@a, |%b); say 'bye' }); $blah(Cursor.new)
p6eval rakudo 1c9939: OUTPUT«hi␤Cannot look up attributes in a type object␤ in any !cursor_start_all at src/stage2/QRegex.nqp:617␤ in regex at /tmp/cAD1PWsjf7:1␤ in any call_with_args at src/gen/Metamodel.pm:2877␤ in block at src/gen/CORE.setting:541␤ in sub at /tmp/cAD1PWsjf7:1␤ in a… 05:21
05:21 mj41 left
diakopter r: my $blah = &(/foo/); $blah.wrap(sub (*@a, *%b) { say 'hi'; callwith(|@a, |%b); say 'bye' }); say 'foo' ~~ $blah 05:21
p6eval rakudo 1c9939: OUTPUT«hi␤bye␤No such method 'MATCH_SAVE' for invocant of type 'Bool'␤ in method ACCEPTS at src/gen/CORE.setting:10899␤ in block at /tmp/QEr9jS3hzo:1␤␤»
quietfanatic r: my $blah = *.say; $blah.wrap(sub (|$args) {say 'hi'; callwith(|$x); say 'bye' }); $blah('foo') 05:23
p6eval rakudo 1c9939: OUTPUT«Obsolete use of | or \ with sigil on param $args␤===SORRY!===␤Variable '$x' is not declared␤at /tmp/UdgdeEsIHA:1␤------> rap(sub (|$args) {say 'hi'; callwith(|$x⏏); say 'bye' }); $blah('foo')␤ expecting any of:␤ postfi…
05:23 mj41 joined
quietfanatic r: my $blah = *.say; $blah.wrap(sub (|args) {say 'hi'; callwith(|args); say 'bye' }); $blah('foo') 05:23
p6eval rakudo 1c9939: OUTPUT«No such method 'wrap' for invocant of type 'WhateverCode'␤ in block at /tmp/2V5_SWAY8c:1␤␤»
quietfanatic r: my $blah = { .say }; $blah.wrap(sub (|args) {say 'hi'; callwith(|args); say 'bye' }); $blah('foo')
p6eval rakudo 1c9939: OUTPUT«No such method 'wrap' for invocant of type 'Block'␤ in block at /tmp/4hRzhO2Rvk:1␤␤»
quietfanatic r: my $blah = &({ .say }); $blah.wrap(sub (|args) {say 'hi'; callwith(|args); say 'bye' }); $blah('foo')
p6eval rakudo 1c9939: OUTPUT«No such method 'wrap' for invocant of type 'Block'␤ in block at /tmp/w0XLLqHsZc:1␤␤»
quietfanatic r: my $blah = sub { .say }; $blah.wrap(sub (|args) {say 'hi'; callwith(|args); say 'bye' }); $blah('foo') 05:24
p6eval rakudo 1c9939: OUTPUT«hi␤Too many positional parameters passed; got 1 but expected 0␤ in sub at /tmp/7Zi3cgPH5G:1␤ in any call_with_args at src/gen/Metamodel.pm:2877␤ in block at src/gen/CORE.setting:541␤ in sub at /tmp/7Zi3cgPH5G:1␤ in any enter at src/gen/Metamodel.pm:2974␤ i…
quietfanatic r: my $blah = sub ($_) { .say }; $blah.wrap(sub (|args) {say 'hi'; callwith(|args); say 'bye' }); $blah('foo')
p6eval rakudo 1c9939: OUTPUT«hi␤foo␤bye␤»
Heather TimToady I need to use variable from surroundX in closure 05:25
TimToady well, then you probably want a macro instead
Heather yes 05:26
05:26 jerome joined
quietfanatic Then it'd have to pass it as an argument to the closure 05:26
or
Heather does perl6 support macros?
quietfanatic it could be a contextual variable, like $*foo
TimToady but it would be unhygienic for your argument block to refer to a normal lexical that had not been declared, so yeah, maybe a dynvar as qf suggests
or a parameter would be cleanest 05:27
Heather r: $*foo 05:28
p6eval rakudo 1c9939: OUTPUT«Dynamic variable $*foo not found␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805 (src/gen/CORE.setting.pir:162984) (src/gen/CORE.setting:10563)␤called from Sub 'MAIN' pc 381 (src/gen/p…
TimToady warping the language into one that suddenly has extra magical variables is not really a good design...
at least the * in a dynamcic variable tells you what kind of magic you're expecting to happen
nr: sub surroundX(&foo) { my $*var = "I'm a dynvar!"; say "Before"; foo; say "After"; LEAVE { say "FINALLY!"} }; surroundX { say "Middle $*var"; die "oops" } 05:29
p6eval niecza v24-33-gfc6d5fd: OUTPUT«Before␤Middle I'm a dynvar!␤FINALLY!␤Unhandled exception: oops␤ at /tmp/05SQpwVoOI line 1 (ANON @ 4) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/05SQpwVoOI line 1 (surroundX @ 7) ␤ at /tmp/05SQpwVoOI line 1 (mainline @ 4) ␤ at /home/p6eval/niecz…
..rakudo 1c9939: OUTPUT«Before␤Middle I'm a dynvar!␤oops␤ in block at /tmp/V_3J1FRTyu:1␤␤»
diakopter you don't need a macro if you do the combinator thing I wrote above
Heather hm... 05:30
TimToady what if I do foo($var) ? 05:31
TimToady can it be something alike $var => say $var ?
diakopter r: macro marco { &marco.wrap(&marco); say 44; marco }; marco 05:32
p6eval rakudo 1c9939: OUTPUT«(timeout)44␤»
TimToady Heather: not sure quite what yer asking 05:33
Heather TimToady let me example
TimToady gist.github.com/Cynede/5159072 05:35
here is example 05:36
a bit wrong brackets I guess 05:37
though I saw grep working alike that... I need to find it's implementation 05:38
TimToady something more like: file($res[0], a, -> $fh { $fh.say( $gpattern ); } 05:39
quietfanatic What you intend to do there will work, I think.
TimToady or just file($res[0], a, { .say( $gpattern ) } 05:40
as long as file passes the handles as the first arg to the block
*handle
Heather undeclared routine 05:41
TimToady the :mod thing won't quite work like that though
yes, a bare 'a' will try to look for a routine of that name
Heather what is mod's type
can I declare it as mode... 05:42
TimToady you'll have to interpolate named args using prefix:<|> 05:43
(on the open)
Heather TimToady alike <|a> ?
TimToady at best you can pass in a pair, but named args are syntactic, and you need |$modes or some such to insert any pairs in as named args 05:44
if you pass in :a as an argument, it's just a pair
if you have a parameter that binds one or more pairs as a single argument, then it's just a data structure, not named args 05:45
so something like open $fname, |$mod is what you need there
05:45 kaleem joined
quietfanatic so, like sub file ($fname, &code, *%modes) { ... my $fh = open $fname, |%modes; ... } 05:45
right?
TimToady that might work 05:46
then you could call file with an arbitrary number of options
quietfanatic and they'd all be passed to open
TimToady you're relying on the fact that, when you pass in the arguments, it weeds out all the named args, so you're left with just two positionals, the filename, and the block 05:47
but it oughta work
quietfanatic doesn't it?
TimToady I think it will 05:48
if it doesn't, it's a bug :)
Heather how should I specify *%modes
TimToady just like that
quietfanatic You give :r or :w or stuff to file when you call it
TimToady it doesn't need any extra types, or what quietfanatic said, if that's what you're asking
quietfanatic file(@res[0], :r, { ... })
Heather works 05:49
TimToady file(@res[0], :r, :bin, {...})
quietfanatic that :r turns into :r(True)
and that gets shoved into %modes as a key-value pair
and then the | operator takes all the key-value pairs in %modes and turns them back into named arguments 05:50
05:52 SamuraiJack left 05:53 wk left
Heather quietfanatic cool ) that's becoming less verbose but I like it 05:54
TimToady nr: sub foo($f,&b,*%h) { given open $f, |%h { .&b; .close } }; foo '/etc/passwd', :r, { .get.say };
p6eval rakudo 1c9939: OUTPUT«open is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub open at src/RESTRICTED.setting:5␤ in sub foo at /tmp/yikWrH9bPC:1␤ in block at /tmp/yikWrH9bPC:1␤␤» 05:55
..niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: open may not be used in safe mode␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (open @ 0) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at <unknown> line 0 (&open @ 0) ␤ at /tmp/pg3Utd0oHY line 1 (foo @ 6) ␤ at /tmp/pg3Utd0oHY line…
TimToady you have to put the &b before the *%h
(in the declaration, not the call)
but that works locally
Heather TimToady hm... 05:56
TimToady it also works good ) 06:00
TimToady now it looks better for me github.com/Cynede/ignore/blob/master/bin/ignore :) 06:08
TimToady but I think there is way to get all the lines and then check if contains $pattern 06:09
instead of making loop
stairs of the closing brackets is still being my objection to feel ugly 06:13
TimToady well, any(.lines) eq $gpattern would work
I find it difficult to read your stairs because most perl programmers use the K&R indent, not gnu 06:14
Heather TimToady I think I should back to 4 spaces -_-' because it magically makes } not that ugly 06:15
TimToady well, I'm not fond of indent styles that try to be Pythonic :)
Heather TimToady GNU is uglier, it makes double indentation. 1 for brackets, 1 for code
TimToady I'm just used to looking straight up from the bracket to see what the opening construct was for it 06:16
Heather I'm trying to be ml-ick >_<
TimToady it's sort of aristotelean, everything has a beginning, a middle, and an end :)
Heather TimToady if you already have indent you don't need it ... 06:17
TimToady well, perl won't prevent you from programming in whatever style you like, but you should just be aware that most Perl shops go the outdenting way
Heather TimToady so ... I would say most of everything with brackets go K & R way 06:18
TimToady that's the way most Algolish languages have gone
even if they only spell it 'begin/end'
Heather I heard that perl is great language to use pseudographic way -_-'
TimToady sure, and I don't deny that people's branes work differently when it comes to graphics 06:19
just pointing out that you'll be swimming upstream sooner or later, given current culture 06:20
don't want you to be shocked when someone gives you some pushback on it, is all
Heather TimToady I have ability to follow upstream code when do contributions :)
TimToady ain't asking for any more than that
TimToady is more excited to see new contributors 06:21
Heather TimToady I will be happy to be
TimToady cool, don't let anyone discourge you, including me :) 06:22
*discourage
Heather :D 06:27
TimToady currently I'm waiting for this github.com/tadzik/panda/pull/37 review
TimToady I find it more clear for packaging ... 06:28
TimToady has done virtually nothing with panda yet, alas
Heather virtually :S 06:29
TimToady p6 has already grown to the size that I can't keep track of what everyone is doing...
Heather I guess
TimToady github.com/Cynede/ignore/blob/master/bin/ignore 4 tabs looks much better -_-'
TimToady p5 didn't hit that until after 5.0 was already out
TimToady --> bed 06:34
Heather TimToady gn 06:35
06:52 alc joined 06:55 quietfanatic left
Heather how to use or in matching alike ~~ /a/b/c/ - is it correct? 06:56
so I want to check if string contains one of them
sorear like $str ~~ /a|b/ # true if $str contains a or b 06:59
?
Heather sorear yes
thank you
sorear what difference between "" and <>
diakopter do you know about "" vs '' ? 07:00
Heather diakopter what? 07:01
sorear Heather: do you perl 5? <> is qw()
Heather sorear I don't perl5... 07:02
sorear qw?
raiph <foo bar !@#$%baz> is a three element list literal: 'foo', 'bar', '!@#$%baz'
Heather raiph I see, thanks.
diakopter qw stands for quote whitespace or quote words or something like that 07:07
raiph Heather: <foo $bar> is to 'foo', '$bar' as <<foo $bar>> is to "foo", "$bar"
diakopter Heather: my $foo='bar'; say "foo $foo"; say 'foo $foo' 07:09
rnp: my $foo='bar'; say "foo $foo"; say 'foo $foo'
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd, pugs: OUTPUT«foo bar␤foo $foo␤»
07:19 wk joined
Heather when I do my $options = ($a, $b); and if I edit $options[0] will it edit $a ? 07:24
07:29 FROGGS joined
Heather FROGGS hi 07:33
basically what happens when I do my $x = $y ? :) 07:34
FROGGS Heather: assignment? 07:38
Heather FROGGS when I change x y is changing too? 07:39
FROGGS no, for that you need binding: $x := $y
Heather FROGGS same about tuple? 07:40
FROGGS r: my $x = 7; my $y = 42; $x := $y; say $x; $y = 100; say $x 07:41
p6eval rakudo 1c9939: OUTPUT«42␤100␤»
FROGGS just try
r: my $x = 7; my $y = 42; $x = $y; say $x; $y = 100; say $x
p6eval rakudo 1c9939: OUTPUT«42␤42␤»
07:42 labster joined
Heather r: my $x = False; my $y = False; my $z = ( $x, $y); $z[0] = True; say $x; 07:42
p6eval rakudo 1c9939: OUTPUT«True␤»
Heather linked!
FROGGS how can I create not-linked $z ? 07:43
07:44 Guest75059 left
FROGGS r: my $x = False; my $y = False; my $z = [ $x, $y ]; $z[0] = True; say $x; 07:45
p6eval rakudo 1c9939: OUTPUT«False␤»
Heather FROGGS is it a list?
ah, not it's $, so it's optional tuple declaration?
FROGGS ? 07:46
as I understand [ ... ] copies the values, where ( ... ) does binding
Heather FROGGS is $z a tuple here?
07:47 lustlife joined
FROGGS r: ( $x, $y).WHAT.say 07:48
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Variable '$x' is not declared␤at /tmp/riMyompI_e:1␤------> ( $x⏏, $y).WHAT.say␤ expecting any of:␤ postfix␤»
FROGGS err
brb
Heather $x = False; my $y = False; my $z = [ $x, $y ]; $z.WHAT.say 07:49
r: $x = False; my $y = False; my $z = [ $x, $y ]; $z.WHAT.say
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Variable '$x' is not declared␤at /tmp/QeeMYW9lun:1␤------> $x⏏ = False; my $y = False; my $z = [ $x, $␤ expecting any of:␤ postfix␤»
Heather r: my $x = False; my $y = False; my $z = [ $x, $y ]; $z.WHAT.say 07:50
p6eval rakudo 1c9939: OUTPUT«(Array)␤»
Heather r: my $x = False; my $y = False; my $z = ( $x, $y ); $z.WHAT.say
p6eval rakudo 1c9939: OUTPUT«(Parcel)␤»
Heather Parcel ? :S is it tuple in perl?
raiph sorta ish 07:51
Heather raiph ish ? tuplish? )
raiph yeah 07:52
Heather so I want $z to be a tuple :P
raiph parcel as tuple: irclog.perlgeek.de/perl6/2013-03-01#i_6511175 07:53
have you explored the irc logs? irclog.perlgeek.de/perl6
average of one or two thousand lines every day for seven years 07:54
there's a custom search function and a convenient google link near the top 07:56
and for last 6 months there's been a "summary" if you click the summary link 07:57
arnsholt When's the next NQP/Rakudo release point?
dalek p/vmarray-list: fb2a2fd | (Arne Skjærholt)++ | src/pmc/sixmodelobject.pmc:
Implement the pop and shift VTABLEs in sixmodelobject.pmc.
08:00
08:01 lumi_ joined 08:02 domidumont joined 08:05 woosley joined
raiph Heather: Is Parcel-is-a Tuple working for you? 08:07
08:08 kurahaupo left
Heather raiph Parcel-is-a Tuple? 08:16
though parcel is what I need 08:17
but can I construct it without linking? 08:18
raiph Heather: If I understand your question, FROGGS had the answer ^^^ 08:21
basically [ ] rather than ( )
08:22 lumi_ left
Heather raiph yes it works I just wonder why it's array and not a parcel 08:24
raiph so you get the diff between = and := right? 08:26
Heather yes 08:27
08:28 FROGGS_ joined, domidumont left, domidumont joined, lumi_ joined
raiph r: my $a = (3, 4); $a[1] = 5 # won't work because the 2nd element (4) is a constant 08:29
p6eval rakudo 1c9939: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/u_yPNKM0Ps:1␤␤»
08:30 FROGGS left
raiph r: my $a = [3, 4]; $a[1] = 5; say $a[1] # will work because the 2nd element is a container, to which the value 4 was assigned 08:31
p6eval rakudo 1c9939: OUTPUT«5␤»
Heather raiph I see. parcel doesn't host anything mutable 08:32
raiph er, i don 08:33
er, i don't think that's right
a parcel is not mutable
08:34 am0c left
raiph but ($a, %b) # $a and %b may be mutable, but this parcel contains those two variables and you can't change that 08:34
08:35 SamuraiJack joined, FROGGS_ left
raiph r: my $x = 'x'; my $a = (3, $x); $x = 'y'; say $a[1] # works because $x is mutable 08:40
p6eval rakudo 1c9939: OUTPUT«y␤»
Heather yes I see
I said it doesn't host it
08:41 FROGGS joined
Heather raiph look github.com/Cynede/ignore/blob/master/bin/ignore my script is becoming less verbose and more beauty -_-' that's what I expect from perl 08:41
labster OMG, someone expects beauty from perl? \o/ perl 6 is working, everyone! 08:46
08:46 lumi_ left
raiph Nice. I haven't seen that curlies style in a while; i used that when i wrote bcpl code back in the day. 08:46
Heather labster I do ) 08:47
labster perl is beauty, really 08:48
labster Heather: perl has something of a reputation for obfuscated code, to no small degree from regular expressions in perl 5. Perl 6 is much more beautiful, really -- even the magic parts seem to make sense. 08:49
08:49 am0c joined 08:51 Liz_ joined 08:52 Liz_ is now known as lizmat
labster starts hacking on File::Spec... realizes he's running a mix of case (in)sensitive partitions on the current machine... and both p5 and p6 just assume insensitive based on OS alone. 08:52
raiph Heather: consider turning expressions like a == 1 && b == 1 in to "junctions"
So ($options[0] == False && $options[1] == False) becomes 08:53
08:53 lumi_ joined
Heather raiph junctions? 08:54
raiph r: my $options = [1, 1]; if $options[0] & $options[1] == 1 { say "yep" } 08:55
p6eval rakudo 1c9939: OUTPUT«yep␤»
Heather ah
raiph but now I need recode it to if all of options is false
r: my $options = [1, 1]; if any($options) == 1 { say "yep" } 08:56
p6eval rakudo 1c9939: ( no output )
Heather r: my $options = [1, 1]; if all($options) == 1 { say "yep" }
p6eval rakudo 1c9939: ( no output )
Heather r: my $options = [1, 1]; if all($options) eq 1 { say "yep" } 08:57
p6eval rakudo 1c9939: ( no output )
Heather r: my $options = [1, 1]; if any($options) eq 1 { say "yep" }
p6eval rakudo 1c9939: ( no output )
Heather r: my @options = [1, 1]; if any(@options) == 1 { say "yep" } 08:58
p6eval rakudo 1c9939: ( no output )
Heather hm...
raiph r: my $options = [5, 5]; if any($options[]) == 5 { say "yep" }
p6eval rakudo 1c9939: OUTPUT«yep␤»
Heather ah... []
raiph is it alike type descriptor here? 08:59
raiph also I can use named options though... alike git => $git 09:01
raiph my $a = [2, 3]; say $a.WHAT; say $a[].WHAT 09:02
r: my $a = [2, 3]; say $a.WHAT; say $a[].WHAT
p6eval rakudo 1c9939: OUTPUT«(Array)␤(Array)␤»
Heather :S
09:02 domidumont left
Heather raiph btw it's any, is there all keyword, right ? 09:03
r: my $a = [2, 3]; say any($a).WHAT;
p6eval rakudo 1c9939: OUTPUT«(Junction)␤»
Heather r: my $a = [2, 3]; say any($a[]).WHAT;
p6eval rakudo 1c9939: OUTPUT«(Junction)␤»
Heather r: my $a = [2, 3]; say any($a); 09:04
p6eval rakudo 1c9939: OUTPUT«any(2 3)␤»
Heather r: my $a = [2, 3]; say any($a[]);
p6eval rakudo 1c9939: OUTPUT«any(2, 3)␤»
hoelzro so I discovered (with a stupid test) last night that Hash.new is about 2x faster than {} 09:05
09:07 lumi_ left
tadzik huh, odd 09:12
Heather: gist.github.com/moritz/5070740 should help you with assignment, binding etc 09:13
moritz raw.github.com/perl6/doc/master/li...ainers.pod is the up-to-date version 09:14
09:14 lumi_ joined
jnthn morning o/ 09:15
raiph Heather: re any, all etc. keywords: doc.perl6.org/type/Junction 09:16
labster morning jnthn \o
jnthn hoelzro: Note they're not actually the same; {} containerizes. But that doesn't explain a factor of 2 really...
jnthn is gonna be muchly distracted for much of the day with $dayjob things... 09:17
Heather raiph thanks 09:20
raiph yw
nwc10 jnthn: it's only fair that you give other people the chance to break stuff. :-) 09:21
09:21 kresike joined
kresike hello all you happy and/or unhappy perl6 people 09:22
Heather hello
09:28 gootle joined 09:29 gootle left
labster moritz++ for the containers documentation. 09:29
In meteorology, parcels of air are very mutable in size, so your documentation cleared things up for me. 09:30
09:34 lumi_ left 09:37 dakkar joined 09:40 lumi_ joined
moritz let me guess, immutable stuff in meteorology is quite boring :-) 09:47
arnsholt hacks nqp::list to return NQPArray and sees what happens 09:50
FROGGS .oO( BOOM? )
arnsholt Probably. But first I have to do it right =D 09:51
FROGGS :o) 09:52
arnsholt: we get an RPMCA right now, right? 09:53
arnsholt Yeah
Heather suggest me what is better to do: recode lots of stuff and add some complex confustion to separate bin prefix and lib prefix to make bin to be in default /usr/bin and libs in parrot folder OR make parrot's bin folder visible as bin folder (that will be weird I think) OR in /ust/bin folder make wrappers (bash scripts) which will point exact bin files in parrot folder ? 09:54
there is another OR: don't use parrot folder
but it's also wrong :( 09:55
09:55 lumi_ left
arnsholt FROGGS: But there's also nqp::qlist, which gives you a QRPA (which is a bit different) 09:56
FROGGS hmmm, never seen/used it
hoelzro when I return two hashes as such: return %server, %client 09:57
do they automatically get flattened?
if so, how do I prevent that? 09:58
jnthn .item them is the easy way 10:01
hoelzro so return ( %server.item, %client.item )? 10:02
10:02 lumi_ joined
labster moritz: well, topography can be immutable (at least on meteorological timescales) and still have interesting effects. But yes, mostly everything else interesting changes. Even our version of the ideal gas "constant" changes, because it includes the composition of air and thus changes with water vapor concentration. 10:02
tadzik hoelzro: or just have them in scalar containers 10:03
like $server, $client
hoelzro I see
labster night everyone
tadzik they'll work exactly the same way, not with all that Perl 5 dereferencing
raiph goodnight all
tadzik goodnight
10:04 labster left 10:08 anuby left
Heather find dir:<.> works wrong on windows 10:16
tadzik did you mean: find :dir<.> 10:17
10:17 kaleem left
Heather yes 10:17
tadzik what do you mean by "works wrong"?
Heather doesn't find file
tadzik 1) I cannot help you if I don't know any details 10:19
2) I don't have a windows machine to try it anyway :(
the most problematic platform I have to deal with, and the only one on which you can't just set up an ssh server to try stuff on 10:20
Heather any suggestions how to debug it 10:21
tadzik I don't even know what doesn't work :(
so find :dir<.> doesn't show you the current directory contents? 10:22
10:22 lumi_ left
tadzik same for :dir('.')? 10:22
Heather find in . returns 0 elems
tadzik well, does windows even have '.' as a concept? I don't know :)
Heather it is
does 10:23
tadzik okay
jnthn say dir('.') on Windows seems to produce sensible output too 10:25
Heather :r say dir('.); 10:26
:r say dir('.');
r: say dir('.'); 10:27
p6eval rakudo 1c9939: OUTPUT«star src .bashrc nom-inst1 toqast test3.pl .profile t nom-inst2 nom-inst toqast-inst toqast-inst2 examples Makefile .gitignore lib test2.pl .local bin rakudo p1 VERSION simple-tests .perlbrew std obj main.pl .lesshst nom niecza test.pl .cpanm log .bash_logout run T…
Heather and I can see nothing on windows
tadzik r: given open('TEST', :w) { .say('restricted mode broken?'); .close }; say 'alive'
p6eval rakudo 1c9939: OUTPUT«open is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub open at src/RESTRICTED.setting:5␤ in block at /tmp/ojvvzEq2ll:1␤␤»
Heather jnthn do you have correct output?
tadzik whew
moritz note that dir() returns IO::Path objects, which might not deal with windows paths correctly 10:28
10:28 lumi_ joined
tadzik oh, / 10:28
but well, it should return something anyway
Heather r: given open('TEST', :r) { say .lines; .close }; 10:29
p6eval rakudo 1c9939: OUTPUT«open is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub open at src/RESTRICTED.setting:5␤ in block at /tmp/BS_piG5gFc:1␤␤»
Heather moritz and what windows should use instead of dir? :S 10:30
tadzik Heather: does File::Find pass its unit test on windows for you?
If yes, can you add a test that doesn't pass?
Heather r: say dir('\')
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Unable to parse expression in single quotes; couldn't find final "'"␤at /tmp/ag9RifGzhL:1␤------> say dir('\')⏏<EOL>␤ expecting any of:␤ argument list␤ prefix or term␤ prefix or meta-prefix␤ …
Heather r: say dir('\\') 10:31
p6eval rakudo 1c9939: OUTPUT«Failed to get the directory contents of '\': readdir failed: No such file or directory␤ in block at src/gen/CORE.setting:7917␤ in sub dir at src/gen/CORE.setting:7913␤ in block at /tmp/ntRjSenfDP:1␤␤»
Heather tadzik how to run them w/o ufo? :S
10:32 hypolin left
Heather prove? 10:32
tadzik prove -e 'perl6 -Ilib' -r t/
or parrot-prove
hoelzro let's say I have a superclass that ACCEPTs all Str objects(but nothing else), and I want to refine what's accepted in a subclass. How can I get Perl6 to prefer the child's multimethod? 10:33
(example here: gist.github.com/hoelzro/5160326)
10:33 domidumont joined
Heather "load_bytecode" couldn't find file 'TAP/Harness.pbc' 10:33
tadzik ok, just regular prove then 10:34
Heather tadzik no such exe file
tadzik /o\
Heather: perl6 -Ilib t/01-file-find.t?
or whatever this file is named
Heather Unexpected named parameter 'recursive' passed :D 10:36
tadzik you broke that! :P
Heather not
in 'File::Find::find' at line 15:C:\Rakudo\lib\parrot\2.6.0\languages\perl6\lib/File/Find.pm
it's wrong lib ) 10:37
tadzik 2.6.0!?
Heather yes... that's how it finds it ... it's included
tadzik okay, I have to attend to dayjob now
Heather I was looking for magic and there is no magic )
tadzik but -Ilib fails :S 10:38
tadzik too old Rakudo I guess
Heather tadzik should I rebuild it from sources :S 10:39
tadzik I suppose so. Or just install a newer .msi
Heather tadzik it's last one -_-'
afaik
tadzik I'm quite sure it's not 10:40
Heather ah... you're right...
weird what brings me to get that old version :S
hoelzro anyone? is there a way to override a parent's multi method?
moritz if you supply a multi with the same signature in a child class, it binds tighter than the parent's multi method 10:45
(becuase the invocant has a tighter type constraint)
10:45 lumi_ left
moritz is that you what you mean by "override"? 10:45
hoelzro yeah 10:46
but I'm getting an ambiguity error
moritz then you're doing it wrong :-)
hoelzro I guess so =/ 10:47
hoelzro thinks on it
moritz so, maybe show us what you do
moritz -> lunch, might look later
hoelzro I'll demonstrate after I've tried some more stuff
arnsholt hoelzro: Have you tried removing the invocant parameters from the code?
I don't think you need them ATM
hoelzro tries 10:48
well, I only want ACCEPT to work if I'm doing $str ~~ IssueState
10:48 lizmat left
hoelzro I *could* do return False unless self.defined 10:48
but I like multi methods =)
jnthn Heather: Yes, perl6 -e "say(dir('.'))" gives me what I expect
hoelzro hmm, removing the invocants fixes it 10:49
Heather jnthn it works with newer rakudo 10:50
I was using really old build
jnthn Heather: ah!
Heather yes, my fault
jnthn hoelzro: What multi are you writing?
arnsholt gist.github.com/hoelzro/5160326
hoelzro jnthn: ^ 10:51
(thanks arnsholt)
hmm
my standalone example behaves differently than my script
10:52 lumi_ joined
jnthn Any:U $class: 10:53
That looks wrong
hoelzro critique on Perl 6 style is welcome =)
what exactly is wrong about it?
jnthn Should be IssueProperty:U $class: or so
You're specifying the *invocant* type as Any 10:54
Which means you're saying "this is typed as if it was declared in Any"
hoelzro oh, I see
that makes sense
jnthn So that's why you'll get a conflict :)
hoelzro ah!
thanks, jnthn
arnsholt Shouldn't the subclass method still be more specific?
hoelzro that was my next question =) 10:55
moritz normally, subclass methods are more specific because the invocant type is more specific 10:59
if you override that, you're out of luck
hoelzro I'm still not sure why (IssueProperty : , Mu *%_) and (Any:U $class: Str , Mu *%_) are ambiguous
hmm 11:00
that doesn't look right...
jnthn arnsholt: It's the invocant type that *makes* it more specific. 11:01
hoelzro even if the invocant type is Any:U?
arnsholt And Any is more specific than the subclass?
jnthn Multi method dispatch works as follows
FROGGS jnthn: did you recognized the slowdown of rakudo since yesterday? 11:02
jnthn When you write a multi in a class, it looks up the inheritance tree to see if any proto exists above
If not, it makes one
If yes, it clones it
It then adds your candidates
So what's in the methods table is always a proto
From then on, everything works *exactly* like multi-sub dispatch 11:03
The method dispatch is just about finding the right candidate list
FROGGS: Um, I know my *branch* is slow but I didn't merge that
FROGGS: Did it get slower in nom too? 11:04
If so maybe my multi changes aren't to blame
11:05 swarley- joined, lumi_ left
jnthn lunch, bbiab 11:05
hoelzro ok, I've updated my example: gist.github.com/hoelzro/5160326
*this* actually fails 11:06
I was interpreting the error incorrectly
11:06 swarley| left
hoelzro
.oO(Perl 6 wishlist: show me the source location of conflicting multi method definitions)
11:06
11:07 swarley| joined
FROGGS jnthn: yes, nom is about 40% slower 11:07
11:11 swarley- left, lumi_ joined
dalek rlito: ba5acc1 | (Flavio S. Glock)++ | TODO-perlito5:
Perlito5 - parser TODO - add additional variants of "for"
11:14
11:16 swarley- joined 11:19 swarley| left 11:23 swarley- left
FROGGS jnthn: it is up to 80% slower, stage parse took 199s right now, before it was about 104s 11:23
I have nothing else running what can eat cpu 11:24
11:24 am0c left
FROGGS ... and no local changes 11:24
arnsholt FROGGS: Maybe you could bisect and see if it can be traced back to a single commit? 11:25
(If you have the time)
11:28 lumi_ left 11:34 lumi_ joined
Heather tadzik should I add github.com/Cynede/ignore to META.list ? 11:47
FROGGS arnsholt: I will do it this evening
tadzik Heather: does it install correctly with panda? 11:51
if yes, then I don't see a reason why not :)
Heather: any particular reason why did you put a submodule there?
Heather tadzik I'm not finished panda package ) I need to add /usr/lib/parrot/5.1.0/languages/perl6/site/bin to PATH to check ) 11:52
ok I can run it directly...
tadzik just try 'panda install .' to verify that META.info is correct and all that
11:52 lumi_ left
Heather tadzik so to use it as standalone package but I should remove it now I guess because it's standard lib >__< suddenly 11:53
tadzik huh,. what? :) 11:54
ah, the submodule
well, no reason to bundle dependencies with modules, panda resolves that itself
but it's not a Standard Lib in any way, now 11:55
Heather ah ok
tadzik I should run panda from root right? 11:57
11:59 lumi_ joined
Heather so... 11:59
tadzik it says ==> Successfully installed ignore but I don't know where :D
tadzik there should be an 'ignore' script in the same place that you have panda 12:00
Heather tadzik there is no 12:01
tadzik I will try to remove ignore installed with ufo and locate it after panda 12:04
jnthn FROGGS: Odd...would be good to know which commit did it. 12:06
Heather tadzik omg I found it -_-' 12:07
tadzik in /root/.perl6/2013.02/bin/ignore
arnsholt jnthn: I've managed to make nqp::list create NQPArrays, so now I just (hah!) have to track down all the places things go wrong =) 12:09
Heather tadzik is it designed only for enduser?
jnthn arnsholt: nice :) 12:10
12:11 lumi_ left
arnsholt I'm a bit stumped as to why the error is "Can only use repr_instance_of on a SixModelObject", but I have to do dayjobby things anyways, so I'll leave that for later =) 12:13
jnthn yeah, I'm $dayjobbin' at the moment too 12:14
Sleepily, after too much food at buffet lunch...
Heather tadzik but I found own fail in panda fork
arnsholt Buffets are dangerous that way =)
dalek p/vmarray-list: 0b76d55 | (Arne Skjærholt)++ | src/QAST/Operations.nqp:
Make nqp::list create NQPArrays rather than RPAs.

Unfortunately this means the self-compilation breaks, since some places rely on nqp::list being an RPA. Fixing that remains to be done.
12:17
12:18 lumi_ joined
jnthn arnsholt: nqp::islist is one thing that'll need an update. :) 12:18
arnsholt Oooooh, good point 12:20
That might explain the code getting confused and assumptions going wrong 12:22
12:24 skids left 12:27 Liz_ joined
dalek rlito: f68d4e6 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - fix scope for "for" variable
12:28
12:28 Liz_ is now known as lizmat 12:29 lumi_ left 12:30 snuffles left
Heather tadzik I will need your help in future. 12:32
tadzik to implement panda in package manger I need to make it possible to work for all users
12:32 snuffles joined
Heather tadzik if I understand correct it's not designed for it currently. 12:34
12:36 alc left, lumi_ joined
FROGGS jnthn / arnsholt: false alarm 12:37
jnthn FROGGS: Oh? 12:42
FROGGS: No performance regression in nom branch after all?
FROGGS jnthn: ya, I believe a java process in background was a bit hungry
12:42 snuffles left
FROGGS jnthn: no, everything fine with current nom HEAD 12:43
jnthn: you are awake now? :P
12:45 snuffles joined
jnthn "awake" is such a strong word... :P 12:46
FROGGS **g 12:47
12:47 lumi_ left
jnthn will see if he can get to the bottom of why md-nqp is a bunch slower this evening. 12:48
FROGGS
.oO( bikini bottom of slowness? )
12:49
tadzik that sounds like a Diablo weapon
or armor, maybe 12:50
FROGGS tadzik: a bit, ya
timotimo_ maybe more like a Munchkin equip.
FROGGS "Shiny bikini bottom of slowness" - a Diablo II unique item
tadzik timotimo_: oh yeah :) 12:52
FROGGS (Diablo II)++
12:54 lizmat left, lumi_ joined
dalek osystem: 3a4efee | ℋeatђer++ | META.list:
ignore util to META.list
13:02
osystem: 461c99f | tadzik++ | META.list:
Merge pull request #22 from Cynede/master

ignore util to META.list
13:02 Heather left 13:06 fhelmberger joined, bluescreen10 joined 13:08 lumi_ left
timotimo_ .u ℋђ 13:08
yoleaux U+0452 CYRILLIC SMALL LETTER DJE [Ll] (ђ)
U+210B SCRIPT CAPITAL H [Lu] (ℋ)
timotimo_ interesting
tadzik yoleaux: tell timotimo_ test
:(
hoelzro did anyone look at my updated gist wrt. multi methods? 13:09
13:11 shinobicl joined
[Coke] argle bargle coffee bargles. 13:12
13:12 lizmat joined 13:14 lizmat left, lumi_ joined
nwc10 [Coke]: I don't think that my t/spec/S32-exceptions/misc.rakudo failure is in that gist you gave 13:17
(Although I don't really understand the format of that gist)
in that, the t/spec/S32-exceptions/misc.rakudo failure is a runtime abort before all the tests have run. Implied, a bunch of later tests failed, because they never ran 13:18
timotimo that gist doesn't seem to be in my lastlog, can i see it? 13:21
nwc10 mmm, was this technically a gist? This URL: github.com/coke/perl6-roast-data/b....out#L2419 13:22
timotimo oh. no, not really :)
nwc10 is not totally awake, with it, or anything
timotimo i see no fails for exceptions/misc.rakudo in there 13:23
[Coke] it's the output of running t/spec/*mumble, test summary*
(that's the output from the daily run of spec tests on feather) 13:24
timotimo this here channel is the first one where i actually saw "mumble" used in text form to mark places where the author didn't know the exacts. interesting 13:25
13:27 lumi_ left 13:32 shinobicl left 13:33 lumi_ joined 13:40 FROGGS left 13:44 lumi_ left 13:50 skids joined 13:52 lumi_ joined 13:55 xinming left 13:57 fhelmberger left, xinming joined 14:01 SmokeMachine joined 14:02 lumi_ left, snuffles left 14:04 Liz joined 14:05 Liz is now known as Guest59973
hoelzro latest adventure in perl 6 land: I wrote a script to process IRC logs from irclog.perlgeek.de 14:05
the whole thing takes 3 seconds, but when I say each message, it takes 20
14:06 snuffles joined, Guest59973 left 14:07 sftp joined 14:08 xilo left 14:09 lumi_ joined 14:12 PacoAir joined 14:16 SmokeMachine left 14:17 SmokeMachine joined 14:21 lustlife left 14:22 kaare__ joined, lumi_ left 14:23 Psyche^ joined 14:24 kaleem joined 14:27 Patterner left, Psyche^ is now known as Patterner 14:28 lumi_ joined 14:32 xilo joined 14:35 xilo left 14:36 xilo joined 14:38 lumi_ left 14:41 census joined 14:44 arlinius joined, lumi_ joined
[Coke] wonder if we're not getting buffered IO or something. 14:46
arnsholt I'm pretty sure Parrot buffers IO 14:48
At least I get lost output when I trigger segfaults in NQP =)
14:54 lumi_ left 14:58 wk left
hoelzro now that it's quiet here, I'll try asking my multi method question again =) 14:59
gist.github.com/hoelzro/5160326
here, MAIN complains of an ambiguity 15:00
and I don't understand why
jnthn Because the two candidates are tied.
Imagine you have types S and T where S ~~ T
15:00 lumi_ joined
jnthn :(S, T) and :(T, S) would be tied 15:00
Since there's no way to say one is narrower than the other. 15:01
This is the situation you've created.
But with a third type involved.
hoelzro multi method ACCEPTS($) # <- isn't the param here Any?
oh, you know, I think I see it now
jnthn Yes, but the invocant is of type IssueProperty
hoelzro the first one is (IssueProperty, Any)
jnthn Str ~~ Any, but Any !~~ IssueProperty
hoelzro the second is (Any, Str)
jnthn Right.
hoelzro ooooooh 15:02
thanks for pointing that out, jnthn !
jnthn Should you want to see how the sorting works, you don't need to read it in C any more; the md-nqp branch has it ported to (hopefully more accessible) NQP. :) 15:03
Or the spec describes it in words
15:03 brrt joined
hoelzro \o/ 15:03
does that bring a performance hit with it? 15:04
djanatyn !won ogwr
Errm, my bad :)
hoelzro sadly, I think I'm still at the level where my C > my NQP ;)
jnthn hoelzro: Yes, but in NQP the hit was very small. I need to work out why it is worse in Rakudo. 15:09
hoelzro hmm
interesting
jnthn hoelzro: Most multi-dispatches don't actually go through the full dispatch process.
hoelzro caching, I assume?
jnthn hoelzro: Those that are typed/arity determined hit a cache.
And the cache is in C.
hoelzro ah ha
jnthn Which should hide the cost.
hoelzro I wish I knew enough of the internals to help with profiling/optimization
these last few days playing around have been really fun, but the speed is drag (at times) 15:10
some tasks are more than fast enough for me
but others are *really* slow
TimToady how hard do you wish it? :)
hoelzro heh
jnthn The re-writing into NQP is to help make it easier to port Rakudo to hopefully faster places :)
colomon rakudo read a 28 meg file on my new Linux box! \o/
hoelzro I wish I could find the spare time to learn the internals well enough to help with profiling/optimization 15:11
15:11 fhelmberger joined
jnthn My only benchmark so far is "the spectests are slower"... I wonder if it's because the candidate sorting is now a bunch slower and we sort on first call. 15:11
There's no reason we can't now just sort at CHECK time. 15:12
And then serialize the result.
Which we should do for correctness anyway, since the spec says this is when circularities should be reported... :)
15:13 lumi_ left
moritz it's kinda amazing what you can use serialization for 15:16
I mean, all sorts of stuff depends on it
which you mostly notice when it's missing :-)
15:19 lumi_ joined
jnthn Yes, which makes its low bus number somewhat worrying. 15:21
timotimo is it very complicated? a lot of code? 15:23
jnthn Sort of, and not really considering what it's doing. 15:24
timotimo i only have a slight idea about how serialisation ought to work, but i haven't actually done any serialisation coding aside from simple things like serialising a tree of lists and hashes into something like json
jnthn Well, the places it gets really icky are with packages.
They're not really pure enough. 15:25
augment is similarly tricky
Rakudo handles it...to a point.
Most of the "precompilation breaks X" boil down to such impurities. 15:26
15:28 lumi_ left
TimToady linking has always been the problem child of separate compilation, even with bondage languages :) 15:35
15:35 lumi_ joined
jnthn Yeah. Linking can basically become merging. 15:35
TimToady the known problems go back all the way to Fortan common :) 15:36
which is, actually, a better name for it than "global" 15:37
jnthn Rakudo handles it by having a write barrier on objects owned by a serialization context. If you do stuff to them while compiling some other compilation unit, then that compilation unit "repossesses" the object and saves its version. 15:38
TimToady maybe we should rename GLOBAL to COMMON to attract all the old Fortran programmers :)
jnthn If two modules you load both want to do that, it can now detect it and give them to a merger.
The merger can either do something about it (it knows how to with Stash) or throw its hands up and say "no, you can't use these two together" 15:39
pmichaud good morning, #perl6
jnthn At the moment it kinda doesn't do the second of those.
moritz good am, pm
jnthn o/ pmichaud
TimToady ss/its hands // :)
jnthn :D
15:40 fhelmberger left 15:43 lumi_ left 15:44 skids left 15:46 LlamaRider joined
TimToady wow, that was a conversation stopper... 15:48
15:50 lumi_ joined
LlamaRider o/ #perl6 15:54
15:59 lumi_ left 16:05 donaldh joined 16:06 lumi_ joined
donaldh jnthn: in nqp-jvm where do the compilation unit (i.e. Java class) names get generated? 16:06
jnthn: I want to add a prefix to see if it resolves an issue I am having with ASM. 16:07
pmichaud (conversation stopper) I suspect it was me. Conversation often seems to drop when I say hello. :) 16:09
nwc10 you could pretend to be away from keyboard 16:11
kresike bye folks 16:14
16:14 kresike left
diakopter donaldh: well it originally comes from the nqp compiler 16:14
jnthn donaldh: nqp-jvm-cc.nqp
donaldh: Or if you're in the self-hosted, in nqp-src/NQPHLL.pm 16:15
16:15 lumi_ left
donaldh jnthn: yes, in self-hosted. 16:16
16:16 domidumont left
jnthn donaldh: there's a command line option to override it 16:17
donaldh: --javaclass iirc
donaldh jnthn: it's the self-hosted generated ids that are a problem. 16:18
will dig into NQPHLL later. 16:19
afk
thx
16:19 donaldh left
jnthn donaldh: github.com/jnthn/nqp-jvm-prep/blob...LL.pm#L905 16:20
oops, he left
16:21 brrt left 16:22 lumi_ joined 16:24 FROGGS joined, crab2313 joined
FROGGS jnthn: how can I tell nqp::getcomp('QRegex::P6Regex').compile("a+b") to ignore case ? 16:24
jnthn FROGGS: Hm...guess you set up a %*RX, though I'm not sure we ever invoke it quite like that anywhere other than in the qregex tests 16:26
What are you doing, ooc? 16:27
16:27 kaleem left
FROGGS fixing INTERPOLATE 16:29
... to not using an eval
jnthn You can't do it this way 16:30
You'll use the wrong language.
timotimo que? 16:31
¿Qué?, actually
jnthn Both NQP and Rakudo derive from QRegex::P6Regex to add things.
FROGGS jnthn: I need Perl6::RegexGrammar or something like that?
jnthn Well, but that ain't really registered as a compiler, but something like that, yes.
I think you may need a method in Perl6::Compiler for it. 16:32
16:32 lumi_ left
FROGGS okay... 16:32
jnthn But that's still kinda...interesting. :)
FROGGS see ya later, will read backlog
jnthn It'll need some care to get the lexical scope right...
It's kinda like you want to do whta eval does
Except somehow tell it to go straight into the regex parser, not into comp_unit. 16:33
pmichaud afk, not pretending
jnthn Well
not into statementlist
16:38 lumi_ joined 16:44 domidumont joined
mattp_ jnthn: when are you planning to make a jvm blog update, out of curiosity? 16:45
i find your status posts interesting :) 16:46
jnthn mattp_: I have a half written one, I'll try and get around to it soon :) 16:49
Had a lot of teaching/$dayjob stuff to take care of these last couple of weeks...
16:50 lumi_ left
jnthn Talking of which...time for decommute & 16:51
16:57 lumi_ joined 17:01 census left 17:02 ggoebel_ joined 17:08 skids joined 17:10 thou joined 17:13 lumi_ left 17:14 spider-mario joined 17:15 SunilJoshi joined 17:18 davidagain joined 17:19 snearch joined 17:20 lumi_ joined
colomon current STEP file read is up to 17gig memory and 5 hours processing time... so far... 17:24
17:25 wk joined
raiph colomon: is that still the same run you started a day or so ago? 17:27
colomon raiph: no and yes
raiph heh 17:28
colomon I ended up using a bash script so that each STEP file gets its own run of rakudo
raiph how big is the STEP file you're currently processing? 17:29
colomon I also stopped the bash script for a few hours yesterday, then took the already finished ones off the to-do list and started it again. 17:30
good question
29,809,774 bytes 17:31
davidagain should <<+>> work the same as (weird-double-angle-character)+(other-weird-double-angle-character)? 17:32
timotimo «+»
it should, yeah
davidagain yeah, that
hmm, ok, then I'm doing something else wrong
timotimo would you like to paste something? 17:33
i was wondering if >>. is actually the same thing as >>+ and such 17:34
r: say (1, 2, 3, 4) >>+ 10
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Missing << or >>␤at /tmp/9PW3FZNzNr:1␤------> say (1, 2, 3, 4) >>+⏏ 10␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤»
timotimo apparently it's something different
davidagain I'm just trying out p6 again 17:35
getting my feet under me
timotimo i see 17:36
17:36 Chillance joined
moritz timotimo: the difference between >>. and >>+<< is that the former has data only on one side 17:37
and thus only one dobule-angle arrow
davidagain BTW, when I go to www.perlfoundation.org/perl6/index.cgi and click on Perl6 documentation (www.perlfoundation.org/perl6/index....entation), then Perl6 tutorial (www.perlfoundation.org/perl6/index....tutorial), then chapter 3 (www.perlfoundation.org/perl6/index....al_part_3)
I get a page in German
is there a tutorial in English?
timotimo moritz: oh, so with a postfix operator, i'd be able to do the same thing? 17:38
moritz davidagain: start from www.perl6.org/documentation/ instead of from the wiki
17:38 lumi_ left
moritz timotimo: I think so, yes 17:39
timotimo r: sub postfix:<!> { [*] 1..$^a }; say (1, 2, 3, 4)>>!
p6eval rakudo 1c9939: OUTPUT«1 2 6 24␤»
timotimo apparently! that's pretty cool
davidagain moritz: thanks. FYI, if you just Google perl6 or perl6 tutorial, you land on the German page
moritz timotimo: I was just about to type the exact same example :-)
davidagain: do you happen to have a hl=de in the google URL?
davidagain nope 17:40
timotimo :D
davidagain alright, starting from www.perl6.org/documentation/ and clicking on "perl6 tutorials" leads me to a GitHub page (github.com/perlpilot/perl6-docs) 17:41
am I expected to download the tutorials?
moritz you can just read them on github 17:42
davidagain that's not very user-friendly
and the most recent changes are 2+ years ago
moritz for example github.com/perlpilot/perl6-docs/bl...-intro.pod
davidagain my understanding is that Perl6 has changed significantly over that time
moritz davidagain: you're very welcome to provide a more user-friendly interface
17:42 census joined
davidagain I'm welcome to do most anything, I imagine 17:43
but I'm your audience
a guy who actually wants to use p6 and not wait around
moritz we know that the documentation situation isn't good. Which is why i started doc.perl6.org
davidagain and ... you're turning me away
moritz but there's just finit amount of time and energy in each of us
davidagain understood. so maybe my best strategy is to continue waiting. 17:44
doc.perl6.org looks like a decent start at a reference work 17:45
17:45 lumi_ joined
davidagain which is helpful once one has got his head around the language 17:45
at the moment, i'm looking for learning materials
moritz so, have you tried the book?
davidagain I wasn't aware there was a book, no. 17:46
raiph davidagain: googles for perl 6 mostly catch a decade of old/bad information
davidagain: fwiw i created a custom google search: tinyurl.com/perl6now
davidagain I just started looking at this again
moritz davidagain: the very first entry on www.perl6.org/documentation/
timotimo doc.perl6.org/language/classtut - the beginning to that looks weird, why is the code separated in weird places?
moritz which has a link to github.com/downloads/perl6/book/20....23.a4.pdf 17:47
davidagain moritz: if you're referring to "Perl 6 and Parrot Essentials, Second Edition (O'Reilly book) (2004)" that says 2004
if not, then I'm not seeing a big obvious sign
timotimo looks like lots of stuff is rendered wrong
davidagain but leaving that aside - I'd prefer something more bite-sized
so I can get bootstrapped into using the REPL
moritz davidagain: the very first entry in the "For newcomers" box
diakopter timotimo: yeah; you're right
davidagain and then be more productive with deep material like a book
moritz davidagain: which has a link to a github repo and a PDF 17:48
raiph davidagain: try searching for whatever (eg tutorial) on the custom google link i gave
davidagain thanks raiph
how current is the book?
the github timestamps say years old, but not sure if that's an accurate read 17:49
moritz current enough for nearly all purposes
including learning Perl 6
davidagain alright, let me look at that
17:52 kivutar left
davidagain if I search the latest PDF, I only get one hit for "hyper" 17:52
(I'm looking to quickly understand hyperoperators, at the moment)
moritz and I thought you looked for introductory material 17:53
timotimo he knows how to program and wants to learn every nice feature of perl6? :)
moritz perlcabal.org/syn/S03.html#Hyper_operators
davidagain that's reference material, moritz
timotimo: you got it 17:54
I'm an old Perl guy
I know a handful of languages well, and how to program in them
now I want to use the cool new stuff
moritz davidagain: have you seen perlgeek.de/en/article/5-to-6 already? 17:55
davidagain in particular, hyperops and related features that allow me to be more expressive and concise with my programs
nope
but I like that there's a entry in the TOC for meta-ops
I also saw something like 12 days of Perl6 a while back 17:56
is that still relevant?
moritz uhm, link?
moritz doesn't know it off hand
davidagain let me see if I can find it
17:56 dakkar left
davidagain it was years ago 17:56
colomon was very excited about hyper-ops when he started programming in p6, but these days he uses the X and Z meta-ops more often.
17:56 lumi_ left
moritz colomon: same here 17:56
davidagain colomon: what ar ethose? 17:57
moritz cross and zip
davidagain perl6advent.wordpress.com/
moritz r: say <a b c> Xxx 1, 2
colomon rn: say "a".."d" X~ 1..3
p6eval rakudo 1c9939: OUTPUT«a a a b b b c c c␤»
rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«a1 a2 a3 b1 b2 b3 c1 c2 c3 d1 d2 d3␤»
raiph hyperops are a type of metaop, right?
TimToady hypers will come back into their own when we have compact arrays of natives
colomon raiph: yes
rn: say "a".."d" Z~ 1..3
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«a1 b2 c3␤»
TimToady hypers don't go through the list interface
diakopter moritz: did Heather ask to join the perl6 org
davidagain r: say + Z 1,2,3
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Undeclared name:␤ Z used at line 1␤␤»
davidagain used that wrong
17:58 SamuraiJack_ joined
timotimo r: say <a b c> Xx 1, 2 17:58
p6eval rakudo 1c9939: OUTPUT«a aa b bb c cc␤»
moritz davidagain: yes, perl6advent is relevant each year again
davidagain how do you say something(+) 1,2,3 to get 1+2+3
colomon r: say [+] 1, 2, 3
p6eval rakudo 1c9939: OUTPUT«6␤»
timotimo also interesting:
17:58 FROGGS left
spider-mario rn: say "a".."d" «~» 1..3 17:58
colomon davidagain: ^^
p6eval niecza v24-33-gfc6d5fd: OUTPUT«===SORRY!===␤␤".." and ".." are non-associative and require parens at /tmp/O4NTnfUHHB line 1:␤------> say "a".."d" «~» 1..⏏3␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (…
..rakudo 1c9939: OUTPUT«===SORRY!===␤Operators '..' and '..' are non-associative and require parenthesis␤at /tmp/EU8NA5L8jr:1␤------> say "a".."d" «~» 1.⏏.3␤ expecting any of:␤ dotty method or postfix␤»
timotimo r: say [\+] 1, 2, 3, 4, 5
p6eval rakudo 1c9939: OUTPUT«1 3 6 10 15␤»
spider-mario oops.
rn: say ("a".."d") «~» (1..3)
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«a1 b2 c3 d1␤»
17:58 SamuraiJack left
davidagain is ~ concat? 17:58
TimToady is amused every time he sees factorial defined as [*] 1..$n when 2..$n works just as well and is faster
colomon davidagain: yes
string concat 17:59
davidagain ok, this is what I'm looking for
diakopter moritz: her github id is Cynede
timotimo TimToady: does it also work properly when you supply $n = 1?
davidagain TimToady: FYI, your p6 entries on RosettaCode are what got me excited about p6 again
TimToady nr: say [*] ()
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«1␤»
TimToady because of that
timotimo ah, nice.
davidagain TimToady: identity elements! neat. 18:00
spider-mario r: say [*]
TimToady nr: say [==]()
p6eval rakudo 1c9939: OUTPUT«1␤»
rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«True␤»
timotimo is that just multi infix:<*>() { 1 }? or how does that work?
TimToady yes, it's just defined using the nullary 18:01
timotimo (and how would that work?)
spider-mario r: say [%]
p6eval rakudo 1c9939: OUTPUT«No zero-arg meaning for infix:<%>␤ in method gist at src/gen/CORE.setting:10555␤ in sub say at src/gen/CORE.setting:7614␤ in block at /tmp/FTL1zqvAas:1␤␤»
spider-mario see? :)
davidagain r: multi infix:<*>() { 100 } ; say [*] (); 18:02
p6eval rakudo 1c9939: OUTPUT«Ambiguous call to 'infix:<*>'; these signatures all match:␤:($x = { ... })␤:()␤␤ in sub infix:<*> at src/gen/CORE.setting:2866␤ in sub at src/gen/CORE.setting:13032␤ in block at /tmp/plrhUl2ahM:1␤␤»
davidagain hmm, need a local def
r: local multi infix:<*>() { 100 } ; say [*] ();
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Undeclared routine:␤ local used at line 1␤␤»
davidagain that's now how you spell local, apparently
TimToady subs are lexical in p6 18:03
spider-mario r: my &infix:<*> = {100}; say [*];
p6eval rakudo 1c9939: OUTPUT«100␤»
18:03 cognominal joined
TimToady but multis will mix in with the core's proto 18:03
18:03 lumi_ joined
moritz diakopter: do it yourself :-) 18:04
diakopter just did; thx
moritz diakopter++
diakopter phenny: inform Heather you're now assimilated
raiph davidagain: a search for "hyper" using perl6now gives a nice spread of useful results with near zero false positives
davidagain thanks raiph. I tried "tutorial" on perl6now, but it didn't improve my results 18:05
let me try hyper
timotimo oh wow, perl6now is *old*
raiph davidagain: did the tutorial search show perl6maven? 18:06
timotimo: huh?
davidagain nope - but I got it under "hyper"
never seen it before
timotimo 2005/2006
davidagain the first couple hits for hyper are the advent calendar
... for 2009
raiph timotimo: hmm. i created it a few months ago...
timotimo perl6now.com/fom-serve/cache/1.html - this? 18:07
raiph davidagain: that's probably good info (i was careful about the sources searched)
timotimo: ah. no. this: tinyurl.com/perl6now
timotimo ah, ok, neat 18:08
now.perl6.org might be nice.
raiph davidagain: the only change related to hypers i'm aware of since 2009 is that, aiui, they don't recurse in to their operands 18:09
moritz not hard to do :-)
davidagain thanks raiph.
18:09 SamuraiJack_ left
davidagain just generally concerned with figuring out whether I can trust a specific doc or not 18:10
if I see a doc a couple years old relating to a language currently under development, I get skittish
I was hoping to just be a "user" of p6, not having to dive into the dev side or map out the territory 18:11
moritz now.perl6.org/ now redirects to tinyurl.com/perl6now
timotimo cool, moritz :)
18:12 FROGGS joined
davidagain hey, neat, KEEP and UNDO 18:13
you guys have been busy
raiph davidagain: i'm guessing p6 isn't where it sounds like you want it to be
timotimo there's an amazing amount of stuff actually implemented in rakudo already
davidagain raiph: yeah, I'm getting that sense.
timotimo also, a lot of somewhat important stuff still missing :( 18:14
18:14 lumi_ left
davidagain I can see p6 being my new favorite language, when it's born 18:16
TimToady it has a strong heartbeat already, and a strong kick too :)
moritz just needs to learn to walk a bit faster and steadier
TimToady can't run very fast yet though :)
raiph davidagain: after following p6 since the start, and mulling what the maturity arc might look like, based on the players, culture, spec, parrot, rakudo, etc., in 2009 I guessed late 2014 as the likely timing of p6 being just about ready for the first of those focused on using first, contributing a distant second. 18:18
18:19 FROGGS left
davidagain raiph: how are you feeling about that prediction today? 18:19
18:20 lumi_ joined
davidagain hey, neat, you can plug p6 into Padre 18:22
let's see if I can get that going
18:22 FROGGS joined
jnthn Seems I may be able to pin the spectest time regression in md-nqp down to a startup time regression. 18:24
The numbers match up
raiph davidagain: i'm confident it's closer than steven haryanto's 2027 estimate ;) 18:25
(blogs.perl.org/users/steven_haryant...t-on.html)
timotimo noooo, more negativity :( 18:28
18:30 lumi_ left 18:34 snearch left, TimToady joined
dalek ecs: 8efa3ac | (Rob Hoelz)++ | S28-special-names.pod:
Correct Match.start/Match.end -> Match.from/Match.to
18:35
18:36 TimToady left 18:37 FROGGS left, TimToady joined
TimToady is back; hope you didn't say anything interesting :) 18:38
davidagain aww, that post was depressing
TimToady non carborundum illigitimi and all that 18:39
18:39 lumi_ joined
davidagain maybe I'll still take a whack at implementing a mini language in p6 18:40
18:40 Liz joined, Liz is now known as lismat, lismat is now known as lizmat
davidagain don't care about perf, just want to get the flavor of the syntax 18:40
except p6 likes yelling at me and telling me my infixes are stopped 18:41
jnthn Implementing a mini-langauge is probably a pretty good way to learn grammars :)
davidagain or not stopped
or insufficiently stopped
dunno
jnthn: yeah, that's the idea :)
plus, I'd like a language that does the hard parts for me
feels like p6 wants to do that 18:42
TimToady see rosettacode.org/wiki/Parse_EBNF#Perl_6 for an example parser 18:44
or STD.pm6 :)
davidagain TimToady: I'm actually looking at RC right now 18:45
one thing that sticks out at me: you have comments on the identifier and literal tokens, but they don't seem to be introduced with a comment character
what's up with that?
18:47 lumi_ left
TimToady they're introduced with a # 18:47
don't let the highlighting fool you
the point of the comments is that highlighter is getting fooled
davidagain too late
ah, I see
18:48 crab2313 left
TimToady I think at that point rakudo didn't understand \x notation in a character class, which would be another way to get around it 18:48
18:48 FROGGS joined
davidagain how do you say $#array? 18:51
TimToady generally you don't, since ranges can exclude the endpoint 18:52
0 ..^ @array
or ^@array for short
but @array.end is the most exact equiv
davidagain I like ^@array 18:53
TimToady we end up using it all the time
well, lots of the time :)
sometimes instead we say: for @array.kv -> $index, $value { ... }
rather than reindexing inside the loop
lee__ should [1,2,3].gist look the same as (1,2,3).gist ? 18:55
davidagain wait, you can do kv on @s and %s?
neato
[Coke] r: say [1,2,3].gist ; say (1,2,3).gist 18:56
p6eval rakudo 1c9939: OUTPUT«1 2 3␤1 2 3␤»
lee__ i was confused because i made @a = [1,2,3]; and the gist was just "1 2 3"
TimToady lee__: .perl will distinguish those 18:57
r: my @a = [1,2,3]; say @a.perl 18:58
p6eval rakudo 1c9939: OUTPUT«Array.new([1, 2, 3])␤»
TimToady n: my @a = [1,2,3]; say @a.perl
p6eval niecza v24-33-gfc6d5fd: OUTPUT«[[1, 2, 3]].list␤»
lee__ i see, thanks!
TimToady I like niecza's use of [] for the outer array better
lee__ if .gist is meant for human interpretation i think some indication that is an array would be good 18:59
davidagain r: for [1,2,3].kv -> $i, $v { say $i ~ ":" ~ $v }
p6eval rakudo 1c9939: OUTPUT«0:1␤1:2␤2:3␤»
TimToady nr: { a => 42 }.perl.say
p6eval rakudo 1c9939, niecza v24-33-gfc6d5fd: OUTPUT«{"a" => 42}␤»
davidagain r: for [1,2,3].kv -> $i, $v { say [[~]] $i , $v }
p6eval rakudo 1c9939: OUTPUT«01␤12␤23␤»
davidagain r: for [1,2,3].kv -> $i, $v { say [[~]] $i , ":", $v } 19:00
p6eval rakudo 1c9939: OUTPUT«0:1␤1:2␤2:3␤»
davidagain heh
TimToady the inside [] is a noop
LlamaRider P5 to P6 -> Porting a method that accepted both %options and a ref $options on input... Should that be a multi with signatures (*@options) and (%options) ? I guess where the % rule comes first.
davidagain I get confused with <<>> vs [] 19:01
the << looks double to me
(I know it's really supposed to be a single glyph, but I can't type it)
TimToady always uses «»
I'll bet you can :)
what is your current environment?
davidagain 73*F, 25% humidity
mostly clean 19:02
TimToady and which OS might you be on?
davidagain win 7 x64
19:02 FROGGS left
TimToady hmm, dunno about that as well 19:02
davidagain it's ALT+gibberish
or charmap
or a macro, if I felt like it
TimToady most of us end up defining a compose key 19:03
some editors like vi have similar bindings
colomon taught his text editor that >>[tab] should be »
davidagain I'm hoping to use Padre
TimToady maybe ask jnthn++ how he types 'em, since he's on windows 19:04
davidagain or some other GUI crutch
TimToady thing is, a compose key will work with many different apps
19:04 rindolf joined
TimToady and you can type cool things like 73° 19:04
davidagain that's a warm thing 19:05
TimToady not for California, where almost everything is cool :)
rindolf Hi all.
TimToady --> lunch 19:06
19:11 SunilJoshi left 19:15 kaleidic joined 19:23 FROGGS joined
tadzik hello #perl6 19:24
colomon o/ 19:26
19:28 cognominal left
colomon r: say .14.Rat.perl 19:33
p6eval rakudo 1c9939: OUTPUT«0.14␤»
colomon r: say (pi - 3).Rat.perl
p6eval rakudo 1c9939: OUTPUT«<16/113>␤»
colomon r: say (pi - 3).Rat(0.01).perl
p6eval rakudo 1c9939: OUTPUT«<1/7>␤» 19:34
19:37 fglock left 19:38 rindolf left 19:39 rindolf joined
masak ahoyla, #perl6 19:40
I got ax'd a question on Twitter. gist.github.com/arafatkamaal/5159954
not sure what to reply.
the tl;dr seems to be "can Grammar::Tracer be plugg'd into Perl6::Grammar?" 19:41
I don't think it can, 'cus Grammar::Tracer is Perl 6 and Perl6::Grammar is nqp. but I'm not sure.
19:43 alec__ left
jnthn masak: Correct answer. But NQP has some --rxtrace support which sorta outputs similar. Bad news: it kinda bitrat at the point I did some of the changes to keep our languages straight 19:44
masak is it unbitrottable? 19:45
jnthn Yeah
masak then I believe I'll relay that answer. 19:48
thanks.
19:49 unknowndna joined
FROGGS read "<TimToady> generally you don't, since ranges can exclude the endpoint" as "...since regexes can..." and thought there is another piece to implement 19:51
btw, that is what you missed pals: blogs.perl.org/users/maettu/2013/03...day-1.html 19:52
jnthn FROGGS: (another piece to implement) welcome to the life of a Perl 6 implementor... :) 19:54
19:54 cognominal joined
diakopter masak: in the backlog last night I made a bunches of LTA errors; I would submit them, except I suspect maybe some of them have been reported before. Since you're the expert on that, I thought I'd ask you to take a look 19:54
FROGGS jnthn: hehe, yeah >.<
masak diakopter: I'll backlog. thanks for the heads-up. 19:57
diakopter masak: here's a fun one: 19:58
r: $1111111111111111111
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Any␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805 (src/gen/CORE.setting.pir:162984) (src/gen/CORE.setting:10563)␤called from Sub 'MAIN' pc 38…
diakopter jnthn: you may giggle too ^^ 19:59
niecza's message is even funnier:
n: $1111111111111111111
p6eval niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: weird object in sub_finish Int␤ at /home/p6eval/niecza/src/NieczaBackendDotnet.pm6 line 242 (StaticSub.finish @ 11) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 4257 (NieczaActions.comp_unit @ 15) ␤ at /home/p6eval/niecza/src…
FROGGS niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: you are a weirdo in front of your keyboard at your house␤ at /home/ line 242 (StaticSub.finish @ 11) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 line 4257 (NieczaActions.comp_unit @ 15) ␤ at /home/p6eval/niecza/src… 20:01
jnthn I see these are submissions to be tagged [WEIRD} :P
FROGGS .oO( low hanging weirdo? ) 20:02
masak diakopter: hihi
diakopter wat
or is that 'hi' as in 'hee' 20:03
FROGGS I guess that's the sound when you giggle
diakopter r: $2147483647 20:04
p6eval rakudo 1c9939: ( no output )
diakopter r: $2147483648
p6eval rakudo 1c9939: OUTPUT«Cannot use negative index -2147483648 on Any␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805 (src/gen/CORE.setting.pir:162984) (src/gen/CORE.setting:10563)␤called from Sub 'MAIN' pc 38…
diakopter is enjoying xfinitywifi at wendy's 20:06
masak diakopter: it was 'hihi' as in 呵呵. sorry for the confusion. 20:07
diakopter gee that helps :P
masak 哈哈
masak submits rakudobug 20:08
diakopter masak: conveniently for you, they start at the very top of today's clog 20:09
20:12 rindolf left
diakopter :> I might as well reproduce them all here for those who won't view the clog; <cough> jnthn 20:12
r: class F { also is F; }
p6eval rakudo 1c9939: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 97799 (src/gen/CORE.setting.pir:46529) (src/gen/CORE.setting:9487)␤called from Sub 'parents' pc 6770 (src/gen/perl6-metamodel.pir:3346) (src/gen/Metamodel.pm:647)␤called from Sub 'compute_mro' pc…
20:12 rindolf joined
diakopter r: class ::F { ... }; class F is ::F { } 20:12
p6eval rakudo 1c9939: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 97799 (src/gen/CORE.setting.pir:46529) (src/gen/CORE.setting:9487)␤called from Sub 'parents' pc 6770 (src/gen/perl6-metamodel.pir:3346) (src/gen/Metamodel.pm:647)␤called from Sub 'compute_mro' pc…
diakopter r: role F { ... }; class F does F { }
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Method 'is_composed' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤»
diakopter r: role F { ... }; class G does F { }
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤None of the parametric role variants for 'F' matched the arguments supplied.␤Cannot call ''; none of these signatures match:␤␤» 20:13
diakopter r: class :: { }; ::(::)
p6eval rakudo 1c9939: OUTPUT«No such symbol 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 47::!UNIT_MARKER 51'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805
..(src/gen/CORE.setti…
masak submits rakudobug for 'also is'
masak submits rakudobug for 'F is ::F'
diakopter r: $::
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤ResizablePMCArray: index out of bounds!␤»
masak submits rakudobug for 'F does F'
diakopter r: $/.$/
p6eval rakudo 1c9939: OUTPUT«No such method 'Any' for invocant of type 'Any'␤ in at src/gen/BOOTSTRAP.pm:882␤ in any at src/gen/BOOTSTRAP.pm:879␤ in block at /tmp/xq8OLEhFeA:1␤␤»
masak submits rakudobug for 'G does F'
jnthn That G does F one is...hm 20:14
diakopter r: ()...()
masak submits rakudobug for '::(::)'
p6eval rakudo 1c9939: OUTPUT«(timeout)»
jnthn Vaguely accurate in so far as the role isn't considered declared until you're further one.
diakopter r: say .HOW.new.Capture
p6eval rakudo 1c9939: OUTPUT«No such method 'has-accessor' for invocant of type 'NQPAttribute'␤ in method Capture at src/gen/CORE.setting:971␤ in block at /tmp/ed7Za1laA4:1␤␤»
masak jnthn: I don't understand. is it because of the '...' ? 20:15
diakopter: I don't see the problem with the '$/.$/' one.
jnthn masak: Yeah. But a bunch of those almost certianly wnat to so "no, you can't do a stubbed role"
masak diakopter: nor with the '()...()' one. it will never smartmatch, so it's infinite.
diakopter well, me neither; it just looked like something I don't understand 20:16
masak diakopter: I understand it and it's an infinite loop.
diakopter the prior one
masak oh, ok.
I just don't see how the prior one is wrong.
diakopter like I said, me neither
masak r: Any.new.Any 20:17
p6eval rakudo 1c9939: OUTPUT«No such method 'Any' for invocant of type 'Any'␤ in block at /tmp/954NWtqmCL:1␤␤»
jnthn Just 'cus you don't understand it doesn't mean it's a bug :P
diakopter right.
masak that's why I'm asking and not submitting it ;)
diakopter that's why I was asking and not submitting it
masak we're in some weird kind of triangular agreement.
moritz if we don't know what the right behavior is, please don't submit bug reports
diakopter you're a triangle.
moritz it makes it really hard to close them 20:18
masak moritz: oh no, not you too! :P
now we're a square.
moritz so they are more of a liability than an asset
masak moritz: it's funny when you add to the discussion by repeating what three people just agreed on ;)
moritz \o/
moritz didn't backlog at all
diakopter masak: I think he was referring to ones you submitted, tho
moritz sorry 'bout that 20:19
diakopter k no
masak no, those are bugs.
moritz I'm talking very generally
masak <jnthn> Just 'cus you don't understand it doesn't mean it's a bug :P
<masak> that's why I'm asking and not submitting it ;)
<diakopter> that's why I was asking and not submitting it
diakopter so why does $/.$/ turn into Any.new.Any 20:20
jnthn r: say $/
p6eval rakudo 1c9939: OUTPUT«(Any)␤»
masak that's why, yes.
r: Any.Any
p6eval rakudo 1c9939: OUTPUT«No such method 'Any' for invocant of type 'Any'␤ in block at /tmp/jzejzomQMJ:1␤␤»
masak probably turns into that, actually.
diakopter ok, but how is $/ a method name?
jnthn The $foo.$meth thing 20:21
Becomes $meth($foo)
diakopter $_='say'; $_.$_
r: $_='say'; $_.$_
p6eval rakudo 1c9939: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Str'␤ in at src/gen/BOOTSTRAP.pm:895␤ in any at src/gen/BOOTSTRAP.pm:879␤ in block at /tmp/2iDFBZ0RVq:1␤␤»
diakopter wat. 20:22
jnthn Which in turn complains it doesn't have a postcircumfix:<( )> meaning it's not invokable I guess
Don't confuse $foo.$meth with $foo."$meth"()
diakopter ohhh
mst mmm ... meth ...
diakopter r: $_=&say; $_.$_ 20:23
p6eval rakudo 1c9939: OUTPUT«sub say() { ... }␤»
diakopter \o/
yeah I'd forgotten all about that method object thing 20:24
20:26 kurahaupo joined
masak moritz: generally, when you see '* masak submits rakudobug', it's because I think there's an observable that isn't fulfilled 20:26
(where 'generally' means 'always, except in perhaps a handful of cases)
'
20:27 rindolf left
diakopter r: say nqp::isconcrete(Cursor.new); &(/a/)(Cursor.new) 20:27
p6eval rakudo 1c9939: OUTPUT«1␤Cannot look up attributes in a type object␤ in any !cursor_start_all at src/stage2/QRegex.nqp:617␤ in regex at /tmp/4CThy8RaZq:1␤ in block at /tmp/4CThy8RaZq:1␤␤»
20:27 domidumont left
diakopter [query: wha is the type object] 20:28
*what
skids an typed undefined value.
diakopter right, what's undefined there 20:29
masak r: class A { ... }; class B is A {}; class A { also is B } 20:30
p6eval rakudo 1c9939: ( no output )
masak r: class A { ... }; class B is A {}; class A { also is B }; say "alive"
p6eval rakudo 1c9939: OUTPUT«alive␤»
masak r: class A { ... }; class B is A {}; class A { also is B }; say A ~~ B; say B ~~ A
p6eval rakudo 1c9939: OUTPUT«No such method 'ACCEPTS' for invocant of type 'B'␤ in block at /tmp/lec3O1iu6C:1␤␤»
jnthn That one is RT'd.
masak aye.
well, one very close to it.
jnthn I think I'll fix it by forbidding inheriting from a stub. 20:31
masak yeah. 20:36
that's the conservative thing to do, I think.
diakopter jnthn: but I thought inheriting from a stub was one of the main uses of stubbing, as in cyclical types 20:37
jnthn diakopter: I can't see how it's a main use if it doesn't work :P
It's typically used for cyclical usage.
You can't have cyclical types. :)
If you mean inheritance cycles.
diakopter well, I meant if one of the links was via an attribute or other type reference in a signature or something 20:38
masak r: class :: { }; ::(::)
p6eval rakudo 1c9939: OUTPUT«No such symbol 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 47::!UNIT_MARKER 51'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805
..(src/gen/CORE.setti…
jnthn Sure, that's fine. 20:39
masak diakopter: you deserve some kind of bizzarro prize for coming up with this one.
dalek kudo/md-nqp: daabef9 | jnthn++ | src/Perl6/ (4 files):
Sort multi candidates at compile time.

This is instead of doing so on the first call.
kudo/md-nqp: 3b9db0b | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Refactor to avoid some control exception use.
diakopter masak: actually it's just the latter part
masak r: ::(::)
p6eval rakudo 1c9939: OUTPUT«No such symbol 'GLOBALish 7::EXPORT 11::$?PACKAGE 15::::?PACKAGE 19::$_ 23::$/ 27::$! 39::$=pod 43::!UNIT_MARKER 51'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805
..(src/gen/CORE.setti…
masak so it is.
diakopter it's not an internal parrot error; it's the stringification of the pseudo-stash
masak adds this to the ticket 20:40
jnthn r: ::.Str
p6eval rakudo 1c9939: ( no output )
jnthn r: say ::.Str
p6eval rakudo 1c9939: OUTPUT«GLOBALish 7 EXPORT 11 $?PACKAGE 15 ::?PACKAGE 19 $_ 23 $/ 27 $! 39 $=pod 43 !UNIT_MARKER 51␤»
jnthn eek...what?!
masak why does it say "No such symbol"?
diakopter masak: no idea
masak if it's just a stash, shouldn't it just return Any?
jnthn masak: ::('wtf')
r: ::('wtf')
p6eval rakudo 1c9939: OUTPUT«No such symbol 'wtf'␤current instr.: 'throw' pc 334686 (src/gen/CORE.setting.pir:150131) (src/gen/CORE.setting:9331)␤called from Sub 'sink' pc 366805 (src/gen/CORE.setting.pir:162984) (src/gen/CORE.setting:10563)␤called from Sub 'MAIN' pc 381 (src/gen/perl6.pir:146…
jnthn masak: ::(...) != ::<...> 20:41
r: ::<wtf>
p6eval rakudo 1c9939: ( no output )
masak oh.
jnthn ::(...) is the thing that goes interpolating
masak ok, not a bug, then.
diakopter r: say ::<>
p6eval rakudo 1c9939: OUTPUT«PseudoStash.new("GLOBALish", GLOBAL, "EXPORT", EXPORT, "\$?PACKAGE", GLOBAL, "::?PACKAGE", GLOBAL, "\$_", Any, "\$/", Any, "\$!", Any, "\$=pod", Array.new(), "!UNIT_MARKER", !UNIT_MARKER, )␤»
masak unsubmits that one
jnthn And that's zen hash indexing. 20:42
So, looks right :)
diakopter why'd you "eek...what?!"?
earlier
jnthn diakopter: The numbers.
diakopter oh. what are those anyway
jnthn That's what I want to know. 20:43
diakopter indexes into the hash's array?
masak they're what those symbols are sold for at a London auction :P
jnthn oh...it's a context underneath...is hash indexing returning...
Oh, indexing is fine, it's iteration. 20:44
masak diakopter++ # fuzzing 20:46
diakopter r: for :: { say $_.WHAT }
p6eval rakudo 1c9939: OUTPUT«(Pair)␤(Pair)␤(Pair)␤(Pair)␤(Pair)␤(Pair)␤(Pair)␤(Pair)␤(Pair)␤»
diakopter r: say ::.values
p6eval rakudo 1c9939: OUTPUT«7 11 15 19 23 27 39 43 51␤»
diakopter r: say ::.values
p6eval rakudo 1c9939: OUTPUT«7 11 15 19 23 27 39 43 51␤»
LlamaRider I need some help with finding docs/examples on writing new methods in P6 classes. Porting P5 idioms is tough otherwise... 20:51
moritz r: my int $x: say ::.values
LlamaRider and I mean "new" methods
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Confused␤at /tmp/TZHjKQdqCe:1␤------> my int $x:⏏ say ::.values␤ expecting any of:␤ colon pair␤»
diakopter moritz: this is Windows, not unix
moritz LlamaRider: doc.perl6.org/language/objects#Obje...nstruction 20:52
masak LlamaRider: www.perlgeek.de/blog-en/perl-6/obje...ation.html
LlamaRider thanks moritz++ , masak++ . The second link is especially helpful 20:55
masak yeah, I always like that one. 20:57
liked*
LlamaRider one thing remains unclear. The claim is I can allow arbitrary fields via self.bless(*, |%options); 20:58
how do I access them after that? Are they $. $! or something else
20:59 xilo left
masak moritz++ # welcoming pushkar in the backlog :) 21:00
diakopter r: .say ^..^ say 'alive' 21:01
p6eval rakudo 1c9939: OUTPUT«(Any)␤alive␤»
diakopter wheh
masak LlamaRider: they must be $.attr vars in the class for that to work.
21:02 skids left
masak davidagain: re toy programming language: you might want to check out Yapsi. 21:04
21:05 kaare__ left 21:06 ElDiabolo joined
LlamaRider r: class A { has $.key; }; A.new(:key('val')).key.say; 21:11
p6eval rakudo 1c9939: OUTPUT«val␤»
LlamaRider class B { method new(%opt) { self.bless(*,|%opt); }; }; B.new({"key"=>"val"}).key.say;
r: class B { method new(%opt) { self.bless(*,|%opt); }; }; B.new({"key"=>"val"}).key.say;
p6eval rakudo 1c9939: OUTPUT«No such method 'key' for invocant of type 'B'␤ in block at /tmp/QOmddoc8zB:1␤␤»
LlamaRider r: class B { has $.key; method new(%opt) { self.bless(*,|%opt); }; }; B.new({"key"=>"val"}).key.say; 21:14
p6eval rakudo 1c9939: OUTPUT«val␤»
LlamaRider masak: This leads me to believe they're not exactly the same as $.
21:15 xilo joined
LlamaRider Or maybe the difference is only in the getters and setters not being created? 21:15
masak yeah. 21:17
no attr, no accessor.
(besides the fact that it also drops the pair on the floor because there's no attr)
this ain't JavaScript. ;) 21:18
LlamaRider but then... how do I access those fields from within methods? Using $. is consistently giving errors. 21:19
but then... how do I access those fields from within methods? Using $. is consistently giving errors. 21:20
argh, again double-posted :/
FROGGS LlamaRider: you usually use $!key within methods
LlamaRider moves IRC to a different workspace
masak FROGGS: it depends.
FROGGS: I used to consistently do $!attr in methods, but... 21:21
FROGGS only when you declare an attr you do $.key or $!key, no?
masak FROGGS: ...it depends whether you're taking an "inside view" or an "outside view" of the class.
LlamaRider r: class B { method new(%opt) { self.bless(*,|%opt); }; method k { $!key.say; } }; B.new({"key"=>"val"}).k;
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Attribute $!key not declared in class B␤at /tmp/7VKbyc4APY:1␤------> self.bless(*,|%opt); }; method k { $!key⏏.say; } }; B.new({"key"=>"val"}).k;␤»
masak r: class A { has $.foo; method show-foo { say $.foo } }; class B is A { method foo { callsame() * 2 } }; B.new.show-foo 21:22
p6eval rakudo 1c9939: OUTPUT«use of uninitialized value of type Str in string context in method foo at /tmp/nsrgsOzr35:1␤␤use of uninitialized variable of type Any in numeric context in method foo at /tmp/nsrgsOzr35:1␤␤0␤»
masak r: class A { has $.foo = 21; method show-foo { say $.foo } }; class B is A { method foo { callsame() * 2 } }; B.new.show-foo
p6eval rakudo 1c9939: OUTPUT«42␤»
masak FROGGS: I believe that sums it up. 21:23
FROGGS since when does that work?
masak FROGGS: because .show-foo uses $.foo, not $!foo, B can indirectly override its behavior.
FROGGS: since always.
FROGGS hmmm, weird :o)
masak not really. 21:24
LlamaRider so $.foo does a call to the foo method? 21:25
FROGGS no, just weird that I believe to remember that this didn't work
masak LlamaRider: yes.
dalek p: 47effd6 | jnthn++ | src/QAST/Operations.nqp:
nqp::gethllsym and nqp::bindhllsym

Like getcurhllsym/bindcurhllsym, but with the HLL specified.
21:28
LlamaRider I am still stuck btw. I don't see why self.bless(*, |%opt); is recommended if you can't access the fields you declare.
masak it doesn't create any new fields in the class. 21:29
you have to declare any attributes you want in the class. if you don't declare them, they don't exist.
you don't get attributes you don't declare. undeclared attributes don't exist. they don't exist if you don't declare them.
if you want them to exist, you have to declare them. 21:30
LlamaRider :D
masak hope that helps. :)
LlamaRider so what is bless doing with its arguments? 21:31
it helps, but I am not yet reaching the "aha" moment :)
21:31 ElDiabolo left
masak bless maps any named arguments to any attributes in the class(es). 21:32
21:33 labster joined
masak if the pairing comes away with attributes or named args unmatched to each other, it doesn't care much. 21:33
21:33 prammer joined
LlamaRider but.. it should throw an error and give me inner peace 21:34
arguments disappearing into nothingness is troubling, that's one of the reasons I was so confused right now
r: class B { method new(%opt) { self.bless(*,|%opt); };}; B.new({"key"=>"val"}); 21:35
p6eval rakudo 1c9939: ( no output )
LlamaRider I'm thinking of a " attribute key was never declared! " error, or something on those lines 21:36
and this is also making my P5 port slightly more involved, I have to find all places the authors were doing $self->{new_secret_field_no_one_should_know_about} = 1; 21:37
and create "has" declarations for them
which is impossible for $self->{shift} = " Who knows what key this is" 21:38
masak LlamaRider: there has been talk about that kind of error.
LlamaRider: it'd have to be at runtime, though.
LlamaRider masak: runtime is quite ok, as long as it's there
masak LlamaRider: if you want objects with keys that don't really have to be declared, maybe you really want a hash? 21:39
LlamaRider Sure, am extra level of indirection always solves the problem :) 21:41
but then I am losing all of P6 OO nice-ness
since all my attributes need to end up inside that has
hash*
masak I guess you could start MOPing around, too. 21:42
and create a custom kind of class that didn't have to declare attributes.
but that's unexplored territory, I believe.
LlamaRider I don't know enough to be OOPing yet, let alone MOPing :) 21:43
masak *nod*
LlamaRider Of course I would immediately agree $self->{shift} is bad style and should've never been allowed in there in the first place.
so maybe I would port with a vengeance 21:44
masak++ at least now I know you can't do the old tricks anymore
21:45 ElDiabolo joined 21:48 ElDiabolo left 21:49 kaleidic left 21:59 SmokeMachine left 22:01 cognominal left 22:05 Sifr joined 22:10 PacoAir left 22:17 bluescreen10 left
dalek rl6-roast-data: de88f80 | coke++ | / (4 files):
today (automated commit)
22:19
22:19 spider-mario left
[Coke] rakudo down to 9 failures, niecza 8, pugs 7 22:21
here's a new rakudo one: +integration/weird-errors.t 7 - Typed, non-internal exception
jnthn Hm, wonder what that is 22:23
LlamaRider r: class A {my $.counter; method new() {$.counter++; self.bless(*); }; }; A.new; A.counter.say; 22:24
p6eval rakudo 1c9939: OUTPUT«1␤»
LlamaRider r: class A {my $.counter; multi new() {$.counter++; self.bless(*); }; }; A.new; A.counter.say;
p6eval rakudo 1c9939: OUTPUT«===SORRY!===␤Variable $.counter used where no 'self' is available␤at /tmp/ASxhJ10i8L:1␤------> A {my $.counter; multi new() {$.counter⏏++; self.bless(*); }; }; A.new; A.counte␤ expecting any of:␤ statement list␤ …
[Coke] r: say '1X08'..'1X12'
p6eval rakudo 1c9939: OUTPUT«"1X08".."1X12"␤»
LlamaRider Is this a bug or is there a multi-method difference?
[Coke] r: say '1X08'..'1X12'.list 22:25
p6eval rakudo 1c9939: OUTPUT«"1X08"..("1X12",).list.item␤»
[Coke] r: say ('1X08'..'1X12').list
p6eval rakudo 1c9939: OUTPUT«1X08 1X09 1X10 1X11 1X12␤»
[Coke] eval: print '1X08'..'1X12'
that's different from the p5 behavior, which doesn't rangify all strings. 22:26
TimToady LlamaRider: that's not a multi-method; you wrote a multi-sub instead 22:27
try 'multi method new' 22:28
LlamaRider r: class A {my $.counter; multi method new() {$.counter++; self.bless(*); }; }; A.new; A.counter.say;
p6eval rakudo 1c9939: OUTPUT«1␤»
LlamaRider \o/
TimToady++ thanks!
wait, class variables aren't visible in subs? That could also be a bug
jnthn $.foo is $(self.foo) 22:29
TimToady $.foo is is a method call
LlamaRider maybe I need masak to repeat this another 10 times to me :D sorry, got it now
masak no, you're fine. 22:38
you're onto other issues now :P
dalek ast: 4bd5589 | (Timo Paulssen)++ | S05-substitution/subst.t:
test for RT #83552
22:44
22:53 skids joined
dalek kudo/md-nqp: e3db648 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Eliminate some get_root_global usages.
22:54
kudo/md-nqp: cf49051 | jnthn++ | src/ (3 files):
Typed exceptions for multi-dispatch failure.
jnthn moritz: I suspect the approach in ^^ will work out as an approach for typed exceptions from MOP stuff, fwiw.
dalek ast: b9fb830 | (Timo Paulssen)++ | S32-exceptions/misc.t:
a test for RT #78314
22:58
timotimo i just closed a bug ending in 3 14 on the 14th of march :)
jnthn timotimo++ # attention to detail :) 22:59
timotimo: rt.perl.org/rt3/Ticket/Display.html?id=117125 may be closable 23:00
timotimo: I think you added a test
timotimo oh yes indeed 23:01
thank you
masak 'night, #perl6 23:07
TimToady o/
LlamaRider o/ masak 23:21
FROGGS gnight all 23:22
jnthn o/ FROGGS
23:55 Chillance left
jnthn 'night, #perl6 23:59