Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2016-09-20

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:02 sufrostico joined #perl6
00:08 poohman joined #perl6
00:13 sufrostico joined #perl6
00:17 pierre_ joined #perl6
00:21 flexibeast joined #perl6
00:27 mcmillhj joined #perl6
00:37 Zoffix joined #perl6
00:37 Zoffix What's the difference between +@ and *@ slurpries?
00:37 Zoffix m: sub a(+@a){ dd @a }; sub b(*@a){ dd @a }; a 1, 2, 3; b 1, 2, 3;   a 1; b 1;   my @a = ^2; a @a; b @a;
00:37 camelia rakudo-moar 8be36b: OUTPUT«[1, 2, 3]␤[1, 2, 3]␤[1]␤[1]␤[0, 1]␤[0, 1]␤»
00:38 jstimpfle joined #perl6
00:38 Zoffix No idea what this sentence is supposed to mean: "The single argument rule allows to treat arguments to subroutines, for-loops and list constructors based on context."  https://docs.perl6.org/type/Signature#Single_Argument_Rule_Slurpy
00:40 mr-foobar joined #perl6
00:41 Zoffix m: sub a(+@a){ dd @a }; sub b(*@a){ dd @a }; a [1, 2], 3; b [1, 2], 3;
00:41 camelia rakudo-moar 8be36b: OUTPUT«[[1, 2], 3]␤[1, 2, 3]␤»
00:44 skids Gah the error disappears under valgrind.  :-(
00:44 Zoffix left #perl6
00:52 skids m: sub a(+@a){ dd @a }; sub b(*@a){ dd @a }; a((1,2),3); b((1,2),3); # Zoffix
00:52 camelia rakudo-moar 8be36b: OUTPUT«[(1, 2), 3]␤[1, 2, 3]␤»
00:53 skids see also https://docs.perl6.org/language/functions#Slurpy_Conventions
00:53 TimToady + says a semantic list is expected without caring whether that list is made by syntactic commas, while * and ** mean a syntactic comma list is expected; ** hides commas inside parens so you can make a list of lists, while * makes a flat list by hoisting parenthesized lists (and interpolated lists) up to the top level
00:57 skids m: sub a(+@a){ dd @a }; sub b(*@a){ dd @a }; sub c(**@a){ dd @a }; a(($_ for 1,2,3)); b((1,2),3); c((1,2),3); a(($_ for 1,2,3)); b(($_ for 1,2,3)); c(($_ for 1,2,3));
00:57 camelia rakudo-moar 8be36b: OUTPUT«[1, 2, 3]␤[1, 2, 3]␤[(1, 2), 3]␤[1, 2, 3]␤[1, 2, 3]␤[(1, 2, 3),]␤»
01:11 stigo joined #perl6
01:12 dataangel joined #perl6
01:15 mr-foobar joined #perl6
01:21 mcmillhj joined #perl6
01:24 poohman_ joined #perl6
01:24 doc_ joined #perl6
01:29 finanalyst joined #perl6
01:32 _slade_ joined #perl6
01:37 yoleaux joined #perl6
01:37 itaipu joined #perl6
01:39 mr-foobar joined #perl6
01:47 ilbot3 joined #perl6
01:47 Topic for #perl6 is now »ö« Welcome to Perl 6! | https://perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:,  or /msg camelia p6: ... | irclog: http://irc.perl6.org or http://colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
02:01 pierre_ joined #perl6
02:04 MasteDuke m: say "⒗".uniprop; say "١".uniprop
02:04 camelia rakudo-moar 8be36b: OUTPUT«No␤Nd␤»
02:04 _sfiguser joined #perl6
02:08 MasteDuke m: say "⒗".unival
02:08 camelia rakudo-moar 8be36b: OUTPUT«16␤»
02:09 dayangkun joined #perl6
02:13 cdg joined #perl6
02:14 MasteDuke .tell harmil_wk ⒗ won't work by design for a bunch of stuff. see https://github.com/rakudo/rakudo/commit/e28305cc99b969b9592b9d6606ec5b6d25995a90 for some discussion. it has a .uniprop of 'No' instead of 'Nd'
02:14 yoleaux MasteDuke: I'll pass your message to harmil_wk.
02:17 noganex joined #perl6
02:19 pierre_ joined #perl6
02:24 itaipu joined #perl6
02:27 dayangkun joined #perl6
02:36 ka joined #perl6
02:48 sprocket joined #perl6
02:48 sprocket hello #perl6!
02:49 sprocket i just updated to the latest version of rakudo on my raspberry pi, and wanted to say thank to whomever is responsible for the markedly faster startup times :)
02:50 skids o/ They aren't awake probably but I'm sure they'll backlog.
03:02 AlexDaniel sprocket: huh, did you compile it yourself right on raspberry pi? :)
03:02 sprocket using rakudobrew, yes
03:03 AlexDaniel sprocket: how long did it take?
03:03 sprocket the last version i’d had was 2016.04 i believe, and it was about a 20 second startup when loading a perl6 program
03:03 sprocket i think compilation of rakudo took about a hour?  i dunno, i was doing other things :)
03:04 sprocket but 2016.09 perl6 binary starts up in a couple seconds
03:04 AlexDaniel interesting. I've always pulled it from debian unstable because I am impatient
03:04 sprocket makes testing a lot nicer
03:04 AlexDaniel at this moment it is slightly outdated :( 2016.07.1
03:11 poohman joined #perl6
03:14 wamba joined #perl6
03:23 skids m: class A { my $e = 42 }; import A; say A::("\$e") # I wonder what that message is trying to say
03:23 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Combination of indirect name lookup and call not supported␤at <tmp>:1␤------> 3onder what that message is trying to say7⏏5<EOL>␤    expecting any of:␤        argument list␤»
03:23 pierre_ joined #perl6
03:24 skids Also trying to figure out how to acess symbols from another module without importing into own namespace.
03:24 skids m:
03:25 skids m: class A { $e = 42 }; import A; $A::e.perl.say
03:25 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$e' is not declared␤at <tmp>:1␤------> 3class A { 7⏏5$e = 42 }; import A; $A::e.perl.say␤»
03:25 skids m: class A { my $e = 42 }; import A; $A::e.perl.say
03:25 camelia rakudo-moar 8be36b: OUTPUT«Any␤»
03:25 skids This is confusing.
03:26 skids (not the first one, that the symbol exists but is Any in the second one.)
03:28 MasterDuke joined #perl6
03:29 pierre_ joined #perl6
03:39 geekosaur I think I could argue that the bug there is that it is visible at all; a "my" should not be accessible, at least without using namespace magic
03:40 geekosaur m: class A { our $e = 42 }; $A::e.perl.say
03:40 camelia rakudo-moar 8be36b: OUTPUT«42␤»
03:41 skids "our" only works in the same compunit.
03:43 skids Hrm.  Grr.  No it seems to work, in a simple test module.  I guess it must be something to do with the fact that my modules share a base namespace.
03:45 TimToady m: class A { my $e = 42 }; import A; $a::nonesuch.perl.say
03:45 camelia rakudo-moar 8be36b: OUTPUT«Any␤»
03:45 TimToady that's what's really going on
03:45 TimToady m: class A { my $e = 42 }; import A; $A::nonesuch.perl.say
03:45 camelia rakudo-moar 8be36b: OUTPUT«Any␤»
03:45 TimToady $A::nonesuch is assumed to be a package variable that might or might not exist yet
03:46 geekosaur heh. that first one is actually even more informative
03:46 TimToady otherwise escape analysis would be completely impossible
03:49 skids Ahah maye figured it out.
03:51 skids One of the modules isn't defining a name that matches its compunit's path.
03:57 skids yeah that did it.  I wonder if that counts as a bug in the file-based repo code.
04:02 skids Oh nm.  I'm obviously just up too late.
04:48 pierre_ joined #perl6
04:55 Cabanossi joined #perl6
05:34 dayangkun joined #perl6
05:34 labster joined #perl6
05:38 ufobat joined #perl6
05:44 poohman joined #perl6
05:59 domidumont joined #perl6
06:01 Actualeyes joined #perl6
06:02 domidumont joined #perl6
06:12 cpage_ joined #perl6
06:12 _sfiguser joined #perl6
06:16 rindolf joined #perl6
06:19 pierre_ joined #perl6
06:20 Actualeyes joined #perl6
06:25 firstdayonthejob joined #perl6
06:29 poohman joined #perl6
06:42 mr-foobar joined #perl6
06:53 domidumont joined #perl6
06:54 pierre_ joined #perl6
06:58 pierre_ joined #perl6
07:16 wamba joined #perl6
07:20 brrt joined #perl6
07:20 darutoko joined #perl6
07:20 nadim joined #perl6
07:23 nine DrForr: https://rt.perl.org/Public/Bug/Display.html?id=128371#txn-1410204
07:28 brrt joined #perl6
07:28 CIAvash joined #perl6
07:29 zakharyas joined #perl6
07:30 TeamBlast joined #perl6
07:30 mohae joined #perl6
07:32 sivoais joined #perl6
07:37 darutoko joined #perl6
07:40 cibs joined #perl6
07:40 sivoais joined #perl6
07:43 TeamBlast joined #perl6
07:52 dakkar joined #perl6
07:53 sivoais joined #perl6
07:53 Ven` joined #perl6
07:53 Actualeyes joined #perl6
07:53 TeamBlast joined #perl6
08:02 ocbtec joined #perl6
08:03 TeamBlast joined #perl6
08:14 sivoais joined #perl6
08:15 labster joined #perl6
08:16 ka joined #perl6
08:28 RabidGravy joined #perl6
08:29 canopus joined #perl6
08:36 darutoko- joined #perl6
08:37 dayangkun joined #perl6
08:41 El_Che build 2016.09 packages as we speak
08:41 El_Che building 2016.09 packages as we speak
08:42 matt_ joined #perl6
08:42 raydiak in a grammar, is there a better way to entirely ignore things like comments without having a separate preprocessing grammar or putting <comment> between every atom of every rule?
08:44 timotimo you can make it part of your own "ws" rule
08:44 timotimo and then use sigspace in the appropriate places
08:45 raydiak thought about that...guess I could...but then I can't use sigspace as intended elsewhere in the grammar, because I even want it to ignore them in the middle of sequences which don't allow whitespace
08:46 timotimo ah
08:47 arnsholt Depending on how the grammar is factored, you might hack around it with dynvars
08:47 arnsholt I did that to have two different <ws>es in Snake, depending on whether we're inside parens or not
08:48 darutoko joined #perl6
08:48 raydiak I see
08:50 arnsholt So if the toggle is called $*WS-MODE, you can then do method ws { $*WS-MODE ?? self.ws1 !! self.ws2 }
08:50 raydiak was just looking at https://github.com/arnsholt/snake/blob/master/src/Snake/Grammar.nqp#L74
08:50 arnsholt And ":$*WS-MODE = 1;" in a rule to change it
08:50 arnsholt Yup
08:50 arnsholt That's it
08:51 arnsholt Of course, that's NQP, but it should be pretty much identical in Perl 6
08:51 arnsholt Except you can use assignment instead of binding =)
08:52 timotimo how does ":$*WS-MODE = 1" behave in regards to backtracking?
08:52 timotimo wouldn't it be wiser to have a "my" to go with it first?
08:52 arnsholt Oh, derp
08:52 arnsholt It's :my $*WS-MODE = 1; yeah
08:54 raydiak would make things a bit messy, having to have spaces literally everywhere and changing a dynvar instead of just writing "rule". any reason that'd be better than a preprocessing grammar? I have doubts about it performing better.
08:56 timotimo right. difficult.
08:57 jnthn You'd still write rule, the mode would just tweak what ws considers itself allowed to match
08:58 wamba joined #perl6
08:59 raydiak well yes but I'd be writing rule everywhere because token wouldn't do what I want, its no longer a useful choice
08:59 arnsholt What are you parsing, OOC?
09:00 raydiak markdown in this case
09:00 arnsholt Oh, horror! =)
09:00 arnsholt IIRC MarkDown is not super-amenable to CFG parsing
09:01 raydiak guess that explains why there's not an actual Grammar for it in our ecosystem yet
09:01 arnsholt ISTR it originally being implemented by a cascade of regex search-replace
09:02 arnsholt And it turns out cascades of search-replace let you do context *sensitive* things
09:03 raydiak incidentally, I don't even know if markdown usually allows comments or not in the places I'm being asked to allow them
09:04 timotimo when people see "markdown supported", they probably expect commonmark instead of the original markdown anyway, no?
09:04 arnsholt I have no idea
09:05 * jnthn reads the first answer to http://stackoverflow.com/questions/4823468/comments-in-markdown and is mildly horrified :)
09:06 raydiak actually it's a vague mix of multimarkdown and some other variants and some of our own proprietary additions that I'm supposed to parse :)
09:06 timotimo yay
09:06 raydiak its coming along well so far though, near as I can tell
09:10 raydiak if I just do "pile of regexes", I run into issues differentiating between things like bulleted lists and bolded chunks of text with linebreaks in the middle
09:11 * brrt wonders if org-mode syntax is more parseable...
09:11 brrt given as it has multiple-language support
09:13 arnsholt I'm currently leaning towards RST
09:14 arnsholt Haven't looked at org-mode though, being a non-emacser =)
09:14 raydiak yeah that SO answer is pretty horrifying.  we had thought about adding another comment syntax, but I'm hoping to avoid adding much of our own because I know nobody here is a real language designer and I fear we'll end up in impossible situations which are difficult to forsee
09:14 arnsholt RST syntax is a bit clunkier than MarkDown, but it has the definite advantage of being much more clearly defined, and has well-defined ways of extending it
09:14 timotimo raydiak: if you build your own comment syntax, you can potentially pre-process the whole document to strip out the comments and continue with a regular grammar :P
09:15 arnsholt raydiak: Are you gree-fielding, or implementing to support something that's already extant?
09:15 arnsholt *green-fielding
09:15 raydiak preprocessing was what I waas wondering if there was a way to avoid int he first place. I can preprocess the html comments out just as easily
09:16 timotimo since grammars can't do streaming parsing yet anyway, you'll not lose much from pre-processing
09:16 arnsholt Oh, that's the other horrifying thing about MarkDown: Allowing HTML
09:16 timotimo a little bit, yeah
09:16 timotimo on the other hand: yay, graphics embedded into markdown by way of SVG!
09:18 raydiak there is a large amount of existing data in this...vaguely-defined pile of PHP loops and PCREs that I'm replacing
09:18 brrt org-mode is awesome
09:18 raydiak but not so much with the mixing in of HTML, if my understanding is correct. I only have a small amount of test data
09:18 brrt in both senses of that word
09:19 arnsholt raydiak: Yeah, that's why I asked. If you were making something new, I'd have urged you to consider something not MarkDown, but when you have an existing corpus to work with, you can't
09:19 raydiak it's good advice, wish I could take it :)
09:20 arnsholt Anyways, if you have an existing implementation and a corpus of source/rendered pairs, the first thing I'd do is extract all the source/rendered pairs into unit-tests
09:20 arnsholt And then copy the existing implementation, horrors and all, as closely as possible
09:20 raydiak also there are a number of tools people are already using here that need to support what we're doing, even if they don't recognize our additions and modifications
09:21 arnsholt And then try to replace the horrors once you have something that works
09:21 raydiak I'll think about that with at least a subset of the data.  it's a lot
09:21 arnsholt Yeah, if it's a massive corpus, extract a random sample
09:22 arnsholt But I think I'd extract a really large sample as well as a kind of stress test
09:22 arnsholt Actually, it might be attractive to do low-level hackery on the Cursor API here
09:23 arnsholt The token/regex/rule stuff lets you do CFG-stuff, but if you do things with methods and manipulate the underlying cursor directly, you might be able to use declarative stuff for most of it, and then wire the loops and horid stuff together using lower-level primitives
09:24 arnsholt I'm not very familiar with the Cursor API though, and it might not be very well documented, so you might have to do some non-trivial source-diving to figure out exactly how to do it
09:25 raydiak don't know that I have the time to get that deep into it, this is only a small part of a much larger project with a way-too-soon deadline
09:26 raydiak just gonna preprocess for now, but you all helped me figure that out :)
09:26 arnsholt Good that we could help =)
09:28 raydiak might even end up with more than two grammar stages if it gets hairy, to somewhat mimic the regex pile...but making tests is a smart idea
09:28 raydiak and that cursor api thought is really interesting, I've got that filed away in the back of my mind for another time :)
09:29 brrt joined #perl6
09:33 pierre_ joined #perl6
09:33 raydiak one of my saving graces is that we don't just have proprietary additions, but also a few subtractions and simplifications...really calling it "markdown" is a tad bit of a stretch in places
09:35 raydiak anyway, thanks timotimo++ arnsholt++ brrt++ jnthn++
09:35 nadim Good morning all
09:35 raydiak good morning nadim
09:36 pierre_ joined #perl6
09:42 * raydiak thinks about future needs and considers trying again to fix Grammar::Generative
09:43 raydiak but who knows how far gone that is now that it's been rotting since...2013...so much has changed since then, not just the GLR and method names
09:49 mcmillhj joined #perl6
09:50 dayangkun joined #perl6
09:56 zakharyas joined #perl6
09:57 iH2O joined #perl6
10:00 brrt joined #perl6
10:21 ShimmerFairy joined #perl6
10:26 llfourn_ "Method 'foo' must be resolved by class Bar because it exists in multiple roles"
10:26 llfourn_ how does one "resolve" this?
10:26 jnthn Write a method foo in the class that decides what to do
10:27 llfourn_ jnthn: kk thanks
10:29 dayangkun joined #perl6
10:31 dayangkun joined #perl6
10:32 dayangkun joined #perl6
10:41 eliasr joined #perl6
10:44 lizmat m: role A { method a {"A"} }; role B { method a {"B"} }; class C does A does B { method a { self.A::a } }; dd C.new.a   # llfourn_
10:44 camelia rakudo-moar 8be36b: OUTPUT«"A"␤»
10:49 llfourn_ lizmat: thanks :)
10:54 llfourn_ maybe the error message could be clearer...
10:54 llfourn_ "Bar must have a method 'foo' because it exists in multiple roles"
10:55 llfourn_ although I get the reason why "resolve" is used now it does immediately suggest the solution
10:55 llfourn_ doesn't*
10:55 poohman joined #perl6
10:56 jnthn It'd be nice if the error said which roles also
10:57 llfourn_ jnthn: it does
10:57 llfourn_ I just cut it short :)
10:58 jnthn Oh!
10:58 jnthn So, it' snot entirely LTA then :)
10:58 jnthn eww, snot
10:58 jnthn *it's not
10:59 llfourn_ no, it's pretty good. Just might need to point more directly at the solution.
11:03 poohman joined #perl6
11:09 rindolf joined #perl6
11:14 * lizmat clickbaits https://p6weekly.wordpress.com/2016/09/19/2016-38-we-are-the-robots/
11:16 masak lizmat++
11:22 Ven` joined #perl6
11:22 Ven` raydiak: that'd be really interesting :-)
11:27 jonas2 joined #perl6
11:44 bjz joined #perl6
11:49 rgrinberg joined #perl6
11:52 iH2O left #perl6
12:03 andrzejku joined #perl6
12:05 pierre_ joined #perl6
12:05 moritz lizmat++
12:07 newbie1 joined #perl6
12:12 Ven` joined #perl6
12:12 zakharyas joined #perl6
12:25 bjz joined #perl6
12:30 [Coke] caffeine by committe this morning: should I drink get coke zero, coffee, or tea to start?
12:31 [Coke] *ee
12:31 [Coke] s/drink// - 'cause I need something, it seems.
12:31 brrt tea
12:39 bioduds joined #perl6
12:40 tadzik is "zero" in "coke zero" the amount of teeth that you'll have in your 80s? :P
12:41 bjz joined #perl6
12:41 tadzik I'd usually go for tea on normal days and coffee if I really desperately need to wake up after too little sleep
12:43 masak [Coke]: tea, but good tea
12:43 masak or, failing that, coffee but good coffee
12:43 masak spoil yourself a little with quality stuff!
12:44 itaipu joined #perl6
12:44 Ven` ;q
12:44 Ven` oh well.
12:45 masak Ven`: why is the little q crying? :/
12:45 masak or is it just trying to exit vim?
12:45 moritz don't cry for me little q, the truth is, I never left you!
12:46 * masak .oO( come on, colon, I only semi-left you )
12:47 * masak .oO( exit half of vim )
12:47 jkramer m: perl6 -e 'class Foo {}; my $x = Foo; { my $x.=new; say $x.WHAT }'
12:47 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3perl6 -e7⏏5 'class Foo {}; my $x = Foo; { my $x.=ne␤    expecting any of:␤        infix␤        infix stopper␤        postfix␤        statement end…»
12:47 jkramer Oops
12:47 jkramer m: class Foo {}; my $x = Foo; { my $x.=new; say $x.WHAT }
12:47 camelia rakudo-moar 8be36b: OUTPUT«(Any)␤»
12:47 * masak .oO( ؛q -- exit the other half of vim )
12:47 jkramer m: class Foo {}; my $x = Foo; { my $y = $x.new; say $y.WHAT }
12:47 camelia rakudo-moar 8be36b: OUTPUT«(Foo)␤»
12:47 jkramer Why is this?
12:47 tushar joined #perl6
12:48 masak jkramer: because instances also have a .new method
12:48 masak jkramer: does that answer your question?
12:48 masak it's occasionally useful -- I believe the 007 code base uses or used the fact that you can call .new on a non-type object
12:48 jkramer masak: Nope, I'm wondering why the result of the first one is Any
12:49 masak jkramer: because in that case `$x` starts out as `Any`, and then you call `.new` on that
12:49 jkramer Also:
12:49 jkramer m: class Foo {}; my $x = Foo; { say $x.new.WHAT }
12:49 camelia rakudo-moar 8be36b: OUTPUT«(Foo)␤»
12:49 jkramer here it works again
12:49 masak jkramer: ah, I see you *think* that you're using the *outer* `$x` in the first program
12:49 jkramer Just the assignment not
12:49 masak jkramer: that's not the case.
12:49 jkramer Oh
12:49 Ven` masak: yes. I have `(define-key state-map (kbd ";") 'evil-ex)` in my config :)
12:49 masak jkramer: once you introduce a new `$x` in the innter scope,
12:49 masak that's what you get
12:49 lizmat m: class Foo {}; my Foo $x; { $x.=new.WHAT }
12:49 camelia rakudo-moar 8be36b: ( no output )
12:50 lizmat m: class Foo {}; my Foo $x; { say $x.=new.WHAT }
12:50 camelia rakudo-moar 8be36b: OUTPUT«(Foo)␤»
12:50 Ven` (yes, I'm running evil, vim emulation inside emacs. And I'm connected to IRC via said emacs...)
12:50 jkramer Ok, I see :)
12:50 masak jkramer: I think this is a difference from Perl 5.
12:51 Ven` masak: I'm curious as to how you type that "reversed" semi, however :)
12:51 Ven` .oO( Is the semi-colon half-full or half-empty? )
12:51 masak .u ؛
12:51 yoleaux U+061B ARABIC SEMICOLON [Po] (؛)
12:51 brrt joined #perl6
12:51 masak I didn't type it, I used au++'s App::Uni
12:51 masak I use that one quite a lot
12:52 [Coke] masak: quality is not an option this morning.
12:52 [Coke] tea it is.
12:52 Ven` yoleaux++
12:52 Ven` I must say, I'm pleasantly surprised with ERC. But I need to find a way to enable vim emulation here.
12:52 masak [Coke]: I curse you with the task of seeking out quality ASAP, if not this morning.
12:52 masak Ven`: I was on ERC for a long time. I liked it a lot.
12:53 bjz joined #perl6
12:56 [Coke] lipton bag tea, with splenda.
12:57 sufrostico joined #perl6
12:58 newbie1 joined #perl6
12:59 poohman joined #perl6
13:00 * masak .oO( I am altering the curse. pray I do not alter it any further. )
13:01 [Coke] wow, this is not good.
13:01 masak whyy, committee, whyyy?!
13:01 mcmillhj joined #perl6
13:07 bjz joined #perl6
13:09 cdg joined #perl6
13:12 [Coke] next up, I need to find a comittee to tell me what to work on today!
13:12 [Coke] ... and more letters to use.
13:20 poohman_ joined #perl6
13:24 rindolf joined #perl6
13:28 jkramer m: role R { has Str @x }; class C does R { @x = <foo bar baz> }
13:28 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '@x' is not declared␤at <tmp>:1␤------> 3role R { has Str @x }; class C does R { 7⏏5@x = <foo bar baz> }␤»
13:28 jkramer How can I make this work?
13:28 jkramer Declaring @x in C as well also throws an error
13:28 poohman joined #perl6
13:28 masak use @!x
13:28 masak OO attributes want a twigil
13:29 masak and you may want to initialize @!x inside a BUILD submethod in the class
13:29 jkramer m: role R { has Str @!x }; class C does R { @!x = <foo bar baz> }
13:29 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable @!x used where no 'self' is available␤at <tmp>:1␤------> 3 R { has Str @!x }; class C does R { @!x7⏏5 = <foo bar baz> }␤»
13:29 masak m: role R { has @.x }; class C does R { submethod BUILD { @!x = <foo bar baz> } }; say C.new.x
13:29 camelia rakudo-moar 8be36b: OUTPUT«[foo bar baz]␤»
13:30 jkramer Hmm, is there no easier way to override the value?
13:30 masak m: role R { method x { () } }; class C does R { method x { <foo bar baz> } }; say C.new.x
13:30 camelia rakudo-moar 8be36b: OUTPUT«(foo bar baz)␤»
13:32 jkramer Can role parameters be named? I.e. role R[Str :@x] or something?
13:32 masak sure
13:32 masak they're full-fledged parameters
13:32 jkramer \o/
13:32 masak I could've answered "try it and see" on that one :)
13:36 jkramer Arrrgh, I presume a role parameter can't have the role as type? :D
13:36 jkramer m: role R[R :$x] {}
13:36 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Invalid typename 'R' in parameter declaration.␤at <tmp>:1␤------> 3role R[R7⏏5 :$x] {}␤»
13:37 masak I think that runs up against R not being declared yet inside the `[ ]` brackets
13:37 masak jnthn, correct me if I'm wrong
13:37 jnthn You'd be right
13:37 jnthn I guess because the signature is considered part of the role's long name
13:37 masak right
13:37 masak m: role R {}; role R[R :$x] {}
13:37 camelia rakudo-moar 8be36b: ( no output )
13:37 kaare__ joined #perl6
13:37 masak that works :)
13:37 jnthn We might be able to fudge it though.
13:38 masak m: role R { ... }; role R[R :$x] {}
13:38 camelia rakudo-moar 8be36b: ( no output )
13:38 MilkmanDan joined #perl6
13:38 jnthn But yeah, that workaround works fine enough
13:38 masak yeah
13:38 masak I don't think we should over-promise by making names available before they're even declared :P
13:40 skids joined #perl6
13:47 jkramer m: sub x(--> Array[Int]) { return [] }; x
13:47 camelia rakudo-moar 8be36b: OUTPUT«Type check failed for return value; expected Array[Int] but got Array ($[])␤  in sub x at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
13:47 jkramer How can I make this work? :)
13:47 jkramer Ah got it
13:47 jkramer m: sub x(--> Array[Int]) { return Array[Int].new }; x
13:47 camelia rakudo-moar 8be36b: ( no output )
13:49 AlexDaniel joined #perl6
13:50 masak m: sub x(--> Array[Int]) { my Int @x = 1, 2, 3; return @x }; say x
13:50 camelia rakudo-moar 8be36b: OUTPUT«[1 2 3]␤»
13:51 masak typing of containers is nominal in Perl 6, not structural
13:51 niko joined #perl6
13:51 bjz joined #perl6
13:51 masak so it's not enough for an array to contain only the desired type of values; it must also be declared to do so
13:54 jkramer Alright
13:57 igncogneato joined #perl6
13:57 masak m: sub x(--> Array[Real]) { my Int @x = 1, 2, 3; return @x }; say x
13:57 camelia rakudo-moar 8be36b: OUTPUT«Type check failed for return value; expected Array[Real] but got Array[Int] (Array[Int].new(1, 2, 3))␤  in sub x at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
13:57 masak also, arrays are not covariant, it seems. probably a good thing.
14:02 mcsnolte joined #perl6
14:04 ka joined #perl6
14:06 SmokeMachine____ moritz: thanks!
14:06 Ven` masak: I'd agree with that :-)
14:12 optikalmouse joined #perl6
14:12 dalek doc: 724e5fa | coke++ | doc/Language/ (2 files):
14:12 dalek doc: fix whitespace
14:12 dalek doc: review: https://github.com/perl6/doc/commit/724e5fa119
14:14 MetaZoffix joined #perl6
14:14 MetaZoffix Human relations question: is naming an IRC bot responsible for reporting test coverage results "CoverGirl" sexist or undesirable?
14:15 ptolemarch joined #perl6
14:15 khw joined #perl6
14:15 _sfiguser joined #perl6
14:16 moritz I like the name, but I can see the potential for ill will
14:17 MetaZoffix k. I'll think of something else :)
14:17 bjz joined #perl6
14:17 ilmari covertly?
14:17 MetaZoffix That's good :)
14:18 AlexDaniel … coverable? ;D
14:18 moritz lid
14:18 moritz because the lid covers the eye
14:18 moritz (idea courtesy by masak++)
14:18 optikalmouse goooood morning
14:19 mst MetaZoffix: given it's mostly there to upset people about their coverage being insufficient
14:19 mst MetaZoffix: I vote for coverrage
14:19 mst COVERRAGE SMASH 20% REPORT
14:20 [Coke] undercover(ed)
14:20 mst [Coke]++
14:21 DrForr 'Undercover Brother' is as bad in the wrong direction :)
14:21 * MetaZoffix goes with undercover, as it's an available nick. [Coke]++
14:21 Khisanth joined #perl6
14:21 vcv spin off of [Coke]'s idea: uncover(ed)
14:22 MetaZoffix Thanks, all!
14:22 bjz joined #perl6
14:24 timotimo is there a reason we don't allow #`» ... « for comments?
14:24 timotimo m: say » hi there «
14:24 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing infix inside hyper␤at <tmp>:1␤------> 3say »7⏏5 hi there «␤    expecting any of:␤        infix␤        infix stopper␤»
14:24 timotimo well ...
14:24 timotimo for code i understand it
14:25 moritz because the quotes pair the other way around
14:25 timotimo not if you're french
14:25 masak was gonna say -- think it's language-dependent
14:26 timotimo we allow smart quotes for all kinds of stuff, but not for this
14:26 masak I for one wouldn't grieve too much if the above never worked
14:26 masak but YMMV
14:27 timotimo m: say foo ~~ / foo /
14:27 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Expected a term, but found either infix ~~ or redundant prefix ~␤  (to suppress this message, please use a space like ~ ~)␤at <tmp>:1␤------> 3say foo ~~7⏏5 / foo /␤»
14:27 mohae joined #perl6
14:27 timotimo m: say foo ~~ rx/ foo /
14:27 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Expected a term, but found either infix ~~ or redundant prefix ~␤  (to suppress this message, please use a space like ~ ~)␤at <tmp>:1␤------> 3say foo ~~7⏏5 rx/ foo /␤»
14:27 timotimo m: say "foo" ~~ rx/ foo /
14:27 camelia rakudo-moar 8be36b: OUTPUT«「foo」␤»
14:29 pd_ joined #perl6
14:29 jkramer Is there a nicer way for saying: <foo 123 baz>.map: -> $x { val($x) }
14:30 jkramer .map: val(*) doesn't seem to work and >>.val doesn't work because it's not a method
14:30 timotimo m: say < foo 123 baz >.perl
14:30 camelia rakudo-moar 8be36b: OUTPUT«("foo", IntStr.new(123, "123"), "baz")␤»
14:30 timotimo m: say <foo 123 baz>.perl
14:30 camelia rakudo-moar 8be36b: OUTPUT«("foo", IntStr.new(123, "123"), "baz")␤»
14:30 timotimo it already goes through val
14:30 jkramer Wut
14:30 timotimo m: say qqA test A
14:30 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤    A used at line 1␤Undeclared routines:␤    qqA used at line 1␤    test used at line 1␤␤»
14:30 timotimo m: say qq☺ test ☺
14:30 camelia rakudo-moar 8be36b: OUTPUT« test ␤»
14:31 timotimo m: say qq☺test☺
14:31 camelia rakudo-moar 8be36b: OUTPUT«test␤»
14:31 AlexDaniel m: say qq» test »
14:31 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Use of a closing delimiter for an opener is reserved␤at <tmp>:1␤------> 3say qq7⏏5» test »␤»
14:31 jkramer Is this specific to <...> or lists of stuff in general?
14:31 masak specific to <...>
14:31 masak well, and <<...>>
14:31 jkramer Ah, then ignore that and assume it's an Array of Str :)
14:31 jkramer I just used <> for demonstrating
14:32 DrForr m: say qq AtestA
14:32 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Alphanumeric character is not allowed as a delimiter␤at <tmp>:1␤------> 3say qq7⏏5 AtestA␤»
14:32 masak m: say ("foo", "123", "baz")>>.&val
14:32 camelia rakudo-moar 8be36b: OUTPUT«(foo 123 baz)␤»
14:32 masak m: say ("foo", "123", "baz")>>.&val.perl
14:32 camelia rakudo-moar 8be36b: OUTPUT«("foo", IntStr.new(123, "123"), "baz")␤»
14:32 DrForr Huh, thought I tested for that.
14:33 jkramer So >>.& works for any routine?
14:33 timotimo that's right
14:33 timotimo just like .&foo will also work
14:33 jkramer Sweet, thanks! :)
14:33 * masak .oO( we're lazy, so we just made it work consistently for everything )
14:33 jkramer Ha, didn't know that either. I should read through the infinite list of operators some time :)
14:34 masak >>. is technically a dotty, not an operator :P
14:34 masak and & is a sigil
14:34 AlexDaniel m: say ("foo", "123", "baz")>>.&{“Blah! $_”}.perl
14:34 camelia rakudo-moar 8be36b: OUTPUT«("Blah! foo", "Blah! 123", "Blah! baz")␤»
14:34 AlexDaniel ↑ and here's how you can do almost anything
14:35 jkramer OMG :D
14:35 masak our aim is to leave language purists with their mouths agape, unable to utter a word in protest
14:35 jkramer That's genius
14:35 timotimo https://twitter.com/AFresh1/status/778054292804546561 - does my answer seem good?
14:35 Juerd .{ ... } works? Wow!
14:36 jkramer So what's the point of .map then? :)  I'll never use it again
14:36 AlexDaniel jkramer: um, they are completely different
14:36 Ven` joined #perl6
14:37 moritz jkramer: map works with multi-arg blocks, for example
14:37 moritz also, map is lazy, >> is very eager
14:37 AlexDaniel and » is potentially parallelizable
14:38 vcv m: say <a 1 b 2 c 3>.map: * ~ "=" ~ *
14:38 camelia rakudo-moar 8be36b: OUTPUT«(a=1 b=2 c=3)␤»
14:38 Juerd Ah, I forgot the &. But still, .&{ ... } is amazing.
14:39 timotimo &.foo is also a thing, but a very different thing :P
14:39 gfldex m: dd <foo 123 baz>.map: { .&val }
14:39 camelia rakudo-moar 8be36b: OUTPUT«("foo", IntStr.new(123, "123"), "baz").Seq␤»
14:40 timotimo and & .foo is yet another very different thing
14:40 mst well, that's neat
14:40 mst one can't use * as a method name
14:40 mst but one can define a postfix .*
14:40 Juerd mst: What are you going to use that for? Call a random method? :P
14:41 timotimo fwiw, .*blah already exists
14:41 mst timotimo: which is?
14:41 masak mst:
14:41 masak m: class C { method foo { say "C" } }; class D is C { method foo { say "D" } }; D.new.*foo
14:41 camelia rakudo-moar 8be36b: OUTPUT«D␤C␤»
14:41 timotimo yes, that
14:41 masak "call all methods in the mro"
14:41 timotimo in that vain, .+ also exists
14:41 masak vein* :)
14:41 timotimo m: say "heyo".+vain
14:41 camelia rakudo-moar 8be36b: OUTPUT«No such method 'vain' for invocant of type 'Str'␤  in block <unit> at <tmp> line 1␤␤»
14:41 timotimo m: say "heyo".*vain
14:41 camelia rakudo-moar 8be36b: OUTPUT«()␤»
14:41 timotimo m: say "heyo".?vain
14:41 camelia rakudo-moar 8be36b: OUTPUT«Nil␤»
14:41 mst yep, but that's not what I care about
14:41 perlpilot timotimo: for completion you should mention that .?foo also exists
14:41 timotimo perlpilot: i just did :)
14:41 * masak .oO( it is vain to correct someone's spelling ) :P
14:41 mst Juerd: nope
14:42 perlpilot yeah, I'm too slow typing this morning :)
14:42 mst and that means
14:42 timotimo perlpilot: don't worry, i'm just very fast
14:42 mst sub postfix:<.foo> ($foo) { sub ($bar) { $bar ~ ' ' ~ $foo.f() } }
14:42 mst $f.foo(3)
14:42 mst works
14:42 mst which means
14:42 mst I can potentially do C# style extension methods
14:42 mst EXCELLENT
14:42 mst lexical augmentation of available methods on an object, transparently
14:42 itaipu joined #perl6
14:42 timotimo they won't show up in things like .^methods or other introspection, though
14:42 pmurias joined #perl6
14:43 masak mst: you kind of already get that through .&foo, though
14:43 mst I can live with that
14:43 mst masak: the & OFFENDS ME
14:43 masak a-ha
14:43 timotimo OK
14:43 Juerd Where's .& documented?
14:43 masak Juerd: it's an emergent feature :P
14:43 masak it falls out of being able to use variables in place of a literal method name
14:44 Juerd Still :)
14:44 mst masak: also, AFAICS, with appropriate matching, I can, for things that already have a .foo, fall through to that
14:44 timotimo watch out if you spell it like that, masak
14:44 timotimo mst: indeed
14:44 mst and that's really interesting
14:45 mst since IIRC '$x but Foo' copies $x whereas this would work in-place on $x
14:45 timotimo yeah, and "does" will mutate the original object
14:46 mst right
14:46 mst and I want augment-if-necessary-within-my-current-scope
14:46 mst basically
14:46 mst there's uses for that
14:47 dalek doc: c4a4116 | gfldex++ | doc/Language/operators.pod6:
14:47 dalek doc: remove superstitiuos parentheses from example
14:47 dalek doc: review: https://github.com/perl6/doc/commit/c4a4116e70
14:47 vcv Semi-related, is there a way to call variants of a multi that match instead of just the "best" match?
14:47 igncogneato left #perl6
14:47 vcv call all variants*
14:48 timotimo that's what .* does
14:48 moritz .* (for method calls)
14:48 timotimo it'll still only call those that match the passed arguments
14:48 vcv right
14:48 vcv I was just trying.. I must have been doing it wrong then :(
14:48 timotimo oh
14:49 timotimo if you have just the multi, you can use something like .can or .cando or something
14:49 timotimo i never needed that
14:50 wamba joined #perl6
14:52 masak m: class C { multi method foo($x) { say "x" }; multi method foo($y) { say "y" } }; C.new.*foo(42)
14:52 jnthn .* is only about the inheritance tree, not about multis
14:52 camelia rakudo-moar 8be36b: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(C $: $x, *%_)␤:(C $: $y, *%_)␤  in block <unit> at <tmp> line 1␤␤»
14:52 masak ...what jnthn said :)
14:52 jnthn .cando can be used to find all matching multis
14:53 masak I don't remember if this changed somewhere along the line, or if it was always just the mro chain
14:53 jnthn It changes years and years ago, when proto methods started to exist :)
14:53 jnthn *changed
14:54 jnthn So ~2010
14:54 jnthn Maybe 2011
14:54 masak ah.
14:55 jnthn It was debated a few times, but the final ruling in the run-up to 6.c was that it stays the way it is.
14:56 LeCamarade joined #perl6
14:57 jnthn .cando can be used to get all multi candidates matching a Capture
15:00 mcmillhj joined #perl6
15:00 poohman joined #perl6
15:00 andrzejku joined #perl6
15:00 poohman_ joined #perl6
15:00 perlawhirl joined #perl6
15:03 vcv fffffff~./~.
15:03 vcv right~.
15:03 timotimo die, ssh connection, die!
15:04 moritz RETURN TILDA DOT
15:04 poohman Hello all, dont we have Str.len or Str.length?
15:04 timotimo m: say "foobar".length
15:04 camelia rakudo-moar 8be36b: OUTPUT«Method 'length' not found for invocant of class 'Str'␤  in block <unit> at <tmp> line 1␤␤»
15:04 moritz poohman: nope; you must ask for a specific unit
15:04 timotimo i thought we used to have a nice error message for that
15:05 moritz poohman: like .chars or .codes (or .bytes on buffers)
15:05 poohman oh ok
15:05 geraud joined #perl6
15:06 poohman perfect thanks
15:07 mst poohman: means you're never confused about "which length"
15:08 timotimo but how do i figure out how long a string would be if i asked javascript about it? :(
15:08 mst roll a d6, assume that's as accurate as anything else
15:09 timotimo i guess i'd just have to go through the string codepoint-per-codepoint and if the codepoint is on the astral plane (or something?) count it as two characters
15:13 poohman_ joined #perl6
15:14 Ven` joined #perl6
15:14 jkramer Is there a nice and safe way to generate a bunch of methods in a role or class? Not necessarily monkey-patching at runtime, I'm just looking to safe myself from some typing
15:14 perlpilot EVAL?  :>
15:15 jkramer I.e. curryently I have "multi method x(*@) { all-do-the-same-thing() }" ~10 times with different names instead of x
15:15 huggable joined #perl6
15:15 perlpilot https://docs.perl6.org/routine/add_method
15:15 moritz jkramer: look for add_method and compose in the docs
15:15 jkramer And I'd like to do "for <lots of method names> -> $name { make multi method $name(*@) { ... } }
15:16 perlpilot see also https://docs.perl6.org/language/mop
15:16 moritz for @names ->name { ::?CLASS.^add_method($name, method (*@) { ...}) };
15:17 pmurias timotimo: wouldn't you need to go through codepoint-per-codepoint (if it's on the basic plane i++ and if on the astral/supplementary plane i += 2)
15:17 timotimo pmurias: yeah, that's what i meant?
15:18 canopus joined #perl6
15:18 jkramer moritz: That looks like what I want, but doesn't seem to work with multi methods
15:19 domidumont joined #perl6
15:19 timotimo i believe you can add_multi_method or something?
15:20 jkramer timotimo: I think it's because it's an anonymous method in the call to add_method
15:20 timotimo multi methods absolutely require you to compose something
15:20 pmurias timotimo: ok, I have looked at generated javascripted too much today ;)
15:20 jkramer "An anonymous method may not take a multi declarator"
15:21 timotimo yeah
15:21 jkramer Ah no it works :)
15:21 timotimo we don't have a way to associate multiple multi candidates into the same "thingie" if they don't have a name
15:21 jkramer Ok, got it :) add_multi_method but with "method $name" instead of "multi method $name"
15:23 pmurias timotimo: str.replace(/([\uD800-\uDBFF][\uDC00-\uDFFFF]|[\S\s])/g, "_").length
15:24 timotimo _ rather than __?
15:26 perlawhirl timotimo: shell(q{node -e 'console.log("ñoñó".length)'}, :out).out.lines
15:26 yoleaux 19 Sep 2016 07:57Z <nine> perlawhirl: note that just installing an older version when a newer one was already installed, won't make rakudo use that old version. If no :ver is specified in the use statement, we pick the newest version.
15:26 * perlawhirl ducks
15:26 timotimo :)
15:29 skaji Hi,
15:30 skaji IO::Socket::Async used to read data all at once, if data is small.
15:30 skaji But now IO::Socket::Async always does not read data all at once.
15:30 skaji Is this expected?
15:30 skaji Please look at https://gist.github.com/skaji/664077e99b80bba90a936cd1a54a0910
15:31 timotimo if you read non-binary, you'll have to wait for a control character to get the very last character
15:31 timotimo because the next bytes you receive could introduce a composing character
15:32 timotimo and if you already got the data via string, it'll be too late for perl6 to give you the right data, it might already have "escaped"
15:32 bioduds hey guys, I installed MongoDB but it is not working
15:32 bioduds how can I check if install was ok?
15:32 timotimo bioduds: what are the symptoms?
15:32 bioduds when I run the program
15:32 bioduds it says
15:32 bioduds 😀 bem vinda Já conhece o trabalho do BUKKAKEROS?
15:32 bioduds sorry
15:32 bioduds wrong copy paste
15:33 bioduds here
15:33 bioduds ===SORRY!=== Could not find MongoDB::Client at line 7 in:
15:33 bioduds could not find?
15:33 bioduds but I installed
15:33 bioduds im confused
15:33 bioduds :)
15:33 timotimo it could be the module doesn't have a provides section?
15:33 nine /win 13
15:33 timotimo did the module run its tests successfully?
15:33 bioduds I dont know
15:33 bioduds how can I check?
15:34 timotimo the module does have a provides section that looks correct
15:34 timotimo just try to install it again, maybe put --force after "panda" or "zef"
15:34 skaji timotimo: Oh, composing character, I see.
15:34 bioduds ok
15:35 timotimo skaji: we're in the process of exposing encoding and such better to the user
15:35 timotimo skaji: until then you might want to just set latin1 as the encoding or use binary blobs and do your own decoding
15:35 nine Considering that --force only helps if the very same version is already installed, I would only suggest it really sparingly and only if I knew it would actually solve something.
15:36 timotimo right
15:36 bioduds re-installing
15:36 timotimo that makes sense
15:37 mcmillhj joined #perl6
15:37 nine Also the precomp repository now puts more trust in the immutability of distributions and I'm not sure we actually outdate precomp files when a distro gets overwritten with a modified version.
15:37 nine Well modified code but same version to be precise.
15:38 skaji timotimo: OK, I will use Supply(:bin). Thanks!
15:38 canopus joined #perl6
15:39 timotimo good luck!
15:39 timotimo skaji: in the future we'll be properly able to change the encoding in the middle of a connection, which will be good for HTTP
15:43 mst m: sub roll { for %_.kv -> $k, $v { my ($d) = $k.comb(rx{<[0..9]>+}); say &CORE::roll(0+$v, 1..$d).join(", ") } }; roll :6d6
15:43 camelia rakudo-moar 8be36b: OUTPUT«1, 6, 4, 1, 4, 2␤»
15:43 mst m: sub roll { for %_.kv -> $k, $v { my ($d) = $k.comb(rx{<[0..9]>+}); say &CORE::roll(0+$v, 1..$d).join(", ") } }; roll :d12
15:43 camelia rakudo-moar 8be36b: OUTPUT«11␤»
15:43 mst :D
15:44 timotimo that's cute
15:45 timotimo does it fit into a tweet? looks a tad long for that
15:45 mst wc says 142
15:45 mst so
15:45 mst and that includes the 'perl6 -e' bit
15:47 timotimo it'd want some description of what it does, too
15:48 timotimo m: say "foobar" ~~ /<digit>+/
15:48 camelia rakudo-moar 8be36b: OUTPUT«Nil␤»
15:48 timotimo m: say "9d10" ~~ /<digit>+/
15:48 camelia rakudo-moar 8be36b: OUTPUT«「9」␤ digit => 「9」␤»
15:48 timotimo m: say "<[0..9]>".chars; say "<digit>".chars
15:48 camelia rakudo-moar 8be36b: OUTPUT«8␤7␤»
15:48 timotimo but <digit> may include some weird unicode ones, too, if you don't like that
15:50 timotimo .u die face
15:50 yoleaux U+2680 DIE FACE-1 [So] (⚀)
15:50 yoleaux U+2681 DIE FACE-2 [So] (⚁)
15:50 yoleaux U+2682 DIE FACE-3 [So] (⚂)
15:50 timotimo m: say (:⚀d⚂)
15:50 camelia rakudo-moar 8be36b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Bogus statement␤at <tmp>:1␤------> 3say (:7⏏5⚀d⚂)␤    expecting any of:␤        colon pair␤»
15:50 timotimo OK, So doesn't go there
15:51 timotimo m: say "⚂".&uniprop
15:51 camelia rakudo-moar 8be36b: OUTPUT«So␤»
15:51 timotimo committable6: releases say "⚂".&uniprop
15:51 committable6 timotimo, ¦«2015.10,2015.11,2015.12,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,HEAD»: So
15:51 timotimo oh, i thought it might have something numeric about it
15:52 timotimo have had*
15:53 mst timotimo: yes, that's exactly why I didn't use <digit>
15:53 timotimo understood
15:54 timotimo m: my $k = "d20"; my ($d) = $k ~~ /<[0..9]>+/; say $d
15:54 camelia rakudo-moar 8be36b: OUTPUT«「20」␤»
15:54 timotimo this ought to be shorter than using .comb and the parens
15:54 timotimo BBL
16:00 poohman joined #perl6
16:00 pmurias [Coke]: I fixed t/docs/opcodes.t
16:03 acrussell joined #perl6
16:04 zakharyas joined #perl6
16:07 domidumont joined #perl6
16:12 cdg joined #perl6
16:15 [Coke] Thanks. Hopefully you didn't have to mangle your code.
16:23 wamba joined #perl6
16:26 itaipu joined #perl6
16:29 jkramer Is the precedence of multi methods with the same signature defined (and documented somewhere)?
16:30 perlpilot "multi methods with the same signature"?
16:30 timotimo if you have two multi methods with the same signature, you should get a compile-time error
16:31 jkramer They're not 100% the same, but technically they both match the same stuff. One is (*@) and one is (*@foo)
16:32 timotimo that's the same signature and ought to give you an error
16:32 jkramer It seems like (*@foo) is preferred (which is what I want) but I'd feel better if that was defined behavior :)
16:32 jkramer Well it doesn't
16:32 timotimo are you using add_method or add_multi_method?
16:32 jkramer Yup :) How did you know ;)
16:33 timotimo it's probably the grammar (or rather the actions) that cause that particular error
16:33 jkramer Ah
16:33 timotimo are you composing the class after you're done adding stuff?
16:33 itaipu joined #perl6
16:34 jkramer The add_multi_method happens in a role which is then applied to a class. The other confliciting method is defined in yet another role which is applied to the same class, if that matters
16:34 jkramer However the other method isn't added with add_multi_method
16:34 timotimo are you adding a method with add_method and then a method with the same name with add_multi_method?
16:35 jkramer No, only with add_multi_method and in the other role the other method is defined as usual with "multi method foo..."
16:35 timotimo mhm, mhm
16:35 timotimo i'd do some prodding with .^methods and .candidates on the methods to see what's really going on
16:37 mcmillhj joined #perl6
16:38 domidumont joined #perl6
16:41 jkramer Here's a dump of the ^methods and their .candidates http://dpaste.com/3VY1DVY
16:41 jkramer The method I'm concerned about is "get"
16:41 jkramer post, put, patch, head and delete are the other ones added with add_multi_method
16:42 jkramer So the candidates for get() are one proper method and one anon
16:44 timotimo ah
16:44 timotimo well, you've got different signatures there anyway :)
16:44 timotimo so it shouldn't give you an error
16:45 timotimo and the narrowness is clear for that
16:45 jkramer Because of the Mu vs Image?
16:45 timotimo yes
16:46 jkramer Hmm, interesting. So the Image methods have precendence because the others are in Mu which is higher up in the inheritance thing?
16:47 timotimo the part before the : is the type constraint on the "self" (aka the invocant)
16:47 timotimo a narrower type constraint gets preferred
16:49 jkramer And the Mu comes from the add_multi_method thing I guess? So if I define it as multi method get(*@) in that role it should crash?
16:49 jkramer Oh yeah it does.
16:49 jkramer Nice, so the add_multi_method is actually helping me quite a bit here :)
16:52 dogbert17 joined #perl6
16:54 mcmillhj joined #perl6
16:58 acrussell joined #perl6
17:00 BillSussman joined #perl6
17:06 Possum joined #perl6
17:18 psch joined #perl6
17:30 poohman joined #perl6
17:32 firstdayonthejob joined #perl6
17:32 b2gills joined #perl6
17:33 andrzejku joined #perl6
17:34 _slade_ joined #perl6
17:41 wamba joined #perl6
17:41 itaipu joined #perl6
17:42 cdg joined #perl6
17:43 geraud joined #perl6
17:49 itaipu joined #perl6
17:53 vcv What's the shortest way to print a new line to stdout? say ''; anything shorter?
17:53 mst sub nl () { say '' }
17:53 mst nl;
17:54 TimToady m: say()
17:54 camelia rakudo-moar 8be36b: OUTPUT«␤»
17:55 harmil_wk joined #perl6
17:55 vcv ah. i wrongly assumed say() was the same as just say
17:55 harmil_wk Should FIRST now be defined inside a loop? I get:
17:55 yoleaux 02:14Z <MasteDuke> harmil_wk: ⒗ won't work by design for a bunch of stuff. see https://github.com/rakudo/rakudo/commit/e28305cc99b969b9592b9d6606ec5b6d25995a90 for some discussion. it has a .uniprop of 'No' instead of 'Nd'
17:56 harmil_wk m: sub sd ($d) { $d.DateTime.local }; for ^3 { say "Time: {sd BEGIN now}, {sd INIT now}, {sd FIRST now}, {sd ENTER now}, {sd now}"; }
17:56 camelia rakudo-moar 8be36b: OUTPUT«Use of Nil in string context␤  in block  at <tmp> line 1␤Time: 2016-09-20T19:56:11.317111+02:00, 2016-09-20T19:56:11.358320+02:00, , 2016-09-20T19:56:11.373095+02:00, 2016-09-20T19:56:11.375848+02:00␤Use of Nil in string context␤  in block  at <tmp…»
17:58 psch harmil_wk: it's 'sub FIRST $val' vs 'FIRST sub $val' what gives you the warning
17:58 psch m: for ^1 { FIRST say "hi"; };
17:58 camelia rakudo-moar 8be36b: OUTPUT«hi␤»
17:58 psch m: for ^2 { FIRST say "hi"; };
17:58 camelia rakudo-moar 8be36b: OUTPUT«hi␤»
17:58 psch m: for ^2 { say FIRST  "hi"; };
17:58 camelia rakudo-moar 8be36b: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant string "hi" in sink context (line 1)␤Nil␤Nil␤»
17:58 psch harmil_wk: ...plus something about FIRST apparently not returning a value..?
17:58 harmil_wk psch: That can't be. It still happened before I added sd
17:58 psch (note the second example has two Nils)
17:59 psch harmil_wk: right, that's what i just noticed myself.  looks wrongish from here, but i'm a bit out of practice.  better wait for someone else to chime in :)
18:00 robertle joined #perl6
18:02 TimToady according to S04:1391 FIRST is supposed to return a value, but I believe it is NYI
18:02 synopsebot6 Link: http://design.perl6.org/S04.html#1391_FIRST_is_supposed_to_return_a_value
18:02 TimToady say wot?
18:02 codydn joined #perl6
18:03 psch bad heuristics, probably
18:03 timotimo whoops :)
18:03 psch i remember having fiddled with that once, probably waterbedded something :S
18:04 timotimo it's very easy to waterbed this particular piece of software
18:04 TimToady .oO(waterbedding as a form of torture...)
18:07 rindolf joined #perl6
18:17 Ven` joined #perl6
18:18 itaipu joined #perl6
18:22 harmil_wk Note that the example above was based on seeing INIT in the example at http://rosettacode.org/wiki/Handle_a_signal#Perl_6
18:23 harmil_wk I assumed it was generalizable to all phasers.
18:25 TimToady notice the asterisks in the table at S04:1380
18:25 synopsebot6 Link: http://design.perl6.org/S04.html#line_1380
18:26 poohman m: say "Hello testing"
18:26 camelia rakudo-moar 8be36b: OUTPUT«Hello testing␤»
18:26 girafe joined #perl6
18:27 TimToady phasers without an asterisk cannot be used for their value because that would involve time travel
18:27 TimToady which is one of the few things we haven't solved in Perl 6...
18:28 TimToady but note that has a speculated asterisk, indicating it should work
18:28 TimToady s/that/that FIRST/
18:28 TimToady speaking of time travel...
18:30 AlexDaniel synopsebot6: source
18:31 AlexDaniel meh
18:31 AlexDaniel SourceBaby: source
18:31 SourceBaby AlexDaniel, See: https://github.com/zoffixznet/perl6-sourceable
18:31 AlexDaniel SourceBaby: good bot
18:32 firstdayonthejob joined #perl6
18:33 canopus joined #perl6
18:34 SmokeMachine____ Hi! can anyone help me? I am having a problem but I couldn't find how to simplify it to post here... :( but thats it: the error is intermittent: if I change a class to add a new attribute, it gives a error on another class...
18:35 SmokeMachine____ https://www.irccloud.com/pastebin/bwRXBjJO/Error
18:36 SmokeMachine____ the original code is in: https://github.com/FCO/ProblemSolver
18:37 * psch would guess lingering precomp files
18:38 SmokeMachine____ psych: if I remove the .precomp dir, it gives error from the first time... https://www.irccloud.com/pastebin/iqGbQi4Y/
18:39 psch SmokeMachine____: alright, i probably guessed wrong then, sorry :)
18:40 TimToady how is add-heuristic declared?
18:40 SmokeMachine____ psch: thanks for trying! :)
18:40 SmokeMachine____ TimToady: its handled by a array attribute of Problem
18:41 TimToady I mean, what's the signature?
18:41 * TimToady too lazy to download it all to grep...
18:41 SmokeMachine____ TimToady: no, sorry... its a normal method!
18:41 TimToady with what signature?
18:41 SmokeMachine____ method add-heuristic($var, &heu) {
18:42 SmokeMachine____ and: has Array of Callable%!heuristics;
18:42 TimToady okay, so something inside that method
18:42 SmokeMachine____ the only line of the method: %!heuristics{$var}.push: &heu
18:43 TimToady huh, it's like it's expecting Array[Callable]:U or so
18:43 SmokeMachine____ TimToady: 👆
18:44 TimToady well, it's apparently not autoviving for you somehow, seems
18:44 SmokeMachine____ this is the method: https://github.com/FCO/ProblemSolver/blob/master/Problem.pm6#L11
18:44 TimToady try making sure the element exists first?
18:44 timotimo oh, autovivification sometimes just doesn't work if you declare a constraint
18:44 * timotimo hasn't investigated yet
18:45 SmokeMachine____ but it works if it does not exists a Array of Callable on another class... :(
18:46 TimToady might be a () vs some undef value thing
18:47 TimToady the attribute is probably forcing a .new at some point on the value that is complaining it's a .new, but that doesn't explain why the assignment wouldn't work
18:47 TimToady anyway, it does look a little buggy to me
18:48 SmokeMachine____ the problem occours when I add this line: https://github.com/FCO/ProblemSolver/blob/error/State.pm6#L7
18:48 TimToady yes, which is an array of callables, which is probably getting Array[Callable].new somewhere
18:49 TimToady which is not assigning right inside the push
18:49 SmokeMachine____ but its in another class...
18:49 SmokeMachine____ and no-one uses that array...
18:49 TimToady what happens if, before the push, you say %!heuristics{$var} //= Array[Callable].new;
18:50 SmokeMachine____ let me try it...
18:50 TimToady this will rule out an autoviv problem
18:51 CIAvash the error message reminds me of this bug: https://rt.perl.org/Public/Bug/Display.html?id=127309
18:52 optikalmouse joined #perl6
18:52 SmokeMachine____ TimToad: the same https://www.irccloud.com/pastebin/LSSo6eIY/
18:52 TimToady wow CIAvash++
18:52 psch #127309 looks like some kind of parameterization caching problem?
18:52 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127309
18:53 psch anyway, yeah, spooky :)
18:53 TimToady so praps a noan bugg
18:53 SmokeMachine____ This is Rakudo version 2016.09-19-g8be36b1 built on MoarVM version 2016.09 implementing Perl 6.c.
18:54 psch (wow that phonetic transcription took me a while to pull apart, TimToady++)
18:55 TimToady spellin' is my speshialitee
18:56 TimToady lunch &
18:59 ka joined #perl6
19:40 andrzejku joined #perl6
19:42 itaipu joined #perl6
19:44 MetaZoffix joined #perl6
20:18 telex joined #perl6
20:19 cdg joined #perl6
20:20 LegalResale joined #perl6
20:22 Ven_ joined #perl6
20:23 bazzaar joined #perl6
20:28 broquaint If I want to run perl6 on the JVM is my best option to build from source or is it part of Rakudo Star (or other)?
20:29 konobi broquaint: ask mst
20:29 * konobi ducks
20:29 timotimo huh?
20:30 timotimo what does mst have to do with rakudo-jvm?
20:30 timotimo broquaint: at the moment, rakudo-j has a few problems
20:30 geekosaur build from source, but note that jvm is known broken
20:31 broquaint Aha, thanks for the heads up :)
20:32 geekosaur there's ongoing work but it is prone to crash on things rakudo-m works on still
20:37 Ven_ joined #perl6
20:37 stmuk rakudo-j works well enough for simple short code examples but panda etc doesnt work
20:40 tailgate how do I check if an object has an attribute?
20:40 dogbert17 o/ #perl6
20:41 zakharyas joined #perl6
20:43 jnthn m: class C { has $.x }; say so C.^lookup('x'); say so C.^lookup('y')
20:43 camelia rakudo-moar 8be36b: OUTPUT«True␤False␤»
20:43 dogbert17 m: my @a = [1,[2,3],4]; dd @a.duckmap({ $_ ~~ Int ?? $_ !! Any })  # this works well
20:43 camelia rakudo-moar 8be36b: OUTPUT«(1, (2, 3), 4)␤»
20:43 dogbert17 m: my @a = [1,[2,3],'a']; dd @a.duckmap({ $_ ~~ Int ?? $_ !! Any })  # this not so much
20:44 camelia rakudo-moar 8be36b: OUTPUT«Memory allocation failed; could not allocate 6296072 bytes␤»
20:44 timotimo that somehow infinitely recurses
20:44 espadrine joined #perl6
20:45 dogbert17 timotimo: yeah, it should work I guess
20:45 timotimo yeah, i'd say it should
20:46 dogbert17 guess I'll rt then
20:46 TEttinger joined #perl6
20:52 poohman joined #perl6
20:54 dogbert17 done, https://rt.perl.org/Public/Bug/Display.html?id=129321
20:55 tushar I have a private method that I am calling in each public method. Is there any way I can call private method after the object creation automatically?
20:56 timotimo you can do that in BUILD for example
20:56 moritz or BUILDALL
20:56 moritz https://docs.perl6.org/language/objects#Object_Construction
20:56 tushar timotimo, I am not writing any custom BUILD method rather using the default BUILD method
20:59 tushar timotimo, moritz, thanks. I will explore it.
21:02 tushar what is "|" mean in BUILDALL(|)? Does it indicate Junction operator?
21:05 Ven_ joined #perl6
21:06 vcv | is a capture which gobbles up all remaining positional and named arguments
21:06 vcv if those arguments arent going to be used, you dont have to name it, thus | instead of something like |c
21:07 vcv it also means BUILDALL(|) can accept any number of parameters of any type
21:07 tushar vcv: thanks
21:08 itaipu joined #perl6
21:08 girafe2 joined #perl6
21:11 gfldex tushar: see https://docs.perl6.org/type/Signature
21:13 tushar :gfldex thanks.
21:14 vcv Yeah, the Capture Parameters section.  I don't see anything about nameless parameters though.. maybe it's there under a different name/term
21:21 sufrostico joined #perl6
21:27 Ven_ joined #perl6
21:34 itaipu joined #perl6
21:44 mcmillhj joined #perl6
21:47 adu joined #perl6
21:52 bjz joined #perl6
21:55 mcmillhj joined #perl6
21:59 Woodi so, here are some stats for Rakudo releases: https://gist.github.com/slunski/0c79c215570be8f845bb8570381e8bed
22:00 Woodi all that experiment tought me that Perl6 OO is quite stable since few years :)
22:05 mcmillhj joined #perl6
22:11 geraud joined #perl6
22:12 El_Che no regressions lately :)
22:15 timotimo no ragrets
22:17 timotimo https://wiki.gnome.org/Outreachy/2016/DecemberMarch#Participating_Organizations - it seems like Perl is already participating in outreachy; that's very cool
22:17 timotimo could applicants potentially work on perl6 stuff?
22:18 timotimo oh, the description reads TPF will sponsor an applicant to work on bugzilla
22:19 baest_ joined #perl6
22:19 _sfiguser joined #perl6
22:21 mcmillhj joined #perl6
22:22 harmil_wk joined #perl6
22:31 dylanwh That is because that's what I can reasonably make time to mentor for.
22:32 timotimo ah
22:32 timotimo thank you for mentoring, in any case! :)
22:33 mcmillhj joined #perl6
22:34 dylanwh hopefully brings a new person to perl, and maybe a new person to perl6 afterwards. :-)
22:36 captain-adequate joined #perl6
22:36 timotimo that'd be cool
22:36 dylanwh btw, I countered the person at mozilla that thought the whatever-star operator / fibonacci example was "line noise" with the CSS 2.1 parser, and the person was actually impressed by that grammar.
22:36 skids joined #perl6
22:37 dylanwh so a small victory in mind share, maybe.
22:38 timotimo neat :)
22:40 timotimo the ... operator is fantastic
22:40 timotimo i used it to great effect to follow a node's "parent" pointer from the target to the source in a graph that had a dijkstra path finding algorithm run over it
22:41 dylanwh I think there is literally something in people's mental model of programming that either makes them love symbols or hate symbols, with no inbetween.
22:41 timotimo and the result of the ... was the list of nodes along the path
22:41 dylanwh it might have to do with exposure to maths notation
22:41 timotimo a friend of mine was astounded to see me switch from python to perl6
22:41 dataangel My exposure to maths notation made me hate maths notation
22:41 timotimo what with python having a dearth of symbols and perl6 having the opposite :)
22:42 dataangel In math pretty much no symbol has a consistent meaning
22:42 dataangel Instead of an easy-to-read name you get a Greek letter that tells you nothing without going back and referring to an earlier part of the paper
22:43 Sgeo joined #perl6
22:45 geekosaur and even when there are consistent names, they're only consistent within one branch
22:47 timotimo yeah
22:49 timotimo at least in perl6 symbols tend to keep their meaning and different things look different
22:49 dataangel Yeah math notation never gets executed so they never discover that they're being inconsistent
22:51 timotimo ipython notebooks (and by extension julia notebooks and some others) have made a nice dent in that issue
22:51 timotimo at one point there was a talk or article about "you can basically click one button to fire up an AWS instance that'll reproduce our results in a couple of hours or days"
22:52 mcmillhj joined #perl6
22:52 poohman joined #perl6
22:59 lambd0x joined #perl6
22:59 lambd0x Hi everyone!
23:05 timotimo hello lambd0x
23:05 lambd0x timotimo: :D
23:18 lambd0x timotimo: do you know what does @array.grep uses internally for the search? I've just done some testing of finding an element on an array of ordered elems. sizing from 1,000 up to 15,000 using grep and compared it against a simple binary search and the second was significant better in time. https://tinyurl.com/zgc2lcq (codes), https://tinyurl.com/hrlx4v7 (results)
23:20 timotimo well, grep will definitely not use binary search, because it's not guaranteed to have a sorted list to search through
23:23 lambd0x timotimo: could we optimize grep by narrowing it down to cases? Such as for ascending, descending, etc...?
23:26 vcv dylanwh: do you have a link to the CSS parser?
23:27 timotimo definitely not
23:27 timotimo grep just goes through the list. if you want to figure out if the list is sorted, you also have to go through the whole list
23:27 timotimo so finding out if the list is sorted or not is about as expensive as doing the grep itself
23:27 mcmillhj joined #perl6
23:29 lambd0x timotimo: I see. thanks for explaining :).
23:29 vcv You could, in theory, implement a SortedList object and write your own grep method for that
23:33 timotimo also, sorting a list is eager, but perl6 gives you a lazy grep
23:34 lambd0x vcv: I was thinking about that, but what timotimo said is true. Normally u wouldn't know if the array is or not already sorted and so, how to tell it otherwise than just checking it which will take its share of the time alonside with grep.
23:34 timotimo if you already know it's sorted coming in, or you've done the work up front, use a module from the ecosystem that gives you binary search or something similar :)
23:36 vcv i suppose binary search and grep dont fit together at all anyway -- maybe first, if given a known sorted list
23:37 vcv actually that might not make sense either
23:37 lambd0x timotimo: the difference between eager and lazy lists is that the second just resolves the element when accessed?
23:37 tushar joined #perl6
23:38 timotimo that's right
23:38 lambd0x vcv: exactly :/
23:38 lambd0x timotimo: thanks :)
23:38 timotimo grep gives you a list of items that match a predicate
23:38 timotimo if you have a predicate like "is exactly 9", you can easily binary-search, because it gives you "greater than" or "less than" results
23:39 timotimo but if your predicate is like "is a prime number" or "this field has a stone placed on it" or things like that ... not so much
23:40 lambd0x timotimo: that's interesting
23:42 mcmillhj joined #perl6
23:43 lambd0x oh another thing, if I wanted to use hashes with a different hashing function would that be let's say using OOP, or not even with such?
23:44 timotimo i can't parse that sentence
23:44 lambd0x sorry. Is possible in perl6 to use a different hashing function for hashes?
23:45 timotimo the hashing function used for built-in hashes is an implementation detail
23:45 timotimo but you can implement your own hashes using arrays and your own hashing function
23:45 timotimo it'll also be kinda slow :)
23:45 vcv s: help
23:45 SourceBaby vcv, Something's wrong: â�¤ERR: [31m===[0mSORRY![31m===[0m Error while compiling -eâ�¤Undeclared routine:â�¤    help used at line 6â�¤â�¤
23:45 lambd0x I'm literally wanting to reinvent the road, yes I know ahahha
23:45 vcv s help
23:46 lambd0x timotimo: just for learning I think its worth :)
23:46 lambd0x thanks.
23:46 vcv s: Hash, 'keys'
23:46 SourceBaby vcv, Something's wrong: â�¤ERR: Type check failed in binding to &code; expected Callable but got Method+{<anon|74133312>} (Method+{<anon|7413331...)â�¤  in sub do-sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 42â�¤  in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 33â�¤  in block <unit> at -e line 6â�
23:46 timotimo i'm going to bed, gnite!
23:47 lambd0x timotimo: o/
23:47 vcv s: Hash
23:47 SourceBaby vcv, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Hash); 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␤␤
23:47 vcv s: 'abs'
23:47 SourceBaby vcv, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Str); 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␤␤
23:47 timotimo s: &abs
23:47 SourceBaby timotimo, Sauce is at https://github.com/rakudo/rakudo/blob/8be36b1/src/core/Numeric.pm#L46
23:47 vcv thanks, i can never remember how to operate this bot
23:48 vcv lambd0x: https://github.com/rakudo/rakudo/blob/8be36b1228c8b1b455e00ea1e8e69c8d72598424/src/core/Hash.pm Perl 6 Hash object, but its heavily using underlying nqp ops which makes it much faster than you could with pure Perl 6
23:50 ka joined #perl6
23:51 lambd0x vcv: thanks u very much \o/
23:52 mcmillhj joined #perl6

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

Perl 6 | Reference Documentation | Rakudo