Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2017-03-09

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:03 BenGoldberg joined #perl6
00:08 daxim joined #perl6
00:20 mcmillhj joined #perl6
00:32 zakharyas joined #perl6
00:37 mcmillhj joined #perl6
00:50 skids m: use nqp; BEGIN { grammar fee { }; my $b := fee."!cursor_init"("bar",:0p); say "simple grammar has a " ~ nqp::getattr($b,Cursor,"\$!braid").^name; role foo { }; my $c := nqp::atkey(%*LANG, "MAIN").^mixin(foo)."!cursor_init"("bar",:p(0)); "mixed-in grammar attributes:".say; .name.say for $c.^attributes; say "Mixed in grammar .braid method returns a " ~ $c.braid.^name; nqp::getattr($c,Cursor,"\$!braid").say  }
00:50 camelia rakudo-moar cb4147: OUTPUT: «simple grammar has a Braid␤mixed-in grammar attributes:␤$!shared␤$!from␤$!pos␤​$!match␤$!name␤$!bstack␤$!cstack␤$​!regexsub␤$!restart␤$!braid␤Mixed in grammar .braid method returns a Braid␤5===SORRY!5=== Error while compiling …»
00:51 skids This gets tripped when using .FOREIGN_LANGUAGE from a slang.
00:53 mcmillhj joined #perl6
00:54 raschipi joined #perl6
00:54 skids .tell TimToady http://irclog.perlgeek.de/p​erl6/2017-03-09#i_14230054 https://github.com/tadzik/Gr​ammar-BNF/tree/define_slang
00:54 yoleaux skids: I'll pass your message to TimToady.
01:09 aborazmeh joined #perl6
01:09 aborazmeh joined #perl6
01:09 mcmillhj joined #perl6
01:14 Util m: grammar G1 { rule TOP { \w+ } }; my $a = "abc"; G1.parse($a) and say $/.gist;
01:14 camelia rakudo-moar cb4147: OUTPUT: «「abc」␤»
01:14 Util m: grammar G1 { rule TOP { \w+ } }; my $a = "abc"; G1.parse($a) and say $/.gist for 1,2;
01:14 camelia rakudo-moar cb4147: OUTPUT: «Nil␤Nil␤»
01:14 Util I expect that second line to output «「abc」␤「abc」␤». Back in Rakudo Star 2015.11, that *was* the output.
01:14 Util Before I start bisecting, *are* the `Nil`s a bug, or new proper behaviour that I need to learn?
01:15 TimToady I don't believe .parse makes any guarantees about setting $/
01:15 yoleaux 8 Mar 2017 22:02Z <skids> TimToady: 44b60a560d did the trick.  Not that I'll be yanking the "old way" code just I instinctively tested the "new way".  Thanks.
01:15 yoleaux 00:54Z <skids> TimToady: http://irclog.perlgeek.de/p​erl6/2017-03-09#i_14230054 https://github.com/tadzik/Gr​ammar-BNF/tree/define_slang
01:15 TimToady you should just use the return value
01:16 TimToady I'm a little surprised the first one sets $/, actually
01:17 cibs joined #perl6
01:21 Util TimToady: That works great. Thanks! I was not suprised that it used to work,because https://docs.perl6.org/language/variables#The_$/_Variable says:
01:21 Util The Grammar.parse method also sets the caller's $/ to the resulting Match object.
01:25 zakharyas joined #perl6
01:27 TimToady huh.  well, use of $/ inside loop thunks is tricky at the best of times, so it's probably setting the wrong $/ somehwere
01:27 MasterDuke i remember some change to $/ somewhat recently
01:27 MasterDuke bisectable6: grammar G1 { rule TOP { \w+ } }; my $a = "abc"; G1.parse($a) and say $/.gist for 1,2;
01:27 bisectable6 MasterDuke, Bisecting by output (old=2015.12 new=cb41476) because on both starting points the exit code is 0
01:27 bisectable6 MasterDuke, bisect log: https://gist.github.com/b080​d0851eca1ed3dcd0f7a4b9dd7e04
01:27 bisectable6 MasterDuke, (2016-10-28) https://github.com/rakudo/rakudo/commit/​1f76b17ee37ff666a8f0e0d81bdecbca1fb5d856
01:28 MasterDuke huh, not what i was thinking
01:30 TimToady Util: btw, .gist is redundant with say, as it happens
01:33 Util TimToady: Thanks for that pointer. I have shotgun-and-hammer habits from the early days of being uable to delve easily into the guts of Captures. (like belt-and-suspenders, but more traumatic)
01:33 mcmillhj joined #perl6
01:33 Util s/uable/unable/
01:42 mcmillhj joined #perl6
01:54 Cabanossi joined #perl6
02:36 khw joined #perl6
02:54 Cabanossi joined #perl6
02:57 cosecant joined #perl6
03:05 kaare__ joined #perl6
03:12 noganex joined #perl6
03:15 SmokeMachine m: my Int %a{Str:D; Str:D; Str:D}; %a{""; Int.^name; "singleton"} = 42
03:15 camelia rakudo-moar cb4147: OUTPUT: «Type check failed in assignment to %a; expected Int but got Hash (${})␤  in block <unit> at <tmp> line 1␤␤»
03:22 zengargoyle joined #perl6
03:25 xtreak joined #perl6
03:33 jdoege joined #perl6
03:34 jdoege Quick(hopefully) question. Does Perl 6 have a facility for embedding a tcl interpreter like Python does with tkinter?
03:34 kyan joined #perl6
03:36 llfourn jdoege: check out: https://docs.perl6.org/language/nativecall
03:36 llfourn afaik no one has done the work specifically for tcl
03:36 llfourn but we have https://github.com/niner/Inline-Python which embeds a python interpreter
03:38 jdoege From which I could import tkinter... :-)
03:38 jdoege Using the entirety of Python as a gasket from Perl6 to tcl.
03:39 llfourn sounds like fun :)
03:39 jdoege If no one looks close, they'll never know! :-)
03:39 awwaiid moritz: yes, I implemented matplotlib example in rakudo and ruby. Is it being used as the basis for some other example somewhere? It would be better as something more direct rather than py.run
03:40 jdoege TY
03:44 vendethiel joined #perl6
03:44 Geth ¦ ecosystem: 9d73beb569 | (Lloyd Fournier)++ | META.list
03:44 Geth ¦ ecosystem: Update META.list
03:44 Geth ¦ ecosystem:
03:44 Geth ¦ ecosystem: renamed Spit-sh org to spitsh
03:44 Geth ¦ ecosystem: review: https://github.com/perl6/e​cosystem/commit/9d73beb569
03:46 cdg joined #perl6
03:47 naxieAlDle joined #perl6
04:02 cdg_ joined #perl6
04:09 Cabanossi joined #perl6
04:10 kaare_ joined #perl6
04:29 xtreak joined #perl6
04:30 wamba joined #perl6
04:43 vendethiel- joined #perl6
04:55 firefish5000 joined #perl6
05:06 TimToady jdoege: you could do the same via Inline::Perl5 too; in fact, Perl 5 embedded Tcl and Tk long before Python did
05:14 hobbs PerlTk was cool enough to have a whole book! And a chapter in Nutshell, IIRC.
05:17 geekosaur cool for fairly horrifying values thereof, having had the fun of trying to forward port it
05:28 Cabanossi joined #perl6
05:31 Actualeyes joined #perl6
05:33 xtreak joined #perl6
05:34 eythian_ joined #perl6
05:42 curan joined #perl6
05:57 beginner joined #perl6
06:00 beginner how to internally make an asynchronous call to a function through an object
06:08 agentzh joined #perl6
06:14 Cabanossi joined #perl6
06:30 user10 joined #perl6
06:33 zakharyas joined #perl6
06:42 j75 joined #perl6
06:50 RabidGravy joined #perl6
06:54 xtreak joined #perl6
06:58 zakharyas joined #perl6
07:01 domidumont joined #perl6
07:05 BenGoldberg joined #perl6
07:13 Cabanossi joined #perl6
07:21 CIAvash joined #perl6
07:23 xtreak joined #perl6
07:26 wamba joined #perl6
07:28 Khisanth joined #perl6
07:36 firestar joined #perl6
07:36 firestar hey guys
07:37 firestar i was trying an example from documentation and it didn't work
07:38 firestar grammar foo { regex foo { <.setup> blah blah }; method setup { say 'hi'; }; }
07:38 firestar it is from this doc: https://github.com/perlpilot/perl6-docs​/blob/master/intro/p6-grammar-intro.pod
07:39 firestar when calling the setup method <.setup>, i get this error: P6opaque: no such attribute '$!pos' in type Cursor when trying to get a value
07:39 firestar any idea how to fix this?
07:51 bjz joined #perl6
07:51 nebuchadnezzar joined #perl6
08:04 xtreak joined #perl6
08:09 TEttinger joined #perl6
08:12 sjn m: grammar Foo { regex foo { bla <.setup> }; method setup { say "hi"; }; }; my $m = Foo.parse("bla", :rule<foo>);
08:12 camelia rakudo-moar cb4147: OUTPUT: «hi␤P6opaque: no such attribute '$!pos' in type Cursor when trying to get a value␤  in regex foo at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
08:13 noganex joined #perl6
08:19 moritz awwaiid: I consider using it as a base for an example in my book, if that's OK with you
08:21 as_ joined #perl6
08:21 as_ rakudo: sub f($x, $y) {} ; f (1, 2);
08:21 camelia rakudo-moar cb4147: OUTPUT: «Too few positionals passed; expected 2 arguments but got 1␤  in sub f at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
08:21 as_ i think the error message should be different in this case
08:21 as_ it is a bit (or not a bit) misleading
08:28 noganex_ joined #perl6
08:30 eroux joined #perl6
08:31 moritz but it's true
08:35 as_ true but for p5 developers is not obvious
08:37 masak I can see the argument -- we could probably statically determine that the programmer mistakenly put in whitespace between `f` and `(`
08:38 noganex joined #perl6
08:39 masak and we could do it in the error reporting path, so that it doesn't reduce overall performance
08:39 dakkar joined #perl6
08:40 masak might be worth it -- then again, might not ;)
08:40 El_Che as_: https://github.com/FROGGS/p6-Slang-Tuxic :)
08:40 masak oh, I was *just* going to suggest that one ;)
08:44 xtreak joined #perl6
08:48 firestar @sjn any idea why this doesn't work?
08:52 bjz joined #perl6
09:02 jsimonet joined #perl6
09:04 jonas1 joined #perl6
09:05 Actualeyes left #perl6
09:08 bjz joined #perl6
09:18 xtreak joined #perl6
09:18 wamba joined #perl6
09:21 domidumont joined #perl6
09:24 plicease joined #perl6
09:25 Xliff joined #perl6
09:28 tardisx joined #perl6
09:28 domidumont joined #perl6
09:30 Ven joined #perl6
09:30 noganex joined #perl6
09:38 holyghost joined #perl6
09:39 holyghost Hi, I've looked at the perl6 Net::X modules, I want to do game networking server and client, which modules(s) do I need to fetch ?
09:41 jast I don't know the specific packages but can say a few general things. are you wanting to implement a specific game protocol or make something of your own?
09:41 holyghost both
09:41 curan I've registered for the Perl conference in Amsterdam – where do I find the corporate tickets to buy? I'm only seeing an "unregister" link
09:42 jast I'm guessing there won't be terribly many readily implemented game protocols
09:42 holyghost I can write my own or use Atlas (rewritten in perl6) from worldforge.org
09:43 holyghost I need things like socket, listen and connect
09:43 jast for your own protocol, it would depend on what type of game it is. games that need a lot of real-time information tend to use UDP, transmit delta information based on the last thing the client has acknowledged receiving, and often use fairly complex prediction logic to minimize the amount of data needing to be sent, so they can send only the data that deviates from the prediction model
09:43 bjz_ joined #perl6
09:43 holyghost It's for a MMORPG
09:44 holyghost client and server as I said
09:44 holyghost So I guess UDP and TCP
09:46 jast I'm not seeing an abundance of third-party modules for this, so I think you'll want to look at IO::Socket and IO::Socket::Async from the standard library. there's also IO::Socket::SSL in the module ecosystem if you need encryption.
09:46 holyghost thx that'll do
09:46 jast good luck :)
09:47 holyghost quit bbl
09:48 ZzZombo joined #perl6
09:51 ZzZombo m: sub x(Int:D(Cool) $x) { say $x };x('1')
09:51 camelia rakudo-moar cb4147: OUTPUT: «Type check failed in binding to '$x'; expected Int but got Str ("1")␤  in sub x at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
09:52 ZzZombo Don't you die on me!
09:58 domidumont joined #perl6
10:18 user__ joined #perl6
10:18 user__ hi
10:19 user__ how to make an asynchronous call locally
10:19 El_Che curan: I ask about the tickets this week. The organizing were finalizing info about pricing, so it should be up soon
10:20 El_Che s/organizing/organizers/
10:22 xtreak joined #perl6
10:27 cibs joined #perl6
10:28 sammers user_: can you give an example of what you are trying to do?
10:30 ok joined #perl6
10:39 curan El_Che: great! It's just that I need to get this info ASAP for a final greenlight and then being able to book trip and accomodation
10:40 noganex_ joined #perl6
10:40 DrForr Tickets for what?
10:43 noganex joined #perl6
10:43 El_Che curan: are you on twitter? I was in a similar position and contact them through there
10:44 El_Che DrForr: yapc^WTPC EU
10:48 lep-delete joined #perl6
10:48 DrForr curan: #yapc on irc.perl.org has the conference managers.
10:52 curan El_Che: I don't use "social" media
10:52 curan DrForr: thanks, will join there
10:53 naxieAlDle joined #perl6
10:58 lukaramu joined #perl6
11:00 lep-delete left #perl6
11:04 El_Che curan: yeah, twitter is my only sin
11:04 El_Che DrForr: and did you decide on the config format for Tidy?
11:09 DrForr Not really, but if YAML is common I'll go with the proverbial flow. I'll probably take some time this weekend to properly spruce up what I've got, especially now that otehrs have been asking for it. *others
11:09 IOninja firestar: pretty sure those aren't docs but someone's drafts. The docs are at docs.perl6.org
11:12 firestar IOninja: thanks
11:12 firestar do you know if it's possible to pass-down variables to proto-regexes in a grammar?
11:13 Cabanossi joined #perl6
11:13 firestar in the same fashion as grammar A { token TOP($x) { .**{$x}; }; A.parse('hhh', args => \(3));
11:15 IOninja m: grammar A { token TOP($x) { <foo($x)> }; proto token foo {*}; token foo:sym<bar>($x) { .**{$x} } }; say A.parse('hhhoooo', args => \(3));
11:15 camelia rakudo-moar 030c4c: OUTPUT: «Too many positionals passed; expected 1 argument but got 2␤  in regex foo at <tmp> line 1␤  in regex TOP at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
11:15 IOninja hmmmm
11:16 gregf_ joined #perl6
11:17 IOninja jnthn: any idea?
11:18 jnthn No, you can't do that with proto regexes yet
11:18 IOninja firestar: not sure why it doesn't work, maybe NYI yet. But you can use dynamic variables instead as a workaround.
11:18 IOninja Ah. OK :)
11:18 IOninja m: grammar A { token TOP($*x) { <foo> .+ }; proto token foo {*}; token foo:sym<bar> { .**{$*x} } }; say A.parse('hhhoooo', args => \(3));
11:18 camelia rakudo-moar 030c4c: OUTPUT: «「hhhoooo」␤ foo => 「hhh」␤»
11:19 jnthn Can probably be done, though will need some careful handling since the naive way would slow down every single protoregex
11:20 firestar dynamic variables seem to work :)
11:21 firestar m: grammar foo { regex foo { <.setup> blah blah }; method setup { say 'hi'; }; }
11:21 camelia rakudo-moar 030c4c: OUTPUT: «Potential difficulties:␤    Space is not significant here; please use quotes or :s (:sigspace) modifier (or, to suppress this warning, omit the space, or otherwise change the spacing)␤    at <tmp>:1␤    ------> 3grammar foo { regex foo { <.setup> …»
11:22 daxim joined #perl6
11:24 firestar what is the active scope of a dynamic variable?
11:24 firestar is it like a global variable
11:25 jnthn The dynamic scope
11:25 jnthn Thus the same :)
11:25 jnthn *the name
11:25 jnthn Essentially, "visible to all of my callers"
11:26 jnthn Uh, callees
11:26 jnthn m: sub foo() { say $*a; }; sub bar() { my $*a = 42; foo() }; bar(); foo();
11:26 firestar and it persists up the call stack even if set by other modules, right?
11:26 camelia rakudo-moar 030c4c: OUTPUT: «42␤Dynamic variable $*a not found␤  in sub foo at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in sub foo at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
11:27 jnthn Correct
11:27 firestar ok, that clears it up alot. thanks
11:27 jnthn Fun fact: since the Perl 6 compiler is also just a Perl 6 program, at BEGIN time you can see its dynamic variables too. :P
11:28 jnthn I've totally never abused th...oh wait, I did.
11:35 llfourn m: BEGIN $*W.install_lexical_symbol​($*UNIT,"KEEP_WORLD",$*W); note KEEP_WORLD.^name # >:D
11:35 camelia rakudo-moar 030c4c: OUTPUT: «Perl6::World␤»
11:36 jnthn I wasn't *that* naughty :)
11:36 DrForr I may need to be that naughty eventually :)
11:38 rindolf joined #perl6
11:42 pmurias joined #perl6
11:42 pmurias hi
11:42 DrForr o/
11:43 donaldh joined #perl6
11:43 Cabanossi joined #perl6
11:49 IOninja m: :foo「bar」.say
11:49 camelia rakudo-moar 030c4c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Bogus postfix␤at <tmp>:1␤------> 3:foo7⏏5「bar」.say␤    expecting any of:␤        infix␤        infix stopper␤        statement end␤        statement modifier␤        statement mod…»
11:49 IOninja Well, that's dissapointing
11:49 IOninja Could've been a shortcut for strings
11:49 IOninja Well, can't use any escapes in it, so I guess not super usefull....
11:51 naxieAlDle you mean
11:51 naxieAlDle :「bar」foo ?
11:51 IOninja nope
11:52 naxieAlDle m: :25foo .say
11:52 camelia rakudo-moar 030c4c: OUTPUT: «foo => 25␤»
11:52 IOninja m: :foo[42].say
11:52 camelia rakudo-moar 030c4c: OUTPUT: «foo => [42]␤»
11:52 IOninja Paired stuff has ^ that form and the string brackets are paired...
11:52 naxieAlDle o… oh… what's that…
11:53 naxieAlDle right, [] instead of ()
11:54 naxieAlDle m: :foo{ … } .say
11:54 camelia rakudo-moar 030c4c: OUTPUT: «foo => -> ;; $_? is raw { #`(Block|36597032) ... }␤»
11:54 naxieAlDle m: :foo{ 25 => 42 } .say
11:54 camelia rakudo-moar 030c4c: OUTPUT: «foo => {25 => 42}␤»
11:58 naxieAlDle IOninja: well, it could also support “” and ‘’
11:58 naxieAlDle so that you have your escapes :)
11:58 IOninja :foo“meow”
11:58 IOninja doesn't look as cool.
11:58 naxieAlDle yea
11:58 naxieAlDle :|
11:59 naxieAlDle IOninja: or… we can support ⇒, and then it will be 1 char difference
11:59 IOninja Image is important!
11:59 naxieAlDle foo⇒“meow”
11:59 IOninja ew
11:59 naxieAlDle actually, no difference
12:00 * naxieAlDle squints at ⇒
12:04 wamba joined #perl6
12:11 drrho joined #perl6
12:12 bjz joined #perl6
12:17 aborazmeh joined #perl6
12:17 aborazmeh joined #perl6
12:25 donaldh Trying to install DBIish, $drv ~~ ::('DBDish::Driver') is failing
12:25 donaldh Is that a regression?
12:29 raschipi joined #perl6
12:33 IOninja donaldh, what Perl 6 version are you using?
12:35 IOninja *sigh* don't people use name highlight features anymore....
12:37 DrForr Gotta remember to do that.
12:40 bbkr joined #perl6
12:43 Cabanossi joined #perl6
12:53 ZzZombo joined #perl6
12:53 ZzZombo joined #perl6
12:54 DrForr Do we have any tests in the main suite that exercise all the grammar match terms?
12:59 pmurias DrForr: you mean tests that check how the Perl 6 grammar is structured?
12:59 DrForr Yep.
12:59 pmurias isn't that Rakudo dependent?
13:00 ZzZombo Incoming bug
13:00 ZzZombo m: my %h=(:asd :dsa :kfa);say %h.map({.key~'=>'~.value}).join('␤')
13:00 camelia rakudo-moar 030c4c: OUTPUT: «asd=>True␤dsa=>1␤kfa=>1␤»
13:00 timotimo with "main suite" he might mean t rather than t/spec
13:00 DrForr Could very well be. I'm not certain enough of the core...
13:00 timotimo ZzZombo: unfortunately, that's a known bug
13:00 ZzZombo but why? I'm really curious.
13:01 timotimo the code to make successive colonpairs work is ... a bit hacky
13:01 timotimo and also ... not correct :|
13:02 rindolf joined #perl6
13:03 pmurias DrForr: as far as I know we don't test the grammar structure in roast as that would cause the spec to bin the grammar structure a lot
13:03 IOninja ZzZombo: if we knew why, the bug would be already fixed, wouldn't it?
13:03 pmurias s/bin/pin/
13:03 ZzZombo lazyness is a thing
13:03 ZzZombo and priorities
13:05 timotimo fortunately the workaround is trivial
13:05 timotimo it's still annoying
13:05 timotimo before i wrote that code, successive colonpairs would just completely be lost
13:05 IOninja ZzZombo: So the 1,500 of our bugs are unfixed due to laziness?
13:05 ZzZombo ugh
13:05 ZzZombo I don't like where this is going
13:05 IOninja And we know all the fixes, but too lazy to actually write them down.
13:05 ZzZombo what is your problem?
13:05 DrForr That's fair :) I was just going to come up with a single file that exercises the complete tree. I could just put 'warn;' in every branch and exercise until I get all the warn's covered.
13:06 ZzZombo are you trying to passively-aggressively blame me for not fixing bugs, aren't you? Or what is this all about?
13:07 IOninja ZzZombo: people told you it's bug. You ask why is it that way. I told you if we knew we'd fix it. You say laziness is a thing.
13:07 jast that's not the way I'm parsing it
13:09 jast ZzZombo: I think with the laziness/priorities comment you were acknowledging that not all bugs are going to be fixed equally quickly? and I believe IOninja considered the 'laziness' bit an accusation of sorts
13:10 ZzZombo yea, did it trigger you? I didn't intent to, but whatever.
13:10 ZzZombo well, ninja'd. I was about to type the same as jast.
13:10 jast well, I think it's fair to react somewhat more strongly to something like that if it's about a project you've put a lot of effort into
13:11 jast at the very least, very much understandable
13:12 kent\n joined #perl6
13:16 bjz joined #perl6
13:22 araraloren joined #perl6
13:26 noganex_ joined #perl6
13:31 pmurias DrForr: so you want to have a test file that uses every syntactic feature rather then have one that tests how the parse tree looks?
13:33 lukaramu_ joined #perl6
13:34 DrForr Well, I'd take either.
13:36 n1ce joined #perl6
13:38 naxieAlDle by the way, what's the ticket number for this colonpair thing?
13:40 naxieAlDle RT #124553 I think
13:40 synopsebot6 Link:  https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=124553
13:41 naxieAlDle hm, nope…
13:42 DrForr Here's what I'm hoping to do:
13:45 DrForr Find a set of tests - I guess they'll have to be independent tests - that exercise every alternation in the grammar. This way I can use that test suite and ensure that Perl6::Parser has complete coverage without having to copy blocks from RosettaCode and just hope I've covered all the ways to match. There are a few places where I can look at a term and say "Here's all the possible continuations..." but most of the time it's hard or impossible to
13:48 ZzZombo Well, that was fun: https://gist.github.com/ZzZombo/​8611c06b6d7f9defc7b955a8496e05f8.
13:48 timotimo it even generates references
13:50 ZzZombo Well, it was just captured as plain text.
13:52 pm5 joined #perl6
13:54 grondilu m: subset Vector of Array where *.all ~~ Numeric; say [1, 2] ~~ Vector; say [1, 2].all ~~ Numeric
13:54 camelia rakudo-moar 030c4c: OUTPUT: «False␤True␤»
13:55 * grondilu realises what he did wrong
13:55 donaldh joined #perl6
13:55 grondilu m: subset Vector of Array where { .all ~~ Numeric }; say [1, 2] ~~ Vector; say [1, 2].all ~~ Numeric
13:55 camelia rakudo-moar 030c4c: OUTPUT: «True␤True␤»
13:55 donaldh IOninja: I had just "rakudobrew build moar" but have since wiped it and rebuilt. Rogue DBIish failures have gone now.
13:59 donaldh IOninja: actually still have the failures - 2017.02-217-g030c4c5 built on MoarVM version 2017.02-31-g91aab71
13:59 bwisti joined #perl6
14:00 IOninja m: $*PERL.compiler.version.say
14:00 camelia rakudo-moar 030c4c: OUTPUT: «v2017.02.217.g.030.c.4.c.5␤»
14:00 IOninja donaldh: what kind of failures?
14:01 IOninja grondilu: `where` thunks. No need for curlies there
14:01 donaldh $drv ~~ ::('DBDish::Driver') # False
14:01 grondilu why the different result then?
14:01 IOninja m: subset Vector of Array where .all ~~ Numeric; say [1, 2] ~~ Vector; say [1, 2].all ~~ Numeric
14:01 camelia rakudo-moar 030c4c: OUTPUT: «True␤True␤»
14:02 IOninja grondilu: because *.all ~~ blah doesn't create a closure over the ~~
14:02 grondilu ok
14:03 yqt joined #perl6
14:03 IOninja donaldh: which file is that bit in?
14:04 donaldh IOninja: t/01-Basic.t in DBIish
14:04 pm5 joined #perl6
14:05 IOninja nine: llfourn any idea why DBIish has this issue? This is the code in question: https://github.com/perl6/DBIis​h/blob/master/t/01-Basic.t#L29
14:06 IOninja m: use TAP; dd ::('TAP::Harness')
14:06 camelia rakudo-moar 030c4c: OUTPUT: «TAP::Harness␤»
14:06 IOninja seems to work fine here...
14:07 Actualeyes joined #perl6
14:10 ChoHag joined #perl6
14:13 donaldh IOninja: maybe a lexical scope issue?
14:14 donaldh ::('DBDish::Driver') # No such symbol 'DBDish::Driver'
14:14 IOninja donaldh: recently, a bunch of work on `require` was done. I'm guessing there's a `require DBDish::Driver` or something along those lines done somewhere
14:14 IOninja m: require TAP; dd ::('TAP::Harness')
14:14 camelia rakudo-moar 030c4c: OUTPUT: «TAP::Harness␤»
14:15 IOninja m: { require TAP; } dd ::('TAP::Harness')
14:15 camelia rakudo-moar 030c4c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Strange text after block (missing semicolon or comma?)␤at <tmp>:1␤------> 3{ require TAP; }7⏏5 dd ::('TAP::Harness')␤    expecting any of:␤        infix␤        infix stopper␤        stat…»
14:15 IOninja m: { require TAP; }; dd ::('TAP::Harness')
14:15 camelia rakudo-moar 030c4c: OUTPUT: «No such symbol 'TAP'␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
14:15 IOninja star: { require TAP; }; dd ::('TAP::Harness')
14:15 camelia star-m 2016.10: OUTPUT: «TAP::Harness␤»
14:15 IOninja So now ^ the require is lexical
14:16 donaldh Hmmm.Also breaks https://github.com/perl6/perl6-lwp-​simple/blob/master/t/issue-7.t#L10
14:17 IOninja lib/DBIish.pm6:1732:            my \M = (require ::($module));   <-- could that be the issue?
14:17 IOninja donaldh: hm. I thought that case was fixed already...
14:17 IOninja NeuralAnomaly: status
14:17 NeuralAnomaly IOninja, [✘] Next release will be in 1 week and 2 days. Since last release, there are 44 new still-open tickets (4 unreviewed and 1 blockers) and 53 unreviewed commits. See http://perl6.fail/release/stats for details
14:18 IOninja gonna be a rocky release seems like :/
14:18 nine donaldh: require is now lexial, same as use
14:19 IOninja nine: this should work fine, right?    try require IO::Socket::SSL; if ::('IO::Socket::SSL') ~~ Failure { ... }
14:20 nine IOninja: yes
14:20 SmokeMachine m: role R[Int $a] {}; role R::A[Int $a] does R[$a] {}; R::A[42].new # shouldn't it work?
14:20 camelia rakudo-moar 030c4c: OUTPUT: «No appropriate parametric role variant available for 'R'␤  in any protect at gen/moar/stage2/NQPCORE.setting line 802␤  in block <unit> at <tmp> line 1␤␤»
14:22 IOninja m: role F[int $a, int $b] {}; say F[&say.arity, &say.count]
14:22 camelia rakudo-moar 030c4c: OUTPUT: «(F[Int,Num])␤»
14:22 IOninja nm. was gonna ask something but see the error of my ways :}
14:22 perlpilot good $localtime all
14:22 SmokeMachine m: role R[Int $a] {}; role R::A[Int $a] does R[$a] {}; say R::A[42]
14:22 camelia rakudo-moar 030c4c: OUTPUT: «(R::A[Int])␤»
14:23 SmokeMachine m: role R[Int $a] {}; role R::A[Int $a] does R[$a] {}; say R::A[42].^pun
14:23 camelia rakudo-moar 030c4c: OUTPUT: «No appropriate parametric role variant available for 'R'␤  in any protect at gen/moar/stage2/NQPCORE.setting line 802␤  in block <unit> at <tmp> line 1␤␤»
14:23 donaldh nine: what is recommended as a replacement for https://github.com/perl6/DBIis​h/blob/master/t/01-Basic.t#L29
14:23 SmokeMachine m: role R[Int $a] {}; role R::A[Int $a] does R[$a] {}; class C does R::A[42] {}; say C.new
14:23 camelia rakudo-moar 030c4c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤No appropriate parametric role variant available for 'R'␤at <tmp>:1␤»
14:24 donaldh nine: The test could "use DBDish;" and smartmatch against DBDish::Driver I suppose
14:24 nine donaldh: use DBIish::Driver;?
14:24 awwaiid moritz: definitely good with me, you have my full and complete permission to use it (with no need for attribution)
14:26 IOninja nine: from a users viewpoint, how come require has been made lexical? Seems there's quite an impact from this change, but there wasn't any warning for users... Release is in a week.
14:26 donaldh nine: DBDish::Driver is a role defined in unit module DBDish, so I'm guessing "use DBDish"
14:26 moritz awwaiid: ok, thanks
14:27 awwaiid moritz: I think we can make better examples though
14:27 nine Yes, use DBDish; in that test file fixes it
14:27 moritz awwaiid: do you want to contribute some?
14:27 awwaiid moritz: yes
14:27 awwaiid :)
14:28 nine IOninja: well, yes, we could have handled this better. The whole change was caused by some cases of require usage were already broken by lexical_module_loading. The fix was to walk the rest of the way.
14:28 donaldh I'm guessing there's not much point in using the ::('DBDish::Driver') idiom when DBDish::Driver needs to be defined in the current scope.
14:28 moritz awwaiid: I'm always interested in co-authors for a chapter
14:28 nine IOninja: so in a sense the change was already announced, but only implicitly.
14:28 IOninja nine: got it. Thanks.
14:28 awwaiid moritz: I'm pinging directly
14:38 donaldh m: try require Hoopy::Doopy; if ::('Hoopy::Doopy') ~~ Failure { say "not available" }
14:38 camelia rakudo-moar 030c4c: ( no output )
14:39 IOninja m: try require Hoopy::Doopy; dd ::('Hoopy::Doopy');
14:39 camelia rakudo-moar 030c4c: OUTPUT: «Doopy␤»
14:39 IOninja m: try require Hoopy::Doopy; dd ::('Hoopy::Doopy').^name;
14:39 camelia rakudo-moar 030c4c: OUTPUT: «"Doopy"␤»
14:39 IOninja m: try require Hoopy::Doopy; dd ::('Hoopy::Doopy').HOW.^name;
14:39 camelia rakudo-moar 030c4c: OUTPUT: «"Perl6::Metamodel::PackageHOW"␤»
14:40 donaldh m: try require Hoopy::Doopy; Hoopy::Doopy.new;
14:40 camelia rakudo-moar 030c4c: OUTPUT: «You cannot create an instance of this type (Doopy)␤  in block <unit> at <tmp> line 1␤␤»
14:40 IOninja m: dd ::('ddasdas::dasdasdasdsadsa')
14:40 camelia rakudo-moar 030c4c: OUTPUT: «Failure.new(exception => X::NoSuchSymbol.new(symbol => "ddasdas::dasdasdasdsadsa"), backtrace => Backtrace.new)␤»
14:40 donaldh So it's getting a placeholder package that doesn't smartmatch against Failure.
14:41 IOninja m: try require ddasdas::dasdasdasdsadsa; dd ::('ddasdas::dasdasdasdsadsa')
14:41 camelia rakudo-moar 030c4c: OUTPUT: «dasdasdasdsadsa␤»
14:41 IOninja Yeah...
14:41 IOninja m: dd try require ddasdas::dasdasdasdsadsa; dd ::('ddasdas::dasdasdasdsadsa')
14:41 camelia rakudo-moar 030c4c: OUTPUT: «Nil␤dasdasdasdsadsa␤»
14:41 obfusk_ joined #perl6
14:41 donaldh m: try require ASDFG; say ASDFG ~~ Failure
14:41 camelia rakudo-moar 030c4c: OUTPUT: «False␤»
14:42 IOninja m: try require ddasdas::dasdasdasdsadsa; if $! { say "not available" }
14:42 camelia rakudo-moar 030c4c: OUTPUT: «not available␤»
14:42 Geth ¦ DBIish: f6b2a2743c | (Stefan Seifert)++ | t/01-Basic.t
14:42 Geth ¦ DBIish: Fix test failures caused by lexcial require
14:42 Geth ¦ DBIish: review: https://github.com/perl6/DBIish/commit/f6b2a2743c
14:42 nine Oh nice, I have push access to that repo :)
14:42 donaldh nine++
14:43 IOninja nine: now it's a sideeffect that try require whatever; installs a whatever package? And using ::('whatever') won't fail?
14:43 Cabanossi joined #perl6
14:45 IOninja m: class Foo { has int $.bar = 42 }; role Bar[$x] { has int $.bar = $x; }; my $x = Foo.new; $x.^mixin(Bar[1000]); say $x.bar;
14:45 camelia rakudo-moar 030c4c: OUTPUT: «0␤»
14:45 nine IOninja: S11 requires us to install the stub package to be replaced at runtime by require. It does not say what should happen if the require actually failed :)
14:45 IOninja Can I override an attribute of a class? Above I want it to give 1000 not zero
14:45 IOninja nine: ok
14:45 nine IOninja: I'm not sure what we should do. We could remove it from ::() lookup, but we cannot remove the lexical.
14:46 nine m: try require whateverfoo; say whateverfoo
14:46 camelia rakudo-moar 030c4c: OUTPUT: «(whateverfoo)␤»
14:46 nine m: try require whateverfoo; say whateverfoo.HOW.^name
14:46 camelia rakudo-moar 030c4c: OUTPUT: «Perl6::Metamodel::PackageHOW␤»
14:46 donaldh m: try require Doopy; Doopy.new
14:46 camelia rakudo-moar 030c4c: OUTPUT: «You cannot create an instance of this type (Doopy)␤  in block <unit> at <tmp> line 1␤␤»
14:48 IOninja nine: I think it's fine as is as a general thing. We'll just need to rake through ecosystem to spot any such usages that expect the ::('blah') after require to fail.
14:48 IOninja Like here: https://github.com/perl6/perl6-lwp-​simple/blob/master/t/issue-7.t#L10
14:49 wamba joined #perl6
14:49 IOninja m: without (try require Mumbo::Jumbo) { say "no such thing, bruh" }
14:49 camelia rakudo-moar 030c4c: OUTPUT: «no such thing, bruh␤»
14:49 donaldh nine: IOninja: what would be the best way to test a type for validity?
14:50 donaldh that, I guess :-)
14:51 moritz m: without (try Test) { say "no such thing, bruh" }
14:51 camelia rakudo-moar 030c4c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤    Test used at line 1␤␤»
14:51 moritz m: without (try require Test) { say "no such thing, bruh" }
14:51 camelia rakudo-moar 030c4c: OUTPUT: «no such thing, bruh␤»
14:51 IOninja donaldh: no, it's wrong
14:51 moritz m: try require Test; say ?$!
14:51 camelia rakudo-moar 030c4c: OUTPUT: «False␤»
14:51 moritz m: try require Outofluck; say ?$!
14:51 camelia rakudo-moar 030c4c: OUTPUT: «True␤»
14:52 IOninja ...for two reasons :}
14:53 IOninja (export is only within the block; the type is undefined)
14:55 IOninja wonder how this test works; considering that site redirects to https :/ https://github.com/perl6/perl6-lwp-sim​ple/blob/master/t/get-perl6-org.t#L15
14:56 IOninja Do we want all community modules to announce changes in here? I know Pod::To::Html does, but I see LWP::Simple doesn't
14:56 IOninja Any idea for my role question?
14:58 IOninja m: sub foo (|) {}; role F[$arity] { has int $!arity = $arity; }; &foo.^mixin(F[42]); say &foo.arity;
14:58 camelia rakudo-moar 030c4c: OUTPUT: «0␤»
14:58 IOninja I mean...
14:59 IOninja m: sub foo (|) {}; role F[$arity] { has int $!arity = $arity; }; &foo.signature.^mixin(F[42]); say &foo.signature.arity;
14:59 camelia rakudo-moar 030c4c: OUTPUT: «0␤»
14:59 IOninja how to make it non-zero?
15:00 IOninja oh
15:00 araraloren m: sub foo (|) {}; role F[$arity] { has int $.arity = $arity; }; &foo.^mixin(F[42]); say &foo.arity;
15:00 camelia rakudo-moar 030c4c: OUTPUT: «0␤»
15:01 jnthn m: sub foo (|) {}; role F[$arity] { method arity() { $arity } }; &foo.^mixin(F[42]); say &foo.arity;
15:01 camelia rakudo-moar 030c4c: OUTPUT: «42␤»
15:01 araraloren m: sub foo (|) {}; role F[$arity] { has int $.arity = $arity; }; say F[42].new.arity
15:01 camelia rakudo-moar 030c4c: OUTPUT: «42␤»
15:01 jnthn Not sure why the other case didn't work (it really should, I think)
15:01 jnthn But you don't need an attribute at all if it's a constant
15:01 jnthn Just make the method return it
15:02 IOninja That was my first attempt, didn't work either. Lemme try again
15:03 IOninja Ah, OK, seems to work now. jnthn++
15:15 bdmatatu joined #perl6
15:17 ZzZombo Seems like severe bugs in this:
15:18 ZzZombo m: $*PROGRAM-NAME.IO.split(/\s+ || <punct>/,:v,:skip-empty).perl.say
15:18 camelia rakudo-moar 030c4c: OUTPUT: «("\$", "PROGRAM", "NAME", "IO", "split", "", "", "s+", "||", "<punct>", "", "", "v", "", "skip", "empty", "", "perl", "say").Seq␤»
15:18 mcmillhj joined #perl6
15:20 jnthn m: say $*PROGRAM-NAME
15:20 camelia rakudo-moar 030c4c: OUTPUT: «<tmp>␤»
15:20 jnthn What's the bug? :)
15:20 jnthn Oh, skip-empty
15:20 IOninja That skip-empty doesn't skip, but I suspect that's because you're asking `:v` to interleave matches, so it does interleave empty ones
15:21 IOninja m: $*PROGRAM-NAME.IO.split(/\s+ || <punct>/,:skip-empty).perl.say
15:21 ZzZombo_ joined #perl6
15:21 ZzZombo_ joined #perl6
15:21 camelia rakudo-moar 030c4c: OUTPUT: «("\$", "PROGRAM", "NAME", "IO", "split", "", "", "s+", "||", "<punct>", "", "", "skip", "empty", "", "perl", "say").Seq␤»
15:21 IOninja heh
15:21 IOninja s: $*PROGRAM-NAME.IO, 'split', \(/\s+ || <punct>/,:skip-empty)
15:21 SourceBaby IOninja, Sauce is at https://github.com/rakudo/rakudo/bl​ob/030c4c5/src/core/IO/Path.pm#L532
15:21 jnthn Maybe .IO.split simply doesn't implement :skip-empty
15:21 IOninja Oh, I bet $5 it fails to pass the params properly
15:22 IOninja And of course it doesn't...
15:22 ZzZombo_ as well as :v and I bet the other named params...
15:22 IOninja It DOES capture them tho lol :P
15:22 IOninja Ohhh. Well, this is weird. The params to .split() on IO::Path is for the .open not for .split :S
15:24 skids joined #perl6
15:24 skids o/
15:24 IOninja Well, this has the same issue as IO::Path.lines with the handle closing business
15:25 IOninja m: for ^2000 { $ = $*PROGRAM-NAME.IO.split(/\s+ || <punct>/,:skip-empty)[^1] }
15:25 camelia rakudo-moar 030c4c: ( no output )
15:25 IOninja m: for ^20000 { $ = $*PROGRAM-NAME.IO.split(/\s+ || <punct>/,:skip-empty)[^1] }
15:25 camelia rakudo-moar 030c4c: ( no output )
15:29 IOninja m: my &foo = [o] sub { $^a.uc }, sub { "$^a:$^b" }; <a b c d e f g h>.map(&foo).say
15:29 camelia rakudo-moar 030c4c: OUTPUT: «Too few positionals passed; expected 2 arguments but got 1␤  in sub  at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
15:30 IOninja works locally :)
15:32 sufrosti1o joined #perl6
15:32 sufrostico joined #perl6
15:35 shdb jnthn: do you know how i would get the source address and the source port of a udp connection received by IO::Socket::Async?
15:38 jnthn shdb: That's not implemented yet, sorry.
15:39 jnthn Will probably get to it when dealing with other socket bits that we're missing
15:40 IOninja I'm gonna add IO::Path.split,.words and any other to IO Action plan. I think lizmat++ is right that all these should just slurp stuff, since we can't guarantee handle closing. And we can simplify the code greatly, but just fowarding all of the splitting and wording to Str.* routines
15:40 IOninja If you want it lazy, then do the .open thing yourself.
15:41 IOninja I've read somewhere old that 6.d stuff is supposed to be ADDITIVE to 6.c? Is that still true?
15:41 IOninja I kinda figured we'd just save all the src/Perl6 and src/core into some 6.c folder that'd get loaded for 6.c language and just copy stuff over for 6.d and work off that.
15:42 IOninja And critical bug fixes would be backported, and in later languages we could (from technical POV) change literally everything...
15:44 jnthn I'd viewed 6.d as being additive; certainly that's what the infrastructure we have at the moemnt supports
15:44 xzhao joined #perl6
15:44 shdb jnthn: ok thanks. i thought so looking at the source. i will keep an eye on it then
15:44 IOninja oh :(
15:45 IOninja OK. That'll do for now.
15:45 jnthn There're some really difficult problems to crack if you want to do otherwise with src/core/
15:46 jnthn I mean, if Int in 6.d and Int in 6.c aren't the same type, then you can't pass an Int from 6.c code to 6.d code :P
15:46 jnthn Without it faiing the type constraint
15:46 jnthn Which I think is quite clearly undesirable :)
15:47 jnthn I think we probably need to see how those things shake out in versioned modules before we do it at the language level
15:47 timotimo could always build a hllize-related mechanism for 6.c <-> 6.d :P
15:47 IOninja Well, one of the things I wanted to toss were SeekFromCurrent enums, but I guess they'd be left over in 6.d even if we override the subs to not accept them anymore. The other thing I marked for removal in 6.d I think was the $limit arg in IO::Path.lines 'cause it's kinda pointless
15:48 IOninja But if everything's additive the old candidate that takes $limit would remain
15:48 BenGoldberg joined #perl6
15:48 IOninja huggable: 6.d
15:48 huggable IOninja, Proposals for 6.d language: https://github.com/perl6/specs/blob/master/v6d.pod
15:49 IOninja That will stay then: "Remove dummy precision parameters from Rational/Int .Rat and .FatRat coercers"
15:55 BenGoldberg m: pi.Rat.nude.say
15:55 camelia rakudo-moar 030c4c: OUTPUT: «(355 113)␤»
15:56 BenGoldberg . o O (Change the default precision for Num to Rat conversion to 2**53, or whatever the platform supports)
15:56 BenGoldberg m: (pi*2**64).Int / 2**64
15:56 camelia rakudo-moar 030c4c: OUTPUT: «WARNINGS for <tmp>:␤Useless use of "/" in expression ".Int / 2**" in sink context (line 1)␤»
15:56 BenGoldberg m: ((pi*2**64).Int / 2**64).nude.say
15:56 camelia rakudo-moar 030c4c: OUTPUT: «(884279719003555 281474976710656)␤»
15:57 BenGoldberg m: ((pi*2**64).Int / 2**64).say
15:57 camelia rakudo-moar 030c4c: OUTPUT: «3.1415926535897931␤»
15:57 BenGoldberg m: ((pi*2**64).Int / 2**64 - pi).say
15:57 camelia rakudo-moar 030c4c: OUTPUT: «0␤»
15:58 IOninja BenGoldberg: what do you mean precision? You have 14 digits of precision
15:58 IOninja Not 2**53
15:58 IOninja BenGoldberg: and Num.Rat takes $epsilon precision tweaker, so... knock yourself out :)
15:59 BenGoldberg m: pi.Rat(14) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «WARNINGS for <tmp>:␤Useless use of "-" in expression ".Rat(14) - pi" in sink context (line 1)␤»
15:59 BenGoldberg m: say pi.Rat(14) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «-0.141592653589793␤»
15:59 BenGoldberg m: say pi.Rat(20) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «-0.141592653589793␤»
15:59 BenGoldberg m: say pi.Rat(2**53) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «-0.141592653589793␤»
15:59 BenGoldberg m: say pi.Rat(epsilon =? 2**53) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Preceding context expects a term, but found infix = instead␤at <tmp>:1␤------> 3say pi.Rat(epsilon =7⏏5? 2**53) - pi␤»
15:59 BenGoldberg m: say pi.Rat(epsilon => 2**53) - pi
15:59 camelia rakudo-moar 030c4c: OUTPUT: «2.66764189404967e-07␤»
16:00 BenGoldberg m: say pi.Rat(epsilon => 2**64) - pi
16:00 camelia rakudo-moar 030c4c: OUTPUT: «2.66764189404967e-07␤»
16:00 IOninja We do have documentation... :)
16:00 BenGoldberg But that's not as fun as figuring things out via camelia.
16:01 IOninja Camelia supports /msg FWIW
16:02 robertle joined #perl6
16:04 donaldh joined #perl6
16:05 ZzZombo_ Eh?
16:05 ZzZombo_ "Precedence of ~= is too loose to use inside ?? !!; please parenthesize"
16:05 ZzZombo_ What's the point?
16:06 user9 joined #perl6
16:06 ZzZombo_ If it's too loose, make it warn, but still work as advertised.
16:08 IOninja We'll get right on that, boss!
16:08 ZzZombo_ What is your damn problem??
16:08 ZzZombo_ Nobody is requesting YOU or anybody else to do anything right away.
16:09 IOninja Hahaha
16:11 IOninja ZzZombo_: and what's your damn problem? If you have a bug report it. Some of us are sick of your incessant bitching.
16:11 IOninja I told you several times before. We can't fix what we don't know about it. Report it, if you think it's a problem.
16:13 ZzZombo_ Great, I forgot the IRC wasn't meant for discussions, discussions whether something works as it should, and why.
16:14 IOninja Right, knock yourself out.
16:14 BenGoldberg m: Bool.pick ?? my $x !! my $y = 42; say $x; say $y;
16:14 camelia rakudo-moar 030c4c: OUTPUT: «(Any)␤(Any)␤»
16:14 perlpilot *sigh*
16:14 BenGoldberg m: Bool.pick ?? my $x = 12 !! my $y = 42; say $x; say $y;
16:14 camelia rakudo-moar 030c4c: OUTPUT: «12␤(Any)␤»
16:14 ZzZombo_ What a prick
16:14 BenGoldberg m: (Bool.pick ?? my $x !! my $y) = 42; say $x; say $y;
16:14 camelia rakudo-moar 030c4c: OUTPUT: «(Any)␤42␤»
16:15 IOninja ZzZombo_: right back at ya
16:15 BenGoldberg Children, children ...
16:15 perlpilot IOninja, ZzZombo_: could the two of you fight in private or something?
16:15 IOninja There's no fight. Ignore button works
16:16 ZzZombo_ I won't, since I already got over and won't respond to his attacks.
16:16 BenGoldberg This being irc, you're allowed to /ignore each other.
16:18 lizmat IOninja: IO::Path.splt/words/ code wouldn't simplify much, merely forwarding to Str instead of IO::Handle
16:20 TimToady ZzZombo_: if you have a problem with language design, take it up with me, not IOninja, who has been very useful around here when he's not being trolled
16:20 Actualeyes joined #perl6
16:22 IOninja lizmat: right now they're broken tho (or at least split is) it doesn't handle all the args that split can handle
16:22 perlpilot ZzZombo_: I think the answer to your "what's the point?" question is that it won't work like you think it should, so you get the exception to let you know that.
16:24 perlpilot ZzZombo_: Making it work instead would perturb the language in ways that aren't good when taken holistically
16:25 perlpilot ZzZombo_: or, put another way, your local optimization would cause a global pessimization  :)
16:25 IOninja lizmat: and IO::Handle.split too doesn't take :skip-empty, or :v ATM. ... It takes :$COMB tho :P not sure what that is :)
16:25 lizmat IOninja: the logic of IO::Handle.split/comb are intertwined   :-)
16:25 IOninja ah
16:25 lizmat :COMB just tells it to work like comb instead of split
16:26 lizmat probably needs cleaning up as well  :-)
16:26 IOninja :)
16:27 lizmat joined #perl6
16:32 lizmat joined #perl6
16:32 pukku joined #perl6
16:35 pukku Hi! I have written a Perl 6 program to demonstrate some stuff for a talk I'm giving next week. (Some of you helped me with some issues related to this yesterday.) If I sent out a gist, would people be willing to spend a minute or two and let me know if there any Perl 6 idioms I should be using that I'm not? Right now, it's mostly a translation of a Perl 5 program.
16:36 IOninja pukku: sure.
16:36 IOninja Pre-emptively: use %h<foo> instead of %h{'foo'} :)
16:38 pukku Thanks! I've already gone through and changed those. Here is the code: https://gist.github.com/remorse/​7fbfd973dc828268a077f9258ea192dc
16:40 jnthn unless ($data.is-success) { # don't need parens around the condition here, or in many other places
16:40 IOninja pukku: `unless ($data.is-success) {` <--- remove the parentheses. We don't use them in Perl 6
16:40 BenGoldberg Positional variables, by default are optional.  And when you don't supply one, they get an undef-like value... Since undefs are false, you don't need to explicitly give :$photo a False default...
16:41 jnthn Also if (!foo) is more natural as unless foo { }
16:41 IOninja pukku: same with `if (!%json<posts>) {` I'd write those as `unless %json<posts>`
16:41 BenGoldberg We do use parens, must most of feel that code looks cleaner with as few of them as possible.
16:41 El_Che maybe it's just me, but I dislike block starting with unless (also on Perl 5)
16:42 El_Che ah, jnthn had the same comment
16:42 IOninja pukku: and don't know about idiomaticisim, but I'd write those as:   %json<posts> or croak "Not enough posts received.";   <-- utilizing the shortcurcuiting of conditioonals and... Death to parens!
16:42 jnthn On 72, the hash keys don't need quoting with =>
16:42 jnthn Similar on 90
16:43 jnthn In somehtin glike
16:43 jnthn if (%s<regular-title>) { # note that I don't have to test defined and not empty!
16:43 BenGoldberg Also, if %json<posts>:v.elems != 1 looks a bit strange ... fetching a value is the default, so you can drop the :v
16:43 jnthn %pdata<post_body> = "<h2>%s<regular-title></h2>\n\n";
16:43 IOninja pukku: and Perl 6's idomatic casing is kebob-case; so instead of `multi add_tumblr_data`, I'd write `multi add-tumblr-data`
16:43 jnthn You can write if %s<regular-title> -> $title {
16:44 jnthn And then use $title rather than menioning the whole %s<regular-title> again
16:44 BenGoldberg And, what if posts happens to be present, but has zero items?  if %json<posts>.elems > 1 { croak ... } would make more sense.
16:44 pukku Thanks for all the feedback!
16:44 IOninja pukku: and on line 138.... Death to parens! In Perl 6 no need any parens when intializing a %hash or an @array
16:45 jnthn my $_convert_imgs_helper = sub ($url) {
16:45 pukku - re parentheses -- I'll go through and get rid of most of them.
16:45 jnthn A subroutine in Perl 6 is lexical by default, not our-scoped, so you can just define that helper as a normal sub
16:45 pukku - re if (!) vs unless -- I thought I had read somewhere that people preferred unless; if that's not true, I'll probably go back to if (!)
16:45 IOninja pukku: and I personally would write $ua.get("$url"); as $ua.get: $url; no need to quote variables and... Death to parens! :)
16:45 jnthn And refer to it as &convert_images_helper or so
16:45 timotimo well there is a use case for "$url" instead of $url
16:46 timotimo because that does $url.Str for you
16:46 IOninja pukku: I prefer unless but I heard people with backgrounds in some sort of languages... to them it sounds very strange
16:46 IOninja timotimo: ah, right
16:46 IOninja Though I'd write that as ~$url
16:46 El_Che IOninja: I think it's more a natural language thing
16:46 timotimo yeah
16:46 El_Che TimToady could clarify :)
16:47 pukku - re quoting hash keys, I'll remove the quotes. However, I reflexively put them in because sometimes (in Perl 5 at least) you need them -- does magic quoting in perl 6 handle cases with hyphens and other potentially operator like characters?
16:47 pukku - I'll switch over to kebab-case, which is easier to type!
16:47 timotimo magic quoting doesn't really exist as a thing any more
16:48 IOninja s: &slurp.candidates».signature.say
16:48 SourceBaby IOninja, Something's wrong: ((IO::ArgFiles:D $io = { ... }, :$bin, :$enc = "utf8", |c is raw) (Cool:D $path, :$bin = Bool::False, :$enc = "utf8", |c is raw))␤␤ERR: Cannot resolve caller sourcery(Bool); none of these signatures match:␤    ($thing, Str:D $method, Capture $c)␤    ($thing, Str:D $method)␤    (&code)␤    (&code, Capture $c)␤  in block <unit> at -e line 6␤␤
16:48 pukku - the ':v.elems' was because, in a conversation yesterday, it seemed like I needed to unwrap it to make sure I was counting the number of elements in the list, not that there was a key with an "any" value
16:48 st_elmo joined #perl6
16:48 timotimo right, without :v you'll get entries for keys that didn't exist in the hash
16:48 pukku - I like using the pointy arrow in the if!
16:49 IOninja pukku: %output<dir> ~ %output<file> can be written as just %output<dir file>.join
16:49 timotimo yes, pointy arrow with if is fantastic
16:49 pukku - quoting the $url variable is because I need the string version, not the Match object that it is otherwise
16:50 timotimo good point
16:50 IOninja pukku: also, you have a bug here; the $_ doesn't contain the error; use `orelse` so the Failure gets bound to $_ : https://gist.github.com/remorse/7fbfd973dc82826​8a077f9258ea192dc#file-gistfile1-txt-L171-L175
16:51 IOninja pukku: side note: mkdir() and slurp() might not be returning Failures but throwing instead, that should be corrected (i.e. they would return a Failure) by 2017.04.15
16:51 timotimo that's an IOwesome, right?
16:52 IOninja IOwesomeness \o/
16:55 cdg joined #perl6
16:58 IOninja pukku: with, without, and given blocks are a common sight too. Helps you avoid repeating the variables and stuff. e.g. lines 174-175 can be written like this: https://gist.github.com/zoffixznet​/6386abad34e6b2f76816725f4467a1c1
16:58 tbrowder ref undefined named param: this code seems to work and is even shorter: "!$fmt || $fmt ~~ &fmt". is "if  $var" always a reliable test as good as "if $var.defined"?
16:59 IOninja pukku: and there are postfix statement modifer forms, so if you weren't using $_ already you could've used the postfix.  Like   .d or .mkdir with %output<blahblah> ~ 'some-dir'
17:00 IOninja tbrowder: it tests for different things. For example 0 is defined but false
17:00 IOninja Empty string is defined but false
17:01 IOninja m: say Empty.defined
17:01 camelia rakudo-moar 032b28: OUTPUT: «False␤»
17:01 IOninja heh
17:01 IOninja m: say slip().defined
17:01 camelia rakudo-moar 032b28: OUTPUT: «False␤»
17:01 IOninja Well, empty stuff that ain't a slip is defined but false :P
17:01 tbrowder but given the context, i.e., texting for definedness in a where block, is "if $var" reliable?
17:01 BenGoldberg The 'with' keyword is like 'if' but tests for definedness instead of truth.
17:03 IOninja tbrowder: what's definedness? whether .defined returns False?
17:03 IOninja tbrowder: also, reliable for what? :)
17:04 IOninja m: class Foo { method defined { True }; method Bool { False } }  <-- that would be accepted, but it's not "defined"
17:04 camelia rakudo-moar 032b28: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Undeclared routines:␤    accepted used at line 1␤    be used at line 1␤    but used at line 1. Did you mean 'put'?␤    it's used at line 1␤    that used at line 1. Did you mean 'WHAT'?␤    woul…»
17:04 IOninja s/m://
17:04 BenGoldberg s: 3, 'defined'
17:04 SourceBaby BenGoldberg, Sauce is at https://github.com/rakudo/rakudo/​blob/030c4c5/src/core/Mu.pm#L102
17:05 IOninja s: Failure.new, 'defined'
17:05 SourceBaby IOninja, Sauce is at https://github.com/rakudo/rakudo/bl​ob/030c4c5/src/core/Failure.pm#L51
17:05 IOninja ^ an override
17:05 IOninja Nil has one too
17:05 pukku Wow! Thanks for all of the feedback. I'm working on making most of the changes suggested (although there may be one or two that I miss...)
17:05 IOninja oh wait, not Nil. Slip, I guess..
17:05 IOninja pukku: any time.
17:06 tbrowder reviewing the named param constraint from yesterday: "sub foo(:!$fmt where { !$fmt.defined || $fmt ~~ &fmt })". shouldn't "sub foo(:$fmt where { !$fmt || $fmt ~~ &fmt })" work as well?
17:06 BenGoldberg It would've been funny if Mu's definitition of defined was something like: method defined(Mu:D) { True }; method defined(Mu:U) { False }, which would obviously eliminated the need for the nqp bits.
17:07 tbrowder reviewing the named param constraint from yesterday: "sub foo(:$fmt where { !$fmt.defined || $fmt ~~ &fmt })". shouldn't "sub foo(:$fmt where { !$fmt || $fmt ~~ &fmt })" work as well? [correction]
17:08 tbrowder in other words, if $fmt is defined, regardless of its value, we can then do the smart match test on the defined var
17:09 tbrowder hm, i see the problem now...how would the 'with' test plug in...let me try...
17:10 BenGoldberg If you had: "multi fmt($ where !$f) { True }; multi fmt($otherwise) {...}" then you could have: "sub foo(:$fmt where { fmt($fmt) })", because it's silly to smartmatch against something which you *know* is a subroutine.
17:12 mcmillhj joined #perl6
17:13 IOninja tbrowder: why not move all of the definedness checks and smartmatches into a sub? You can then `where &foo` and be done
17:13 IOninja Also...
17:13 IOninja buggable: eco subset::helper
17:13 buggable IOninja, Subset::Helper 'create awesome subsets': https://github.com/zoffixznet/perl6-Subset-Helper
17:13 IOninja tbrowder: also, in that context, .not is shorter than !$fmt
17:17 tbrowder IOninja: the sub is a good idea since i already had to define a token for the named var.  how does Perl 6 detect the sub call "&foo"  from the "&foo" which is a defined token? the presence or absence of the explicit block after the "where"?
17:19 tbrowder ref yr Subset::Helper i don't think a single var test warrants the dependency
17:19 IOninja tbrowder: why not?
17:20 IOninja tbrowder: what's a cost of a dependency?
17:20 IOninja In Rust, even `rand` function is given through a dependency.
17:21 tbrowder i guess that's personal preference and can be discussed over a brewski, but the Perl 6 ecosystem sure seems to make it easier to have such dependencies!
17:21 IOninja "I don't want a dependency" is another way of saying "I like to waste my time reinventing wheels and debugging all the bugs already debugged in a dependency"
17:22 ugexe but in reality it involves debugging other people's meta6.json files and whatnot
17:22 IOninja heh
17:22 IOninja Copy the file over then :)
17:23 IOninja I'm planning to tell people to start adding tags to their meta files BTW
17:23 tbrowder i'm not against dependencies at all, but in this case i think it isn't warranted, but i guarantee you i will try the Subset::Helper because i like param constraints!
17:24 IOninja And gonna add a tags row to modules.perl6.org; similar how we got bug tags on perl6.fail
17:24 ugexe wonder if you cant do something like &foo does role :: { method ACCEPTS(|c) { ... } }
17:25 girafe joined #perl6
17:25 ugexe tags would be more useful to search against than description or a fuzzy name search
17:25 pukku Is there a better way to say "@foo.push: { a => %x<a>, b => %x<b>};"? Something which reduces the repetition of %x? (Maybe there isn't, it's not like it takes a lot of extra typing, but just curious...)
17:26 tbrowder is the plan to have some standard tags?  i like that idea
17:26 mcmillhj joined #perl6
17:26 ugexe @foo.push: { |%x } ?
17:27 ugexe or do you want specific keys only?
17:27 IOninja |%x<a b>:p would work, if you want just the slice
17:28 IOninja (untested)
17:28 pukku Sorry, my example wasn't clear -- I want to only have specific keys, and rename the keys. Should have been more like "@foo.push: { k1 => %x<a>, k2 => %x<b> };"
17:29 IOninja pukku: @foo.push: %( k1 => .<a>, k2 => .<b> ) with %x
17:29 ugexe its longer, but something like `@foo.push: with { :k1(.<a>), :k2(.<b>) }` might work
17:29 pukku Thanks!
17:39 tramdas joined #perl6
17:39 bjz joined #perl6
17:39 tramdas hello. what is the way to use interface in Perl6
17:41 IOninja tramdas: what kind of interface?
17:41 lichtkind joined #perl6
17:42 domidumont joined #perl6
17:42 IOninja m: <a b c d e f g>.map(*.uc ∘ *~*).say
17:42 camelia rakudo-moar ed8d58: OUTPUT: «Type check failed in binding to '<anon>'; expected Callable but got Str ("a")␤  in whatevercode  at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
17:42 tbrowder IOninja: see using a sub for the named param code in github gist <https://gist.github.com/tbrowder/​62e22837715f749986983491655ef8fe>
17:42 IOninja Wondering why ^ that fails :/
17:42 mst tramdas: if you mean java-style, a role is an interface with (possibly) a partial default implementation
17:43 khw joined #perl6
17:43 tramdas @ioninja just to declare abstract methods
17:43 tbrowder great idea!  now i'll try your Subset::Helper...
17:44 IOninja tbrowder: why have token instead of normal regex there? That particular code can be faster witho ut any regexes: .defined or $fmt eq any <a A b B>
17:44 mcmillhj joined #perl6
17:44 mst tramdas: https://docs.perl6.org/language/objects#Stubs
17:45 tramdas joined #perl6
17:45 IOninja m: role Foo { method bar { … } }; class Bar does Foo {}
17:45 camelia rakudo-moar ed8d58: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Method 'bar' must be implemented by Bar because it is required by roles: Foo.␤at <tmp>:1␤»
17:45 IOninja m: role Foo { method bar { … } }; class Bar does Foo { method bar { say "hi" } }.bar
17:45 camelia rakudo-moar ed8d58: OUTPUT: «hi␤»
17:47 IOninja tramdas: dunno if you missed the link above due to reconect; mst linked to https://docs.perl6.org/language/objects#Stubs
17:47 TimToady m: <a b c d e f g>.map([∘] *.uc, *~*).say
17:47 camelia rakudo-moar ed8d58: OUTPUT: «Too few positionals passed; expected 2 arguments but got 1␤  in block <unit> at <tmp> line 1␤␤»
17:47 tbrowder because i'm not as well-informed as you are (and because this simple code is just for discussion, my real code has more comparisons that i think require a regex or set of tokens, but i will just use yr code for this...thanks!
17:47 inspire joined #perl6
17:49 tramdas <Ioninja> Thank u
17:49 IOninja m: <a b c d e f g h>.map([∘] *.uc, *~*).say
17:49 camelia rakudo-moar ed8d58: OUTPUT: «(AB CD EF GH)␤»
17:49 IOninja Ah OK. It closes over the ∘ I guess.
17:49 IOninja Thanks.
17:51 cibs joined #perl6
17:52 inspire @tramdas : roles with stubs
17:52 TimToady m: <a b c d e f g h>.map(item(*.uc) ∘ item(*~*)).say
17:52 camelia rakudo-moar ed8d58: OUTPUT: «(AB CD EF GH)␤»
17:55 mst tramdas: you're welcome
17:56 IOninja mst++ knowing wtf interfaces are! :)
17:58 IOninja m: <2 3 2 4 3 10>.map(*.&[-](2) ∘ *.flip ∘ &[**]).say
17:58 camelia rakudo-moar ed8d58: OUTPUT: «(6 59 94093)␤»
17:58 IOninja \o/
17:58 mst I've had a lot of practice teaching people Moo(se)
17:59 mcmillhj joined #perl6
18:16 IOninja m: sub foo { role Bar {} }; say Bar
18:16 camelia rakudo-moar cb149a: OUTPUT: «(Bar)␤»
18:16 IOninja m: FakeSignature
18:16 camelia rakudo-moar cb149a: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤    FakeSignature used at line 1␤␤»
18:16 IOninja How come FakeSignature isn't available? It don't got a my on it: https://github.com/rakudo/rakudo/blob​/032b283d5/src/core/operators.pm#L761
18:17 IOninja (I don't want it available, but just noticed it doesn't have a my)
18:29 [Coke] IOninja: defaults to my?
18:29 IOninja [Coke]: just in core?
18:29 IOninja *in setting
18:32 IOninja m: say CORE::Ffsdfdsfdsfdsfds
18:32 camelia rakudo-moar cb149a: OUTPUT: «Nil␤»
18:32 IOninja m: say CORE::Ffsdfdsfdsfdsfds.HOW.^name
18:32 camelia rakudo-moar cb149a: OUTPUT: «Perl6::Metamodel::ClassHOW␤»
18:32 IOninja nine: ^ is that normal?
18:33 IOninja or anyone :)
18:34 IOninja m: say PROCESS::edsadsadsa
18:34 camelia rakudo-moar cb149a: OUTPUT: «Could not find symbol 'edsadsadsa'␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
18:34 IOninja m: say MY::edsadsadsa
18:34 camelia rakudo-moar cb149a: OUTPUT: «Nil␤»
18:42 tbrowder ugexe: are you here? i just reinstalled zef with --force and now all my installed modules are unknown!
18:42 IOninja oops :}
18:42 tbrowder argh!
18:43 El_Che may the force be with you... or not
18:43 ugexe reinstalling zef shouldn't affect that
18:44 ugexe when you say unknown does `zef list --installed` show it? or does `use Whatever;` load it?
18:44 tbrowder i've tried update and a reinstall but no modules found (i think there is a simple fix but don't remember it--need to keep zef notes and hints...)
18:44 perlpilot tbrowder: don't break it in the first place?  ;)
18:45 tbrowder i was just following a suggestion for a zef issue...
18:45 ugexe i mean it seems like you're getting a different perl6 than you expect
18:45 ugexe (btw no need for --force install for zef anymore, since it has a version now)
18:46 tbrowder ugexe: list --installed doesn't show it, but I do see a long list of installed modules
18:48 tony-o tbrowder: did you rebuild your perl6 and then reinstall zef when this started happening?
18:49 tbrowder i had rebuilt rakudo a week or so ago, version now: This is Rakudo version 2017.02-29-gb9332ae built on MoarVM version 2017.02
18:49 lostinfog joined #perl6
18:49 tbrowder i just reinstalled zef a few minutes ago
18:50 tony-o can p6 find your module if you do: perl6 -e 'use YourModule;'
18:54 tbrowder no. it's listed in the p6 modules but zef can't find it online or locally.
18:55 tbrowder when i do "zef update: i get some ---- lines and one : "Content Storage|Distribution Count"...that's it
18:56 ugexe what content storage and what distribution count?
18:57 tbrowder nothing...
18:57 agentzh joined #perl6
18:59 cpage_ joined #perl6
19:00 ugexe hmmm I wonder if its from zef being versioned "*" in the recent past, and you had *that* previously installed. and then your previous force install was really just a normal install of the versioned zef, and the wrong stuff is being loaded
19:01 sufrostico joined #perl6
19:01 sufrosti1o joined #perl6
19:02 tbrowder last time i had a problem didn't you have me blow away one of the zef directories and start over somehow?
19:02 ugexe `zef nuke RootDir` (or `rm -rf ~/.zef`)
19:02 tbrowder shall i try it?
19:03 ugexe i would probably clone zef locally and run `perl6 -Ilib bin/zef uninstall zef` (which might uninstall multiple versions, including version *), then reinstall zef
19:03 ugexe yes you should try that first
19:03 tbrowder ok, will do...
19:06 lichtkind does anyone know what is the story behind the name of zef tool?
19:08 ugexe https://en.wikipedia.org/wiki/Zef
19:09 pukku Is there a reason that spurt throws an "X::AdHoc" exception, while "chdir" throws an "X::IO" exception? Shouldn't spurt also throw an IO exception?
19:09 lichtkind thanks
19:10 moritz pukku: yes. A patch to change that would be very appreciated
19:10 pukku OK, so it's not intentional. I'll see if I can figure out how to make a patch.
19:10 IOninja pukku: that'll be covered by the IO grant that's currently being run by The Perl Foundation
19:11 IOninja pukku: but if you spot any more weirdness like that, drop me a line.
19:11 IOninja pukku: grant info: http://news.perlfoundation.org/2017/0​1/grant-proposal-standardization.html
19:12 IOninja pukku: all will be completed by 2016.04.15 release.
19:12 tbrowder ugexe: successful uninstall reinstall from repo, then zef update and no repo info, can't find my module, it does list others
19:12 IOninja (though some things will be avilable only under 6.d language)
19:13 khw joined #perl6
19:13 ugexe tbrowder: are you using rakudobrew? are you sure zef is being invoked with the proper perl6 bin?
19:14 tbrowder i am NOT using rakudobrew
19:15 tbrowder i haven't for a long time, just compile rakudo from repo current nom branch periodically
19:15 IOninja ugexe: `zef nuke RootDir` <--- is that a literal RootDir in that command? Same effect as rm -fr ~/.zef?
19:15 pukku Another bug -- mkdir doesn't seem to throw an error, or return an failure, if it doesn't create a directory?
19:15 ugexe gist the output of `RAKUDO_MODULE_DEBUG=1 ZEF_PLUGIN_DEBUG=1 perl6 -Ilib bin/zef update`
19:16 ugexe IOninja: yes - also StoreDir and TempDir: https://github.com/ugexe/zef/blob/​master/resources/config.json#L3-L5
19:16 IOninja Thanks
19:19 IOninja pukku: thanks. There a couple of bug reports in that area, though I'm unsure we'd want it to fail if the directory already exists
19:19 andrzejku joined #perl6
19:19 pukku This is an error where it can't create the directory, because it doesn't have write permissions.
19:19 pukku (I agree it shouldn't fail if the directory already exists.)
19:20 tbrowder ugexe: gist is here <https://gist.github.com/tbrowder/​ddfe58f55cd713039b0e207033841d58>
19:20 IOninja pukku: right, that's a bug. There's a ticket for it: https://rt.perl.org/Ticket/Displ​ay.html?id=127772#ticket-history
19:21 tbrowder got to run pick up granddaughter from school...back in a short while...
19:23 IOninja pukku: actually if it can't create directory it does seem to Fail
19:23 ugexe tbrowder: what command did you use to install with (the entire perl Configure.pl ...)? This looks like the dynamic requires are not working
19:24 IOninja pukku: thought the behaviour varies in routine form -_-
19:24 IOninja s: &mkdir
19:24 SourceBaby IOninja, Sauce is at https://github.com/rakudo/rakudo/blob/​f9294c3/src/core/io_operators.pm#L227
19:24 BenGoldberg I've got a silly question regarding exceptions -- is there an easy way to create one from errno?
19:25 IOninja pukku: in sub form it just returns a list of directories that it managed to create :/
19:25 BenGoldberg I know it's of course possible, I can do NativeCall and cglobal(...errno...) and perror(...) is native and so on and so forth, but if there's aready an easy in-core way of doing it I'd really prefer that.
19:26 geekosaur BenGoldberg, https://downloads.haskell.org/~ghc/8.​0.2/docs/html/libraries/base-4.9.1.0/​Foreign-C-Error.html#v:errnoToIOError
19:26 geekosaur whoops
19:26 geekosaur did oty check chganne :/
19:26 geekosaur urrrgh
19:26 geekosaur I am really not doing well right now :/
19:27 geekosaur I suspect the answer is "not that easy" for p6
19:27 pukku Hm. OK, then the documentation needs to be updated. According to that, only the version which starts with a mode, and then a list of dirnames, returns the successfully created names: https://docs.perl6.org/routine/mkdir
19:27 BenGoldberg That's perfect, just the wrong language ;)
19:27 geekosaur especially since if you need to access the C errno, it's secretly a call that retrieves thread local state
19:27 IOninja BenGoldberg: based on skimming through src/core/Exception.pm, nope
19:27 IOninja pukku: right, documentation and tests are also part of the IO grant.
19:27 geekosaur but my guess is that what rakudo gets is usually via libuv
19:28 IOninja pukku: and you can probably see now why that grant is running in the first place :)
19:28 geekosaur actially I did worse than wrong channel, I also thought you were one of the folks in #ghc :p
19:28 * geekosaur could stand being less dizzy now...
19:29 Cabanossi joined #perl6
19:29 pukku I think that it's more useful the way that it's documented -- or at least, it would be good if you're creating one directory only, if it behaved like the rest of the IO stuff. You were right that spurt doesn't actually return an error, but throws, so I was hoping I could use the same construct (try { CATCH {} }) for both...
19:29 * BenGoldberg hands geekosaur some energems.  Chocolate+caffeine=win!
19:29 pukku BTW: for those who helped me previously, here is my updated, and hopefully more idiomatic, version: https://gist.github.com/remorse/​8db4a635e58f526a7ef43716a3b68964 (although the error checking for mkdir is wrong)
19:29 tbrowder ugexe: i'll get that Config info in a while...it's not available at current location...
19:30 BenGoldberg They probably won't help with dizzyness, though -- you need this thing called "sleep" for that, which you should try to get more familiar with.
19:30 IOninja pukku: you can use this as a workingaround for now: no need for CATCH (try spurt "blah", "blah") orelse carp "blah blah $!.message()"
19:30 pukku I did try the "orelse" -- that didn't seem to work.
19:30 IOninja really :(
19:31 pukku I can try again -- hang on...
19:31 IOninja pukku: works for me. What perl6 version you got?
19:31 ugexe tbrowder: try deleting ~/.zef before doing that command. I see in your gist that you are using a modified zef config still
19:32 IOninja pukku: ensure you got parens right: https://gist.github.com/zoffixznet​/42a5970c23f4ce1910f78ea5143da53c
19:32 pukku "This is Rakudo version 2017.01 built on MoarVM version 2017.01"
19:32 ugexe the reason you used a modified config is no longer needed
19:32 pukku But I didn't know that I needed the "try" bit -- let me try that...
19:32 IOninja pukku: pro tip, you can save typing in short subs by using implied signatures:    sub croak { note $^msg; exit 1 }
19:33 IOninja pukku: you wouldn't were it failing instead of throwing, but it does ATM, so you need the try
19:34 pukku Maybe my version is too old, but "(try spurt ...) orelse ..." doesn't work for me.
19:34 IOninja s: &infix:<orelse>
19:34 SourceBaby IOninja, Sauce is at https://github.com/rakudo/rakudo/blo​b/f9294c3/src/core/operators.pm#L696
19:35 IOninja pukku: last change to it was 3 months ago... What do you mean by doesn't work?
19:35 ugexe tbrowder: thats actually certainly why its broke. If you `rm -rf ~/.zef` it should fix whatever got criss-crossed
19:36 IOninja c: 2017.01 (try spurt "/root/blah", "blah") orelse say "you ain't a root, bruh"
19:36 committable6 IOninja, ¦2017.01: «you ain't a root, bruh»
19:36 IOninja pukku: ^ works fine on 2017.01...
19:37 pukku Hm. The gist you had does work. However, in context I get "Use of Nil in string context in block  at ./tumblr.pl6 line 175"
19:37 pukku No, wait, I see what's going on.
19:38 pukku $_ isn't being set to something that stringifies.
19:38 IOninja c: 2017.01 (try spurt "/root/blah", "blah") orelse say "you ain't a root, bruh: $!"
19:38 committable6 IOninja, ¦2017.01: «you ain't a root, bruh: spurt is disallowed in restricted setting»
19:38 IOninja pukku: ^ use $!
19:39 pukku Got it -- thanks!
19:41 IOninja m: &exit.wrap: { note $^msg; nextwith 1 }; exit "meows"; say "already quit"
19:41 camelia rakudo-moar f9294c: OUTPUT: «meows␤»
19:42 IOninja Another way to do the croak thing...
19:43 tbrowder ugexe: okay, i removed ~/.zef and all looks well. thanks!
19:43 IOninja my &croak = {exit 1} ∘ *.note; croak "meow"
19:43 IOninja m: my &croak = {exit 1} ∘ *.note; croak "meow"
19:43 camelia rakudo-moar f9294c: OUTPUT: «meow␤»
19:43 IOninja haha :D Even cooler way to do the croak thing :)
19:44 pukku Composition?
19:44 IOninja Yup
19:44 IOninja Can use o instead of ∘ too.
19:44 tbrowder ugexe: btw, my configuration rakudo config script is at gist <>
19:44 IOninja m: my &croak = *.&exit ∘ *.note; croak "meow"; say "hi"
19:44 camelia rakudo-moar f9294c: OUTPUT: «meow␤»
19:45 IOninja .oO( ...make ∘ thunk... }
19:46 tbrowder ugexe: gist <https://gist.github.com/tbrowder/​8514e8abe0c177e9ec7276626f498419>
19:47 ugexe tbrowder: The reason it broke I thought I had preemptively fixed this for your custom config specifically but I guess I was wrong heh https://github.com/ugexe/zef/blo​b/master/lib/Zef/Config.pm6#L13
19:48 tbrowder ah, when no one was looking! sounds like NSA! heh-heh!
19:49 tbrowder ugexe: thanks for the help--zef sure is robust--very good to see!
19:50 tbrowder in spite of the current state of the p6 ecosystem, i still think the ux is better than cpan...my 2 cents
19:58 IOninja pukku: untested, but probably works. Alternate version of your convert-img routine with some signature unpacking fun: https://gist.github.com/zoffixznet​/2a7f4a413226b10fb289fc03d7ef3b28
19:59 * IOninja edits out the left over `$r` :)
20:00 pukku Whoa. OK, I'm going to try that, and probably include it (with credit) in my slides if that's ok, but I could never have come up with that.
20:00 IOninja Feel free to use with no credit.
20:07 BenGoldberg <!-- fun with html comments: <img src="..."> --> And then there's: <img src="/relative/path/here.png">, and then <img src="malformed>
20:10 BenGoldberg I really hope your html comes from somewhere nice, which doesn't have that sort of nonsense.
20:11 pukku If I could find a DOM manipulator which didn't change the order of attributes when re-stringifying it, I would use that hands down.
20:14 bjz joined #perl6
20:16 labster joined #perl6
20:24 sufrostico joined #perl6
20:29 rindolf IOninja: ah, you are Zoffix! The token  has fallen
20:32 itaipu joined #perl6
20:33 Guest78078 joined #perl6
20:38 xzhao joined #perl6
20:38 IOninja rindolf: token?
20:39 IOninja What token...
20:39 rindolf IOninja: it's an expression that means "now I get it"
20:40 IOninja Ah ok.
20:40 naxieAlDle joined #perl6
20:41 rindolf IOninja: https://en.wiktionary.org/wiki/the_penny_drops
20:41 gfldex if you would take all the idioms out of the english language there would be hardly anything left
20:41 pukku I have to leave, but thanks to everyone for all of their suggestions, comments, and help!
20:41 rindolf pukku: bye
20:42 IOninja Weird. You'd think dropping a penny would lose something not gain something.
20:42 rindolf IOninja: it comes from public phones
20:42 rindolf IOninja: i think
20:43 IOninja lol
20:44 sufrostico joined #perl6
20:48 Geth ¦ Inline-Python: 7c3d51bfcb | (Stefan Seifert)++ | 3 files
20:48 Geth ¦ Inline-Python: Fix segfault when loading matplotlib
20:48 Geth ¦ Inline-Python:
20:48 Geth ¦ Inline-Python: Somehow one of the matplotlib module's attributes does not have a name.
20:48 Geth ¦ Inline-Python: We ended up calling PyObject_GetAttrString with a NULL name.
20:48 Geth ¦ Inline-Python: Skip the nameless "attribute" instead.
20:48 Geth ¦ Inline-Python:
20:48 Geth ¦ Inline-Python: Fixes GH #17
20:48 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/7c3d51bfcb
20:48 nine Oh how I hate Python...
20:49 lichtkind_ joined #perl6
21:06 moritz "fun" stuff indeed
21:07 moritz use matplotlib::pyplot:from<Python>;
21:07 moritz matplotlib::pyplot.title('Test foo');
21:07 moritz Could not find symbol '&pyplot'
21:08 moritz this is a rakudo 2017.02; should I try on a bleeding edge rakudo?
21:09 sjn hm. weird error in a test in HTTP::UserAgent (t/030-cookies.t)
21:09 sjn sergot: ^
21:10 sjn error is "Lexical 'HTTP' already declared"
21:10 sjn no line number or anything
21:10 moritz sounds like fallout from the lexical module loading changes
21:11 lichtkind_ you all++
21:11 RabidGravy ah, I hadn't got round to testing H::UA
21:11 lichtkind moritz: so you dont want test reader?
21:12 IOninja sjn, what's your perl6 version?
21:13 sjn IOninja: This is Rakudo version 2017.02-199-g1934a56 built on MoarVM version 2017.02-25-g5dd8f04
21:13 sjn I can upgrade
21:13 IOninja m: say $*PERL.compiler.version
21:13 camelia rakudo-moar 68a40f: OUTPUT: «v2017.02.224.g.68.a.40.f.7␤»
21:13 IOninja sjn, yes, try upgrading a bunch of fixes went in this morning
21:13 RabidGravy sjn, just fixed it, give it five
21:13 Geth ¦ doc: f002dfef74 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Callable.pod6
21:13 Geth ¦ doc: more better grammar
21:13 Geth ¦ doc: review: https://github.com/perl6/doc/commit/f002dfef74
21:13 Geth ¦ doc: 44c6891d86 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Callable.pod6
21:13 Geth ¦ doc: doc perl6/roast/commit/270dcf82f2
21:13 Geth ¦ doc: review: https://github.com/perl6/doc/commit/44c6891d86
21:14 nine moritz: I think I do not yet create wrappers for nested namespaces
21:14 sjn also, that error message was a little LTA :-)
21:14 gfldex IOninja: please note ^^^
21:14 nine moritz: the whole code for creating wrappers in Inline::Python is very young
21:14 sufrosti1o joined #perl6
21:15 st_elmo joined #perl6
21:15 RabidGravy sjn, it's too early for it to give much of a useful diagnostic
21:15 nine moritz: do you actually need Python's datetime or were you just playing around?
21:15 sjn no context? not even neighbouring AST nodes?
21:16 IOninja gfldex: a bit unclear :) also, it gets LHS's .of. I can update when I get home
21:16 moritz nine: I wanted to pass python's date objects to matplotlib for one of the axes
21:16 andrzejku joined #perl6
21:16 gfldex IOninja: please do I am in dire need to watch The Expanse _right_now_
21:17 sjn RabidGravy: upgrading rakudo removed the problem
21:17 Geth ¦ Inline-Python: 8943dff9c6 | (Stefan Seifert)++ | pyhelper.c
21:17 Geth ¦ Inline-Python: Enable passing around Python's date objects
21:17 Geth ¦ Inline-Python:
21:17 Geth ¦ Inline-Python: Note: it's not yet possible to actually call methods on those objects,
21:17 Geth ¦ Inline-Python: as they are not ordinary Python objects but a completely different
21:17 Geth ¦ Inline-Python: beast. The datetime "module" is part of the Python interpreter itself
21:17 Geth ¦ Inline-Python: and written in C.
21:17 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/8943dff9c6
21:18 nine moritz: then this ^^^ may be enough to get you up and running
21:18 RabidGravy sjn, I removed the offending require anyway
21:18 sjn ook
21:18 * sjn gets different errors now o(
21:19 sjn \o/
21:20 moritz nine: thanks!
21:20 sjn huh... "You cannot create an instance of this type (SSL)"
21:21 sjn in HTTP::UserAgent line 356
21:21 RabidGravy let's have a look
21:22 sjn could be missing stuff in my install
21:22 sjn yeah, sorry, it looks like I have a broken install of OpenSSL :-(
21:23 mst fscking software
21:24 RabidGravy there's a chance that some recent change broke that line though
21:24 moritz nine++ # works
21:25 moritz now I get the fun of ValueError in Perl 6 code :-)
21:25 sufrostico joined #perl6
21:25 sufrostico joined #perl6
21:26 sjn Oh, and another question (and apologies for my ignorance here); Why doesn't NativeCall load libraries like "libssl.so.1.0.0"? installing the -dev package only adds a symlink with the "libssl.so" name which points at that first one..
21:28 * sjn imagines it has to do something with the horrible fact that a version number is part of the filename, but isn't there a way to figure out that one without always having to install -dev packages in order to make NativeCall modules work?
21:28 RabidGravy sjn, it does
21:28 perlpilot sjn: you mean, why doesn't NativeCall automatically find those when you specify just "foo.so" ?
21:28 RabidGravy it wotks out the version
21:29 sjn I just read an error: "Cannot locate native library 'libssl.so': libssl.so: cannot open shared object file: No such file or directory"
21:29 sjn from NativeCall
21:29 RabidGravy IO::Socket::SSL does something special
21:30 sjn ehrm. ok?
21:30 RabidGravy but nativecall itself is quite happy to load the version
21:30 tbrowder ugexe: another dumb question on the correct META6.json file hash for a release.  the actual file hasn't changed for several commits, but it has the correct info for the actual release.  So is the hash reference for that file what is needed even though is is at a previous commit?
21:31 perlpilot Doesn't LibraryMake have some handy logic for turning "foo.so" into the appropriate "foo.so.1.0.1" and applying that to "is native"?
21:31 tbrowder s/is is/is at/
21:31 ugexe tbrowder: how can it not change if you set the source-url?
21:32 RabidGravy perlpilot the "native" trait does that for you
21:32 Geth ¦ Inline-Python: e925a7def0 | (Stefan Seifert)++ | configure.pl6
21:32 Geth ¦ Inline-Python: Fall back to python2.7-config if python2-config is unavailable
21:32 Geth ¦ Inline-Python:
21:32 Geth ¦ Inline-Python: Fix GH #15
21:32 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/e925a7def0
21:32 perlpilot ah, neat.  I don't think it did t hat last time I used it  (been a while-ish)
21:33 IOninja sjn, did you upgrade to HEAD?
21:33 geekosaur sjn, ythis is a fight I'm pretty much resigned to losing :/ you should basically never use an unversioned .so
21:34 RabidGravy perlpilot, typically  one can do https://github.com/jonathanstowe/Audio-Encode-Lam​eMP3/blob/master/lib/Audio/Encode/LameMP3.pm#L493
21:34 geekosaur because you can't possibly know if it is compatible with what you are doing
21:34 tbrowder well, it changed when i set it, but i now know how the format of the releases are made on github, so it was set ahead of my actual release creation which was done at the CLI in my local repo and pusheg to github which then auto-magically created the proper release files.
21:34 sjn IOninja: of... rakudo? This is Rakudo version 2017.02-224-g68a40f7 built on MoarVM version 2017.02-31-g91aab71
21:34 geekosaur but everyone fully expects that they can say foo.so and get a guaranteed 100% compatible shared object
21:34 geekosaur which to me says they have never programmed in C (this is why pkg-config exists!)
21:34 RabidGravy like I say IO::Socket::SSL does something special
21:35 RabidGravy it passes the full name, because it bundles the ssl library for windows or something
21:35 IOninja sjn, yup looks good. Which module is failing now? the can't have instance thing? it likely needs a change in how it does require
21:35 perlpilot geekosaur: All those symlinks from foo.so to foo.so.1.0.0 just encourages that belief too :)
21:36 geekosaur no, that's specifically telling you which of the multiple runtime versions matches the dev library
21:36 geekosaur but, everyone wants to think simple and expect the right thing to magically happen
21:36 geekosaur and yes, it would have to be magic
21:37 Geth ¦ Inline-Python: 66f16cc5aa | (Moritz Lenz)++ | t/date.t
21:37 Geth ¦ Inline-Python: Test returning of date objects
21:37 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/66f16cc5aa
21:37 Geth ¦ Inline-Python: ed16dae1ba | (Moritz Lenz)++ | t/date.t
21:37 Geth ¦ Inline-Python: Tests for date and datetime object passing
21:37 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/ed16dae1ba
21:37 Geth ¦ Inline-Python: 9431e1bbe8 | (Stefan Seifert)++ | t/date.t
21:37 Geth ¦ Inline-Python: Merge branch 'date-test' of git://github.com/moritz/Inline-Python
21:37 Geth ¦ Inline-Python: review: https://github.com/niner/Inl​ine-Python/commit/9431e1bbe8
21:37 ugexe m: use NativeCall :TEST; say guess_library_name(( "foo", Version.new(1) ))
21:37 camelia rakudo-moar 68a40f: OUTPUT: «libfoo.so.1␤»
21:37 nine moritz++ # thanks for the tests!
21:37 geekosaur because NativeCall can't run your program against every runtime version installed and pick the one that works (how does it tell? some failure modes are wrong output instead of crash/error)
21:37 sjn IOninja: right now I have trouble with HTTP::UserAgent, who fails with 085-auth.t and 090-ua-ssl.t (different error messages)
21:38 El_Che sjn: I found this syntax nice: sub ldap_err2string(int8) returns Str is native('ldap-2.4', v2) is export { * }
21:38 El_Che (lib, version)
21:38 El_Che (of course it's the same thing, but a lot nicer on the eyes)
21:38 jnthn Using an unversioned openssl (if that's the lib in question) is likely going to end in tears, 'cus afaik the API for 1.1 changed some from 1.0...
21:38 RabidGravy yes, thar it is how you are supposed to do it
21:40 ugexe https://github.com/sergot/openssl/commit/​7eb4609688e2d0b7bb9ffd702e7c2bd2a09ce091 # this is how it handles 1.1 - 1.0 api
21:40 tbrowder ugexe: so the source link INSIDE the META6.jsonpoints to the correct release tree: "source"     : "https://github.com/tbrowder/Lin​ux-Proc-Time-Perl6/tree/v0.1.0" which i believe is what zef will use for installation source, no?
21:40 IOninja sjn, ok, this line is wrong; needs to be changed to    if $!     https://github.com/sergot/http-usera​gent/blob/master/t/090-ua-ssl.t#L10
21:41 RabidGravy IOninja, works fine here
21:41 IOninja not sure about the other test
21:41 ugexe tbrowder: i mean you said your meta6.json hadn't changed in awhile, yet you have to update the source-url *somewhere* inside the meta6.json file to point to whatever your release is
21:41 sjn right.
21:41 IOninja RabidGravy: maybe not the source of sjn's error but that check will never detect a missing sock::ssl
21:41 sjn I just install IO::Socket::SSL, and that makes all tests pass
21:41 sjn installed*
21:42 RabidGravy I've literally just built a new rakudo and that test works
21:42 sjn RabidGravy: could be that you already had IO::Socket::SSL installed
21:42 IOninja RabidGravy, copy-paste that line into the bot and see
21:42 IOninja (I would, but I'm on the phone)
21:42 sjn I didn't have it, so I triggered the error IOninja spotted
21:43 IOninja m: try require Bobkis; if ::('Bobkis') ~~ Failure { say "boo" } else { say "we have Bubkis  apparently"; }
21:43 camelia rakudo-moar 68a40f: OUTPUT: «we have Bubkis  apparently␤»
21:43 ugexe m: say ::("IO::Socket::SSL") ~~ Failure
21:43 camelia rakudo-moar 68a40f: OUTPUT: «True␤»
21:43 IOninja RabidGravy: ^
21:43 RabidGravy right
21:44 tbrowder https://www.irccloud.com/pa​stebin/EjMSRUCp/meta6.json
21:44 IOninja ugexe, missing the try require bit that installs a `package`
21:44 * IOninja &
21:45 ugexe ah
21:45 ugexe m: try require ::("IO::Socket::SSL"); say ::("IO::Socket::SSL") ~~ Failure
21:45 camelia rakudo-moar 68a40f: OUTPUT: «True␤»
21:45 sufrostico joined #perl6
21:45 tbrowder ugexe: those are the correct links for the one and only release, even though the meta6.json was last committed before the actual release
21:46 ugexe m: try require "IO::Socket::SSL"; say ::("IO::Socket::SSL") ~~ Failure
21:46 camelia rakudo-moar 68a40f: OUTPUT: «True␤»
21:46 TEttinger joined #perl6
21:47 RabidGravy just fixing it
21:47 ugexe tbrowder: ok, so in the ecosystem you just need to include a link to a meta6.json file with the correct release url (which could be one of many commits)
21:48 tbrowder roger!  thanks!
21:51 espadrine joined #perl6
21:51 RabidGravy IOninja, sjn, ugexe just fixed that
21:51 RabidGravy may look harder tomorrow
21:51 sjn RabidGravy++ # fixing stuffs :)
21:52 Geth ¦ ecosystem: 6a60b0e608 | (Tom Browder)++ | META.list
21:52 Geth ¦ ecosystem: add new module Linux::Proc::Time
21:52 Geth ¦ ecosystem: review: https://github.com/perl6/e​cosystem/commit/6a60b0e608
22:04 agentzh joined #perl6
22:06 bjz joined #perl6
22:06 * sjn was trying to get Telegram::Bot working, but the examples there seem to be incomplete
22:08 * [Coke] wonders if Zefram is in this channel.
22:13 Cabanossi joined #perl6
22:17 sufrostico joined #perl6
22:25 mcmillhj joined #perl6
22:41 obfusk joined #perl6
22:42 mcmillhj joined #perl6
22:44 Voldenet joined #perl6
22:44 Voldenet joined #perl6
22:58 zakharyas joined #perl6
22:58 mcmillhj joined #perl6
23:00 agentzh joined #perl6
23:04 mcmillhj joined #perl6
23:18 skids .oO("meth_providers"  Heheh.)
23:19 mcmillhj joined #perl6
23:20 dct joined #perl6
23:25 Praise- joined #perl6
23:31 sufrostico joined #perl6
23:31 IOninja [Coke]: considering his opinion of Perl 6 he expressed in his talk, I highly doubt it :)
23:31 IOninja I'm just glad he files all these tickets.
23:36 mcmillhj joined #perl6
23:42 mcmillhj joined #perl6
23:50 BenGoldberg joined #perl6
23:52 Exchizzzz joined #perl6
23:53 Exchizzzz Hi guys. I've stumbled across »  a few times, usually after a hash/list. Do you know what it's called so I can read more about it ? Thanks in advance :>
23:54 Exchizzzz For instance: $/.make: $<Rule>».made
23:54 bjz joined #perl6
23:54 TimToady it's called a "hyper metaoperator"
23:55 * japhb deletes his response in progress after TimToady appears
23:55 japhb Yeah, what he said.
23:55 japhb :-)
23:55 Exchizzzz Awesome TimToady, thanks - found it :>
23:55 TimToady it distributions an operation over the list at the wide end
23:55 Exchizzzz aaaahá
23:55 TimToady *butes
23:56 TimToady so in this case, kinda like a .list.map( { .made } )
23:57 Exchizzzz I see, thanks :>
23:57 Exchizzzz have a nice day/night/whatever it is in your timezone :b

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo