Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2017-07-24

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:08 dugword joined #perl6
00:09 Cabanossi joined #perl6
00:19 BenGoldberg joined #perl6
00:28 jeromelanteri for PERL6LIB variable env, where is the usual perl6 module directory ?
00:28 jeromelanteri i do zef install Term::Choose, then use Term::Choose::Export, but failed to find in @INC...
00:29 jeromelanteri inside /usr/share/perl6/source ?
00:30 jeromelanteri or inside /usr/share/perl6/site/soures ?
00:30 jeromelanteri or inside /usr/share/perl6/site/resoures ?
00:33 geekosaur it's more complex than that; it's installed in a precompiled form, with a name based on the ABI hash
00:41 unop joined #perl6
00:42 samb1 joined #perl6
00:45 skids joined #perl6
01:02 jeromelanteri geekosaur, ok then how i can resolve an error talk about module importation ?
01:03 jeromelanteri my modules, i put them where i want and add directory in PERL6LIb (yes ?), but for modules zef install ? use Prompt::Gruff is not suffisant ?
01:07 jeromelanteri oh... sorry, i made an error (perl5 and perl6 transition) the module i called is wrong and not exist... so if i call a module than zef has allready installed, it should works.
01:08 geekosaur I'd expect a p6 module error (presuming it's installed) to give both the human readable module name and the hash
01:11 jeromelanteri geekosaur, is there some Cwd, warnings, feature modules to use (like perl) at first lines ?
01:12 geekosaur it's all pretty much by default now
01:12 geekosaur rarely you might want "use lib '.';"
01:12 geekosaur warnings, strict, etc. are on by default
01:13 jeromelanteri and use lib is same than perl5 ? (for example i can put my directory modules inside instead of use PERL6LIB ?) ?
01:17 Manifest0 joined #perl6
01:19 parv joined #perl6
01:23 jeromelanteri https://ptpb.pw/Ozzf
01:23 jeromelanteri but find /usr -name "libncurses.so*" show me this lib in /usr/lib and /usr/lib32
01:24 jeromelanteri what i can do ?
01:24 Cabanossi joined #perl6
01:25 geekosaur someone's still doing that, I see
01:25 geekosaur the problem is that you're on a system which "cleverly" makes it a linker script
01:25 geekosaur which is quite useless for runtime loading
01:26 jeromelanteri yes sure, it is archlinux. most of the lib there are linked
01:26 geekosaur er
01:26 geekosaur ok, what I said went over your head
01:26 jeromelanteri geekosaur, so i need to copy this lib inside /usr/lib instead of symbolic link ?
01:26 geekosaur the complaint is "file too short"
01:27 geekosaur the most probably reason is that its contents are:  INPUT(-lncursesw)
01:27 geekosaur a linker script, meaning commands understood by the ld program
01:28 geekosaur (well, most probably it is a symlink to a versioned one, which contains that.)
01:28 geekosaur anyway the symlink is not the problem, the fact that it is a script understood only by the ld command is the problem
01:28 jeromelanteri yes, ls -la /usr/lib/libncu* show me the bigger are libncurses++.so.6.0 and libncursesw.so.6.0 (76Ko and 435Ko)
01:29 geekosaur (also it should really not be using the unversioned one but that;s an argument I will always lose because programmers know ABIs never ever change)
01:29 jeromelanteri and actualy, libncurses.so is not a simbolic link on system file
01:30 jeromelanteri but maybe redirected inside the file ...
01:30 jeromelanteri yes... cat /usr/lib/libncurses.so show INPUT(-lncursesw)
01:31 geekosaur in any case you probably need need to file an issue at https://github.com/azawawi/perl6-ncurses/issues
01:31 geekosaur (although there is already one that is closely related)
01:32 jeromelanteri geekosaur,  ok, i'm going to do that. and by the time, what i can do for resolve the problem actually ?
01:32 geekosaur you would need to replace the file containing that linker script with a symlink to the correct one
01:32 geekosaur pacman may be annoyed at you in the future though
01:33 geekosaur since it will no longer be what it thinks should be there
01:33 jeromelanteri no other "clean OS" way ?
01:33 jeromelanteri this lib is important...
01:34 geekosaur nope, your OS chose to do things that way, perl6-ncurses needs to be modified to deal with it or the script needs to be replaced with a more direct link to the correct object
01:34 jeromelanteri geekosaur, do you think the Term::Choose bug is important and difficult to resolve ?
01:34 geekosaur this is not really a problem with Term::Choose, it's a problem with one of the modules that requires
01:35 jeromelanteri i'm going to post bug and looking in the source code.. maybe i can find an idea ?
01:35 jeromelanteri NCurses i think ?
01:36 geekosaur perl6-ncurses is trying to find a compatible ncurses shared object and choking on that. it needs to be taught to look in more places.
01:36 geekosaur specifically it needs to attempt the -w variant (which there's already a bug open for)
01:51 jeromelanteri Use wide char library if it is installed
01:51 jeromelanteri (i just post a bug issue)
01:52 ilbot3 joined #perl6
01:52 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!
01:52 AlexDaniel I'm only afraid that it will turn anything I write into spaghettified monkey shit…
01:53 jeromelanteri and....
01:53 geekosaur AlexDaniel, yeh, that was recognized fairly early on after some initial thinking that it could be quite useful (e.g. to implement perl 5's "-s" behavior)
01:54 jeromelanteri WORKS ! (happy !)
01:54 jeromelanteri geekosaur, thank you for help me to find a clean solution
01:54 geekosaur th eonly problem is you need to make sure you do that before running anything using perl 6's ncurses module
01:54 geekosaur (maybe put it in ~/.bash_profile)
01:55 geekosaur ...if you already have ~/.profile then put it in there instead
01:55 geekosaur (if bash sees ~/.bash_profile then it will ignore ~/.profile and any existing shell config will "vanish")
01:57 jeromelanteri geekosaur, yes sure... inside my /etc/profile for system wide
01:57 jeromelanteri and i use zsh
02:04 noganex joined #perl6
02:07 vendethiel joined #perl6
02:11 jeromelanteri on perl5 for get variable environment you get it by $ENV["MY_VAR"}. And with perl6 ?
02:11 jeromelanteri s/[/{/
02:12 AlexDaniel %*ENV<MY_VAR>
02:12 geekosaur $*ENV{"MY_VAR"} or more conventionally $*ENV<MY_VAR>
02:12 jeromelanteri thank you
02:12 AlexDaniel geekosaur: wrong sigil though
02:13 geekosaur er yes
02:13 geekosaur %*ENV{"MY_VAR"} or %*ENV<MY_VAR>
02:13 AlexDaniel m: say %*ENV<ME>.comb.pick(*).join
02:13 camelia rakudo-moar 12d7d5: OUTPUT: «eDnlAeixal?»
02:13 geekosaur jeromelanteri, you actually saw that in the NCurses.pm6 earlier
02:13 geekosaur for PERL6_NCURSES_LIB
02:14 jeromelanteri yes correct
02:16 jeromelanteri actually, perl6 (but also perl5) is new for me... my eyes see, but my brain is to hot for record and understand all quickly... need more time to memorize also.
02:16 jeromelanteri (is to hot and to little also :) )
02:16 jeromelanteri i translate perl5 new code to perl6 code...
02:24 Cabanossi joined #perl6
02:27 TEttinger joined #perl6
02:37 jeromelanteri perl6 is real OO, then it may have an API to read ? where ?
02:37 jeromelanteri i'm searching for something like  if $string.is_directory { }
02:40 jeromelanteri get the API for Str
02:43 ugexe m: say "my string".^methods
02:43 camelia rakudo-moar 12d7d5: OUTPUT: «(BUILD Int Num chomp starts-with ends-with substr-eq contains indices index rindex pred succ comb match subst-mutate subst ords lines parse-base parse-names samecase samemark samespace word-by-word trim-leading trim-trailing trim words encode NFC NFD NFK…»
02:44 geekosaur it is OO but that doesn't guarantee that things are where you expect them to be
02:44 geekosaur https://docs.perl6.org/type/IO::Path#method_d
02:45 jeromelanteri ugexe, i read api doc for Str and linked/herited class (Mo Cool Any) but not find how to check if the content string should be a directory who exist (or not)...
02:45 jeromelanteri geekosaur, yes sure.
02:45 geekosaur m: say ".".IO.d
02:45 camelia rakudo-moar 12d7d5: OUTPUT: «True?»
02:45 jeromelanteri geekosaur, thank you again...
02:46 geekosaur and in general you probably want https://docs.perl6.org open
02:47 jeromelanteri geekosaur, yes, i'm on it.
02:47 geekosaur but it might not help you with realizing that to treat a string as a path, you need to use the .IO method to get an IO::Path you can do things with
02:47 jeromelanteri i'mtrying googlize also (but not too much output relative to perl6 on gogol)
02:49 jeromelanteri geekosaur, so yes, if i do: $.full_filename = "/my/full/filename.yml"; unless $.full_filename.IO.d { mkdir $.full_filename; }
02:49 jeromelanteri it should works
02:50 geekosaur it hsould although there are a few rough spots around making intermediate directories on various platforms
02:50 jeromelanteri geekosaur, ho yes... i doesn't care actually about windows things...
02:53 risou joined #perl6
03:08 dugword joined #perl6
03:09 Cabanossi joined #perl6
03:10 jeromelanteri sometimes, doc is minimalist: https://github.com/perl6-community-modules/yaml-pm6
03:10 jeromelanteri so from there, how to know what to do for dumlp yaml file and load yaml file ?
03:12 jeromelanteri does it mean, by deduction, that i have to dump yaml data in something object, then write it inside a file (spurt ?) ?
03:38 Cabanossi joined #perl6
03:40 shmibs joined #perl6
04:19 bwisti joined #perl6
04:22 gdonald joined #perl6
04:36 AlexDaniel joined #perl6
04:41 wamba joined #perl6
04:53 Cabanossi joined #perl6
04:59 Manifest0 joined #perl6
05:52 xtreak joined #perl6
05:53 Cabanossi joined #perl6
06:03 xinming_ joined #perl6
06:18 domidumont joined #perl6
06:22 lowbro joined #perl6
06:22 lowbro joined #perl6
06:26 nadim joined #perl6
06:31 parv joined #perl6
06:33 nine jeromelanteri: yes, spurt "myfile.yml", dump($any_perl6_object); should do the trick
06:38 jeromelanteri nine, yes it does. but i think there is no "load" method actually aviable, correct ? (i read a bit the source code of YAML perl6 module... it seems to be not implemented. So, for load file...
06:38 Cabanossi joined #perl6
06:42 nine jeromelanteri: yeah, seems like you're better off with https://github.com/yaml/yaml-libyaml-perl6 or https://github.com/Leont/yamlish
06:45 jeromelanteri nine, ok, i will soon.
06:49 ufobat joined #perl6
06:58 jeromelanteri nine, may i directly declare a type of class variable (like has Str $.file;) with an imported class object ? like: use YAML; class try_it{ has YAML $.datas; } ?
06:59 jeromelanteri but by the way, it should have no sens with YAML ...
07:00 jeromelanteri but with something who should have a sens (declare a variable who is a specific type of object... a class object i created...)
07:01 jeromelanteri possible ?
07:03 wamba joined #perl6
07:06 vendethiel joined #perl6
07:06 abraxxa joined #perl6
07:07 nine jeromelanteri: yes
07:08 nine jeromelanteri: there is really no difference between types created by you, any module you load or the builtin ones. Even builtin types are written in Perl 6 and declared pretty much the same way.
07:10 nine Like the builtin Date class: https://github.com/rakudo/rakudo/blob/nom/src/core/Date.pm
07:12 jeromelanteri fine !
07:13 jeromelanteri what is key-wrod "proto" and "multi" mean ? (ligne 23 and 24, etc...
07:13 jeromelanteri key word
07:14 moritz multis are several subs or methods with the same, but different signatures
07:14 jeromelanteri ok
07:14 moritz and a proto basically groups them together, and can do things like pre- and post-processing for the individual multis
07:14 jeromelanteri fine
07:15 jeromelanteri more i learn, more i like perl6 actually...
07:22 zakharyas joined #perl6
07:25 wamba joined #perl6
07:36 abraxxa joined #perl6
07:37 parv moritz: i read about proto (somewhere...) usage to validate/verfiy required parameters. how does post-processing work?
07:40 darutoko joined #perl6
07:42 jeromelanteri is ther any tools for increase usability of perl6 shell ? for example, when i run perl6, i go inside the shell prompt of perl6 (well...), but if i do arrow up, i can not have the last sentence i hit before... i would like something more easy for use/test code. There is some ?
07:43 jeromelanteri a kind of perl6 console with easy history things...
07:44 jeromelanteri (maybe completions... why not ?)
07:44 jeromelanteri like irb for ruby or ipython for python, etc...
07:44 parv jeromelanteri, do you have linenoise|readline installed? (that's what comes up when perl6 REPL is stared if not installed.)
07:46 jeromelanteri parv, no. but find it in AUR repos. I think i have readline.
07:46 jeromelanteri yes, readline, but i just see there is perl6-readline and perl6-linenoise.
07:47 jeromelanteri parv, what you think the best ?
07:47 parv Those are the perl 6 modules, installed via zef.
07:47 jeromelanteri which one should do the best helper worker ?
07:47 jeromelanteri readline vs linenoise
07:47 parv jeromelanteri, i haven't used either much..
07:47 jeromelanteri ok
07:47 jeromelanteri go for readline
07:48 parv somebody else would have to chime in about that.
07:48 parv aye
07:48 moritz parv: proto mysub(|) { my $result = {*}; die "I don't like result $result" unless $result == 42; return $result }
07:48 domidumont joined #perl6
07:48 parv perl6-(linenoise|readline) might be those modules (speculating here)
07:48 jeromelanteri by zef then...
07:50 jeromelanteri parv, ok, history works (no completion i think, but np, that's fine).
07:51 parv jeromelanteri, yeah with python (2.7), perl [56] history is all care about. mostly. completion would be good but i am not going to put any extra effort to get that.
07:53 jeromelanteri parv, for test code for me, it help a lot.
07:53 meidina joined #perl6
07:53 Cabanossi joined #perl6
07:56 * parv might have seen REPL completion mentioned per fuzzy memory.
08:00 Guest90987 joined #perl6
08:02 TEttinger joined #perl6
08:06 zengargoyle when do you actually need to nuke everything and start from scratch?
08:07 zengargoyle jeromelanteri: linenoise is self contained and has liberal license for inclusion in projects, readline is GNU readline and requries library to be installed and is GPL license.  readline is better (i think) if you already use/know other readline using programs.
08:08 * zengargoyle *hates* gnome-terminal.  it maps touchpad scroll to up/down arrow/history and there's no way to turn it off. grr.
08:09 * parv sings: xterm, xterm, xterm. rainbow xterm. multitude of xterm. X TERM!
08:11 zengargoyle parv: have you figured out how to get full unicode ttf support in xterm?
08:11 tinita nine, jeromelanteri or you could even have a look at https://github.com/yaml/yaml-perl6
08:12 zengargoyle only goog thing about gnome-terminal (other libvte based terminals) is cairo and full fallback font matching.
08:12 tinita i posted this a couple of weeks ago, but so far got no feedback at all
08:14 parv zengargoyle, i have not tried printing of unicode in xterm much. last time i did send the output to a file; opened the file in Firefox to see the glory that is unicode emoji
08:15 zengargoyle ah, i type Japanese enough and weird stuff enough that xterm just doesn't do font picking well enough.
08:18 zengargoyle i used xterm and the fixed font (with pretty decent unicode supprt) for ages, but with HiDPI monitor the Xfonts are *way* too small to be usable (and non-scalable).  i'm constantly looking for better solutions than libvte terminals that look good but behave bad... :)
08:18 parv zengargoyle, there are (at least) two font options in xterm, one of them is for wide characters. Does setting that option for japanese font help you?
08:19 dakkar joined #perl6
08:19 zengargoyle not good enough, it needs to do fontconfig like fallback.  it's impossible to have a single .ttf that covers unicode.
08:19 parv zengargoyle, set the truetype font which can be scaled (14-32+)
08:20 zengargoyle setting -fa and -fd with decent options still leaves lots of holes.
08:20 zengargoyle the problem to me it that xterm only uses 2 font files.
08:20 parv yeah, sorry 8-[
08:20 zengargoyle gnome-terminal/browser/other things do a lookup that pretty much tries every font you have...
08:23 xtreak joined #perl6
08:24 parv 3rd D: https://twitter.com/jonnysun/status/888849874631802880
08:27 xtreak joined #perl6
08:28 rindolf joined #perl6
08:33 jonas1 joined #perl6
08:41 robertle joined #perl6
08:53 jeromelanteri tinita, zengargoyle yes, thank you, i do use readline because of two reason you give. And yes, i do look at yaml-perl6 to. thnak you
08:54 jeromelanteri and how to test if something is a has ? .WHAT show that, but something like .isa-hash (true or false) ?
08:55 jeromelanteri is a hash
08:55 zengargoyle m: say so { foo => 'bar' } ~~ Hash
08:55 camelia rakudo-moar 12d7d5: OUTPUT: «True?»
08:55 zengargoyle m: my %x = foo => 'bar'; say %h;
08:55 camelia rakudo-moar 12d7d5: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Variable '%h' is not declared?at <tmp>:1?------> 3my %x = foo => 'bar'; say 7?5%h;?»
08:55 zengargoyle m: my %x = foo => 'bar'; say %x;
08:55 camelia rakudo-moar 12d7d5: OUTPUT: «{foo => bar}?»
08:56 zengargoyle m: my %x = foo => 'bar'; say %x; say so %x ~~ Hash
08:56 camelia rakudo-moar 12d7d5: OUTPUT: «{foo => bar}?True?»
08:56 jeromelanteri zengargoyle, well.. thank you
08:57 zengargoyle jeromelanteri: i think there's another way, but it boils down to matching vs the Type.
09:00 zengargoyle m: my %x = foo => 'bar'; my $y = "woot";  say so Hash.ACCEPTS(%x); say so Hash.ACCEPTS($y);
09:00 camelia rakudo-moar 12d7d5: OUTPUT: «True?False?»
09:01 zengargoyle jeromelanteri: the ~~ does something like that.
09:03 jeromelanteri zengargoyle, well, i like the first syntax, but which one the best for the code ?
09:03 jeromelanteri if ~~ do that, then i just go for use it.
09:06 zengargoyle i'm pretty sure ~~ is the usual thing.
09:07 wamba joined #perl6
09:10 nine zengargoyle: what did you mean by that? "10:06 < zengargoyle> when do you actually need to nuke everything and start from scratch?"
09:14 zengargoyle nine: using rakudobrew, in the past, 'build moar' usually required re-installing modules.  it seems now with zef it doesn't and things get re-compiled as needed.  is there a case where nqp/moar/etc gets changed that *really* requires a nuke of moar-nom and re-install?
09:16 lizmat zengargoyle: haven't seen such a case just yet
09:16 nine zengargoyle: no, not ever.
09:18 zengargoyle ok, the question just happend to occur at the same time as the PERL6LIB and .../rakudobrew/lib/.precomp thing i had.  otherwise i also haven't had to reinstall things in a long time. :)
09:22 nine zengargoyle: if an upgrade breaks something, that's a bug and we have to fix it. Users should never be required to reinstall modules.
09:24 xtreak joined #perl6
09:24 zengargoyle cool, is there some way to trigger a re-precomp of everthing yet?  i build on one system and rsync to another and would like to avoid the random delay when a module needs re-precomiled.
09:27 nine zengargoyle: I guess you could do something like for $repo.installed -> $dist { for $dist.meta<provides>.keys -> $module { require $module } }
09:29 zengargoyle nine: thanks, i'll try and remember to give it a shot the next time.
09:36 nine zengargoyle: this seems to do the trick: for $*REPO.repo-chain.grep(CompUnit::Repository::Installable) -> $repo { for $repo.installed -> $dist { for $dist.meta<provides>.keys -> $module { next if $module eq "Zef::CLI"; $repo.need(CompUnit::DependencySpecification.new(:short-name($module), :ver($dist.meta<ver>))) } } }
09:38 Cabanossi joined #perl6
09:41 xtreak joined #perl6
09:43 * zengargoyle clips into my cool.p6 Q/A file.
09:53 domidumont joined #perl6
10:01 pmurias joined #perl6
10:08 Cabanossi joined #perl6
10:09 dugword joined #perl6
10:13 araujo joined #perl6
10:13 araujo joined #perl6
10:21 mr-foobar joined #perl6
10:23 faraco joined #perl6
10:24 Dunearhp joined #perl6
10:25 faraco hey guys, I'm stuck at moar installation. I'm running ubuntu and rakudobrew is installed successfully. However when running `rakudobrew build moar`, I got connection reset by peer error. I don't think it is something with my connection since I can clone my other repos on Github. :o
10:29 faraco hmm, when I try to clone https://github.com/rakudo/rakudo.git instead of git://github.com/rakudo/rakudo.git that rakudobrew use, it works, but why?
10:52 pmurias faraco: can you git clone git://github.com/rakudo/rakudo.git from the command line?
10:54 Cabanossi joined #perl6
10:59 faraco pmurias: I did try then, and still the same error. I instead manually patch the $GIT_PROTO in rakudobrew to use http instead of git:// and it works for me.
11:00 faraco <faraco> pmurias: I did try then, and still the same error. I instead manually patch the $GIT_PROTO in rakudobrew to use http instead of git:// and it works for me.
11:00 faraco oops
11:03 lizmat joined #perl6
11:12 rindolf joined #perl6
11:18 faraco left #perl6
11:22 unop joined #perl6
11:26 araraloren joined #perl6
11:27 domidumont joined #perl6
11:36 nadim joined #perl6
11:53 Cabanossi joined #perl6
11:58 AlexDaniel is there any difference between “sub ($x) { … }” and “anon sub ($x) { … }” ?
12:00 moritz no
12:01 moritz but with "anon" you can write a sub that knows its own name without it being installed into a symbol table
12:01 moritz m: my $x = anon sub fany () { }; say $x.name
12:01 camelia rakudo-moar 12d7d5: OUTPUT: «fany?»
12:01 moritz m: my $x = anon sub fany () { }; say $x.name; say &fancy
12:01 camelia rakudo-moar 12d7d5: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Undeclared routine:?    fancy used at line 1??»
12:03 AlexDaniel thanks
12:04 raschipi joined #perl6
12:05 AlexDani` joined #perl6
12:14 baest joined #perl6
12:25 Aaronepower joined #perl6
12:27 pmurias joined #perl6
12:29 zakharyas joined #perl6
12:37 eliasr joined #perl6
12:38 Cabanossi joined #perl6
12:46 domidumont joined #perl6
12:51 emeric joined #perl6
12:56 xtreak joined #perl6
12:58 xtreak joined #perl6
12:59 mcmillhj joined #perl6
13:01 moritz m: my $x = anon sub fancy () { }; say $x.name; say &fancy
13:01 camelia rakudo-moar a636fa: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Undeclared routine:?    fancy used at line 1??»
13:01 moritz (helps to acctually spell the name right to demonstrate that it doesn't work :-)
13:09 buggable joined #perl6
13:10 mr-foobar joined #perl6
13:11 buggable joined #perl6
13:12 nadim rakudo people, I notice that dd $var, $var2 ... will output the name of the variable it is dumping automatically; can one get that information easilly?
13:12 yoleaux 23 Jul 2017 14:09Z <Zoffix> nadim: yes you can. Just use binding instead of asignment to cause signature binding instead of list assignment. `my () :=` is just a signature so you can use whatever you can use in normal signatures (sans anything currently not implemented yet).   sub x { :name<foos>, :other<meows>, 123, 456 }; my (:$other, *@positional, :$name) := x; dd [$other, $name, @positional]
13:12 Zoffix m: my $var = 42; say "{.VAR.name} = $_" with $var
13:12 camelia rakudo-moar a636fa: OUTPUT: «$var = 42?»
13:13 moritz nadim: there's $var.VAR.name, but t's unreliable in the face of binding
13:13 moritz m: my $var = 42; say $var.VAR.name; my $x := $var; say $x.VAR.name;
13:13 camelia rakudo-moar a636fa: OUTPUT: «$var?$var?»
13:14 raschipi m: my $var = 42; my $x := $var; dd $x.VAR.name;
13:14 camelia rakudo-moar a636fa: OUTPUT: «"\$var"?»
13:14 raschipi m: my $var = 42; my $x := $var; dd $x
13:14 camelia rakudo-moar a636fa: OUTPUT: «Int $var = 42?»
13:14 raschipi Well, as unreliable as the one he was aiming for.
13:15 mr-fooba_ joined #perl6
13:16 nadim thanks moritz, i'll write that down somewhere to be integrated in my dumper
13:16 nadim Zoffix:  thanks for the answer about signature binding instead for list assignment
13:19 mr-foobar joined #perl6
13:20 wamba m: say "aaanbbb".match( /a+ <( n )> b+ /).chunks
13:20 camelia rakudo-moar a636fa: OUTPUT: «(~ => nbbb)?»
13:24 tokomer joined #perl6
13:25 perlpilot m: say "aaanbbb".match( / (a+) <( n )> (b+) /).chunks
13:25 camelia rakudo-moar a636fa: OUTPUT: «(0 => ?aaa? ~ => n 1 => ?bbb?)?»
13:25 perlpilot weird
13:26 skids joined #perl6
13:27 jeromelanteri first in perl6 is not equivalent of first in perl5. Then, what is equivament of first (in perl5) for perl6 ?
13:27 itaipu joined #perl6
13:28 jeromelanteri perl5 code: $a = first { $_ eq "string" } @array;
13:28 jeromelanteri perl6 => ?
13:29 jnthn What does first in Perl 5 do?
13:29 moritz jeromelanteri: $a = @array.first("string)
13:29 moritz jeromelanteri: $a = @array.first("string")
13:30 jeromelanteri moritz, thank you
13:30 gdonald joined #perl6
13:31 jeromelanteri moritz, can it be write like: $a = first @array, "string";
13:32 moritz m: say first "a", ["a", "b", "c"]
13:32 camelia rakudo-moar a636fa: OUTPUT: «a?»
13:32 moritz jeromelanteri: you can do it like this
13:33 jeromelanteri moritz, yes, the second example you give, i like.
13:33 moritz jeromelanteri: https://docs.perl6.org/type/List#routine_first
13:34 perlpilot m: say first { $_ eq 'bar' }, <foo bar baz>;  # Just like map, you need the comman in P6
13:34 camelia rakudo-moar a636fa: OUTPUT: «bar?»
13:34 perlpilot er comma
13:34 jeromelanteri perlpilot, so it is the same as perl5 (not far)
13:34 perlpilot essentially.
13:35 Skarsnik joined #perl6
13:35 perlpilot .oO( what would `first` do otherwise? )
13:35 jeromelanteri perlpilot, fine. I wasn't understand the API this way.
13:35 jeromelanteri perlpilot, i thank it give the first of the list...
13:35 Skarsnik Hello
13:37 raschipi Hi
13:40 perlpilot jeromelanteri: btw, in P6, you can do things like my ($index,$value) = first { /a/ }, < foo bar baz >, :kv;
13:41 mr-foobar joined #perl6
13:41 perlpilot jeromelanteri: (that should be in the docs that moritz linked you to, but I thought I'd mention it anyway)
13:43 jeromelanteri perlpilot, what is :kv ?
13:44 jeromelanteri perlpilot, just reading the doc, that's ok, thank you
13:45 perlpilot jeromelanteri: see https://docs.perl6.org/language/subscripts#Adverbs
13:49 jeromelanteri fine
13:53 Cabanossi joined #perl6
13:55 robertle m: say "1 2 3".subst(/(2)/, $0 + 1); "1 2 3" ~~ /(2)/; say "1 2 3".subst(/(2)/, $0 + 1)
13:55 camelia rakudo-moar a636fa: OUTPUT: «Use of Nil in numeric context?  in block <unit> at <tmp> line 1?1 1 3?1 3 3?»
13:56 Zoffix m: say "1 2 3".subst(/(2)/, {$0 + 1}); "1 2 3" ~~ /(2)/; say "1 2 3".subst(/(2)/, {$0 + 1})
13:56 camelia rakudo-moar a636fa: OUTPUT: «1 3 3?1 3 3?»
13:56 robertle https://docs.perl6.org/routine/subst suggests that you can use the capturing $i in the second argument to subst, but apparently that is not the case. evaluation order?
13:56 robertle eh? don't get it
13:57 robertle what do the curlies do in there?
13:57 Zoffix robertle: the examples show a block. Is there any of them that use $0 and don't use a block?
13:57 Zoffix robertle: create a Callable that's given as the second argument. In your version, you're giving the value of $0, which is Nil
13:57 robertle looking at it no, but that is surprising to me
13:57 robertle right, so I was kinda onto something with the evaluation order
13:57 robertle makes sense now
13:58 Zoffix robertle: there's no magic involved. You're just giving two arguments to a routine; it can't magically know that the variable you gave it needs to be thunked
13:59 robertle yeah, it is obvious once you know what's going on ;)
13:59 ilmari m: say "1 2 3".subst(/(2)/, * + 1)
13:59 camelia rakudo-moar a636fa: OUTPUT: «1 3 3?»
13:59 yoleaux 20 Jul 2017 11:20Z <nwc10> ilmari: lunch!
14:00 robertle eh, now *that* does involve magic from where I stand. how does that work?
14:00 ilmari using * in an expression makes it a WhateverCode
14:00 Aaronepower Hello, is there anywhere with complete documentation of LWP::Simple? Or is there a better documented http library?
14:00 ilmari m: say (* + 42).WHAT
14:00 camelia rakudo-moar a636fa: OUTPUT: «(WhateverCode)?»
14:01 Skarsnik damn, could be cool if error like Use of uninitialized value of type Any in numeric context could tell wich variable xà
14:01 espadrine joined #perl6
14:02 Skarsnik Aaronepower, did you try http::useragant?
14:03 Aaronepower Skarsnik: No, because it sounded like a library for handling the User-Agent header. :D
14:03 jeromelanteri can not import symbol EXPORT from add(add is a module add.pm6), because it already exists in this lexical scope (inside my main .pl6 file at line 6)
14:03 jeromelanteri so there is something i not understand for import/export module.
14:03 jeromelanteri at line 6 of main file, there is use add;
14:04 jeromelanteri and in first line of y add.pm6, there is unit module add;
14:04 jeromelanteri that's wrong ?
14:04 Geth ¦ doc: d54b95568f | (Zoffix Znet)++ (committed using GitHub Web editor) | doc/Type/Str.pod6
14:04 Geth ¦ doc: Restructure .subst with Callables section
14:04 Geth ¦ doc:
14:04 Geth ¦ doc: - Merge the "Captures" and "Closure" sections, as they're the same
14:04 Geth ¦ doc: - Provide more examples for using captures and the Match object
14:04 Geth ¦ doc: review: https://github.com/perl6/doc/commit/d54b95568f
14:06 Zoffix robertle: no, that's still no magic. That's just WhateverCode, which is Rakudo's concise method of creating closures: https://docs.perl6.org/type/WhateverCode
14:06 jeromelanteri or does it mean that my package EXPORT::DEFAULT { should be unik ?
14:07 Zoffix jeromelanteri: please show your code.
14:07 jeromelanteri ok
14:09 Skarsnik Aaronepower, user agent refer to a http client I think, but it's more complete than lwp::simple
14:10 Zoffix Aaronepower: I tend to use WWW for off-the-cuff HTTP client needs
14:10 Zoffix buggable: eco WWW
14:10 buggable Zoffix, WWW 'No-nonsense, simple HTTPS client with JSON decoder': https://github.com/zoffixznet/perl6-WWW 3 other matching results: https://modules.perl6.org/#q=WWW
14:11 nadim joined #perl6
14:11 jeromelanteri https://gist.github.com/jerome-diver/a00c842062ce374a5ac965636d79dc37
14:13 Zoffix jeromelanteri: just remove `my package EXPORT::DEFAULT {` and the closing brace for it
14:14 Zoffix jeromelanteri: just adding `is export` trait to subs will make them exported by default. You generally don't need the `my package EXPORT::*` stuff unless you're doing something arcane
14:14 Zoffix m: '/tmp/Foobaradd.pm6'.IO.spurt: 'unit module Foobaradd; sub bars is export { say "teh bars!" }'
14:15 camelia rakudo-moar a636fa: ( no output )
14:15 Zoffix m: use lib </tmp>; use Foobaradd; bars
14:15 camelia rakudo-moar a636fa: OUTPUT: «===SORRY!===?Failed to open dir: 13?»
14:15 jeromelanteri Zoffix, well... i totaly missunderstood this part, but ok, i will remove that from add.pm6 and check.pm6 and add is export for each function
14:15 Aaronepower Zoffix: Can you provide better examples of using WWW? The ones in the repo don't explain how to use multiple headers or send json.
14:16 jeromelanteri Zoffix, how to distingate (and then declare) a function who should onlt be used by the module himself and a public function ?
14:16 jeromelanteri only
14:17 Zoffix jeromelanteri: by the module itself == that's default. public function == use `is export` trait
14:17 jeromelanteri Zoffix, clear. thank you.
14:17 alimon joined #perl6
14:21 Zoffix Aaronepower: headers would just be %(:Some<Custom-Header>, :Some-Other<Customer-Header>)
14:21 Zoffix Aaronepower: for JSON; do you mean send it as POST request's body? Don't see how to do that off hand
14:22 moritz you probably have to encode it yourself first
14:22 Aaronepower Zoffix: That doesn't actually explain how to put in something like `Authorization: Bearer blah`.
14:22 nadim hi, I read an article some times ago that was either recommended by someone here or maybe listed in the Perl6 weekly; the article was about lazy evaluation, possibly smalltalk examples, and had a very nifty example about using the max length of something before one had it computed (while computing it actually), does this ring any bell?
14:22 Zoffix Aaronepower: headers would just be %(:Authorization("Bearer blah"))
14:23 moritz nadim: https://perl6.party/post/Perl-6-Seqs-Drugs-and-Rock-n-Roll--Part-2 maybe?
14:23 Zoffix nadim: specifically this section: https://rakudo.party/post/Perl-6-Seqs-Drugs-and-Rock-n-Roll--Part-2#asosocount...
14:24 * Zoffix &
14:25 [Coke] several xtest doc failures after recent commits.
14:25 nadim lol, that document is open in a tab and waiting to be read since two days back. weird, I was sure what I wrote was not a Perl or Perl6 text
14:26 Skarsnik moritz, did you have a look recently at svg-plot?
14:27 Aaronepower Zoffix: Is there anywhere that hosts pod documentation?
14:28 Zoffix Aaronepower: pod documentation to what?
14:28 Aaronepower Zoffix: To any modules hosted. For example HTTP::UserAgent?
14:29 Zoffix Aaronepower: I think modules.zef.pm used to. Though there's a 500 error now: http://modules.zef.pm/search?terms=HTTP%3A%3AUserAgent
14:29 Zoffix .tell tony-o any idea why modules.zef.pm is puking a rainbow? http://modules.zef.pm/search?terms=HTTP%3A%3AUserAgent
14:29 yoleaux Zoffix: I'll pass your message to tony-o.
14:30 Zoffix Aaronepower: I think p6doc can display them; though that tool is a bit of a beta-quality
14:30 Zoffix buggable: eco p6doc
14:30 buggable Zoffix, p6doc 'Perl 6 documentation (tools and docs)': https://github.com/perl6/doc
14:30 Zoffix (if you're using Rakudo Star, you should already have  it installed)
14:30 * Zoffix &&
14:30 Aaronepower yoleaux: It seems to give a 500 error on any search aswell.
14:32 cdg joined #perl6
14:34 kliph joined #perl6
14:35 kliph left #perl6
14:35 raschipi joined #perl6
14:38 Cabanossi joined #perl6
14:42 Aaronepower Zoffix: How do you use it on a project?
14:46 Skarsnik here an example https://github.com/Skarsnik/fimstuff/blob/master/Ferrel/FimFictionStuff.pm6
14:46 cdg_ joined #perl6
14:46 itaylor57 joined #perl6
14:47 khw joined #perl6
14:58 Grauwolf joined #perl6
15:01 cdg joined #perl6
15:02 cdg_ joined #perl6
15:04 cdg joined #perl6
15:09 stmuk_ http://pl6anet.org/drop/rakudo-star-2017.07-RC2.tar.gz
15:10 wamba joined #perl6
15:13 araraloren https://gist.github.com/araraloren/22a2801fbaa51b6b9b3d824a5330bc77#file-add-server-p6-L9
15:14 araraloren This is a sample http server
15:14 konsolebox joined #perl6
15:15 itaipu joined #perl6
15:15 araraloren Is there a way get result form the Supply except use a Channel
15:15 araraloren I tried use another tap on $out
15:15 araraloren But it is not working
15:15 araraloren or use whenever inside a supply
15:16 timotimo maybe you need to .share the supply
15:16 araraloren `start { supply { whenever $out -> $msg { } } } ` Do this before I emit the @r;
15:16 timotimo well, depends on whether it's an on-demand supply or a live one
15:16 araraloren .share ?
15:17 jnthn supply in void context does nothing
15:17 jnthn Maybe you want start react { whenever ... } ?
15:17 timotimo ah, yes, you have to .tap the result of the supply { } block or it never gets entered
15:18 araraloren use that replace Channel ?
15:18 araraloren I will try it
15:33 araraloren I update the code : https://gist.github.com/araraloren/22a2801fbaa51b6b9b3d824a5330bc77#file-add-server-p6-L32
15:34 araraloren Is this the right way?
15:34 araraloren jnthn, timotimo :)
15:34 araraloren really appreciate for the help
15:39 timotimo that doesn't seem right
15:40 timotimo you'd be closing every $res with every result of the supply, wouldn't you?
15:40 timotimo hm, so you use /add to put the operators in and then /addresult to get the result from adding the two operators?
15:40 araraloren yeah
15:41 araraloren right
15:41 timotimo oh, /add gives you a form and that submits to /addresult
15:41 araraloren yeah
15:41 araraloren And the **add server** is always running ..
15:43 timotimo if this were real-world code, you might want to associate requests and results to the add server
15:43 timotimo because as it stands you've got a little race
15:43 timotimo as in, if two users submit /add at the same time, one might get the result of the wrong request
15:44 araraloren yeah, this is only test
15:45 timotimo well, i'm not really sure i'd do it like this
15:45 araraloren you mean send the $res or $req to the server?
15:45 timotimo but it probably depends on what the server is supposed to do
15:45 timotimo because if you use the restart mechanism, then it'll be somewhat like an event loop anyway
15:46 timotimo hmm. i think i like the channel approach better that you had
15:46 Aaronepower joined #perl6
15:46 araraloren Hmm
15:47 timotimo what i meant with associate is you could send the original request (only the two operators would be enough) back with the results and only use the result that matches your requested operands
15:48 araraloren Hmm, but how I know the server is work out the request ?
15:48 araraloren In this example
15:49 araraloren The sub pass to route would not exit before the result return from server
15:49 araraloren s/would/should/
15:51 araraloren Then again, seems like have to use Channel ..
15:51 araraloren :/
15:54 timotimo mhm
15:55 Aaronepower joined #perl6
15:56 araraloren If there are some Async http server sample, it will be better. XD
15:56 araraloren Night, it's time for bed
15:57 colomon joined #perl6
15:57 timotimo gnite!
15:58 araraloren :) Thanks anyway have a good day
15:59 Aaronepower joined #perl6
16:15 Juerd Is there a way to assign to $!foo if you have only a string $x = "foo"? I.e. is there a way to refer to private attributes by name?
16:17 eyck joined #perl6
16:19 raschipi Juerd: If you want it proper, go with a Hash. There is a way, but you probably don't want to do that.
16:21 itaipu joined #perl6
16:21 Juerd Basically I need to replace an object with updated information from a json file
16:21 Juerd It was originally created with ::($class).new(|%hash)
16:21 Juerd And at some point, there's a new hash, and the existing object needs updating
16:22 Juerd So I'm curious... what is that way? :)
16:23 raschipi m: my $a_var = 42; my $b_var = "a_var"; $::($b_var) = 23; say $a_var;
16:23 camelia rakudo-moar 2fb8c7: OUTPUT: «23?»
16:23 Juerd But what's the syntax for use with twigils?
16:24 raschipi m: my $a_var = 42; $::("a_var")= 5; say $a_var;
16:24 camelia rakudo-moar 2fb8c7: OUTPUT: «5?»
16:25 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; $::("!$attr") = 43; say $.bar } }; Foo.new.update
16:25 camelia rakudo-moar 2fb8c7: OUTPUT: «No such symbol ''?  in method update at <tmp> line 1?  in block <unit> at <tmp> line 1??»
16:25 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; $!::("$attr") = 43; say $.bar } }; Foo.new.update
16:25 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Confused?at <tmp>:1?------> 2; method update { my $attr = "bar"; $!:7?5:("$attr") = 43; say $.bar } }; Foo.new.?    expecting any of:?        colon pair?»
16:25 raschipi m: my @a_var = 42; @::("a_var")= 10; say @a_var;
16:25 camelia rakudo-moar 2fb8c7: OUTPUT: «[10]?»
16:25 Juerd I don't have a 'my' though.
16:26 Juerd It's a 'has'
16:28 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; $."$attr" = 43; say $.bar } }; Foo.new.update
16:28 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Unsupported use of $. variable; in Perl 6 please use the .kv method on e.g. .lines?at <tmp>:1?------> 42; method update { my $attr = "bar"; $.7?5"$attr" = 43; say $.bar } }; Foo.new.upd?»
16:29 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; $."$attr"() = 43; say $.bar } }; Foo.new.update
16:29 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Unsupported use of $. variable; in Perl 6 please use the .kv method on e.g. .lines?at <tmp>:1?------> 42; method update { my $attr = "bar"; $.7?5"$attr"() = 43; say $.bar } }; Foo.new.u?»
16:29 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; self."$attr"() = 43; say $.bar } }; Foo.new.update
16:29 camelia rakudo-moar 2fb8c7: OUTPUT: «Cannot modify an immutable Int (42)?  in method update at <tmp> line 1?  in block <unit> at <tmp> line 1??»
16:30 raschipi And you want those available as fields of the object?
16:30 Juerd They already are. I have an existing code base that I'd like to give extra functionality.
16:31 geekosaur there's also some MOP stuff to get at attributes
16:31 Juerd I'm tempted to just slap "is rw" on everything :|
16:31 [Coke] the latest example committed to the Str type has a failure in the example, which is an actual bad example. Maybe we should turn these on by default.
16:35 TEttinger joined #perl6
16:35 Juerd m: class Foo { has $.bar = 42; method update { my $attr = "bar"; self!"$attr"() = 43; say $.bar } }; Foo.new.update
16:35 camelia rakudo-moar 2fb8c7: OUTPUT: «No such private method '!!bar' for invocant of type 'Foo'. Did you mean 'bar'??  in method update at <tmp> line 1?  in block <unit> at <tmp> line 1??»
16:35 Juerd Where does that second ! come from?
16:36 raschipi Juerd: You should look into the FALLBACK method and put the attributes into a Hash.
16:38 Juerd raschipi: I'll eval a string before I get rid of regular attributes.
16:38 raschipi So you need to look into the metamodel so that you can add and remove attributes at runtime.
16:38 Juerd I don't have to add attributes, I only need to change their values :)
16:38 Cabanossi joined #perl6
16:38 andrss joined #perl6
16:39 andrss left #perl6
16:39 andrss joined #perl6
16:40 andrss if there're a value of some type A and a another value of type B, and also .B method defined in A. is there a way of calling B methods on A objects?
16:40 raschipi Well, you can also get their names and bind a working variable to them.
16:40 mcmillhj joined #perl6
16:41 Juerd andrss: I'm not sure if I understand your question, but maybe you're looking for https://docs.perl6.org/language/operators#index-entry-class-qualified_method_call
16:41 andrss aka. implicit conversions in Scala
16:42 Zoffix m: class Foo { has $.bar = 42; method !bar is rw { $!bar }; method update { my $attr = "bar"; self!"$attr"() = 43 } }; with Foo.new { .update; .bar.say }
16:42 camelia rakudo-moar 2fb8c7: OUTPUT: «43?»
16:42 jnthn m: class A { has $.x; has $.y; method update(*%updates) { self.BUILDALL((), %updates) } }; my $a = A.new(x => 1, y => 2); say $a; $a.update(x => 3, y => 4); say $a; $a.update(x => 5); say $a
16:42 camelia rakudo-moar 2fb8c7: OUTPUT: «A.new(x => 1, y => 2)?A.new(x => 3, y => 4)?A.new(x => 5, y => 4)?»
16:42 Zoffix hah jnthn++
16:43 geekosaur andrss, if the point of .B is to provide a value of type B for a value of type A, you may want the handles trait?
16:44 geekosaur otherwise I wonder if this is A(B) coercion stuff
16:44 Juerd jnthn: Thanks so much! I was just looking into the implementation of BUILDALL to see how it works, not realizing it could just be called again
16:45 andrss &prefix:<~> honors .Str method on object, right?
16:45 andrss i wonder about more general case
16:45 [Coke] Zoffix: you added the word "thunking" in a recent doc patch. It's only used in a few places, defined as a noun, not as a verb in the glossary; can you perhaps rephrase that sentence? (and or expand the glossary entry and link to it?)
16:46 Zoffix andrss: yeah
16:46 Zoffix andrss: though I'd say that's not guaranteed on Str objects (though it does call .Str on allomorphs)
16:47 Zoffix s: &prefix:<~>, \("")
16:47 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/2fb8c72/src/core/Str.pm#L2794
16:47 Zoffix Rakudo calls .Str even then tho
16:48 Actualeyes left #perl6
16:49 Zoffix [Coke]: TBH, I think I'm just gonna stop committing to docs.
16:49 andrss s: &prefix<~>, Any
16:49 SourceBaby andrss, Something's wrong: ?ERR: ===SORRY!=== Error while compiling -e?Undeclared routine:?    prefix used at line 6??
16:50 Zoffix It's not helping me any, and any time I commit something I'm getting told to fix a typo or rephrase stuff, even after I thought we agreed that'll be done once a month during release time.
16:50 andrss m: class Foo { method Str { 'hi' }}; say(~Foo)
16:50 camelia rakudo-moar 2fb8c7: OUTPUT: «hi?»
16:50 Zoffix If you want stellar commits at the cost of fewer contributors, be my guest.
16:51 Geth ¦ doc: 8ef3c500bd | (Zoffix Znet)++ | doc/Type/Str.pod6
16:51 Geth ¦ doc: Revert "Restructure .subst with Callables section"
16:51 Geth ¦ doc:
16:51 Geth ¦ doc: This reverts commit d54b95568f871c157651a47c265b943206786c8f.
16:51 Geth ¦ doc: review: https://github.com/perl6/doc/commit/8ef3c500bd
16:52 andrss Zoffix: are you sure this chunk does it? I was expecting &prefix<~> defined for Any and doing $_.?Str
16:52 Zoffix andrss: you didn't use the bot correctly. It expects a Capture, not just a type
16:53 Zoffix s: &prefix<~>, \(Any)
16:53 SourceBaby Zoffix, Something's wrong: ?ERR: ===SORRY!=== Error while compiling -e?Undeclared routine:?    prefix used at line 6??
16:53 Zoffix s: &prefix:<~>, \(Any)
16:53 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/2fb8c72/src/core/Stringy.pm#L15
16:53 Zoffix buggable: eco sourcery
16:53 buggable Zoffix, CoreHackers::Sourcery 'Helper for showing actual source code locations of core subs and methods': https://github.com/zoffixznet/perl6-CoreHackers-Sourcery
16:53 Zoffix ^ you can use that module to look up source locally.
16:53 mr-fooba_ joined #perl6
16:54 Zoffix Though, don't assume a specific behaviour just because the source code shows it. What rakudo does doesn't define the language, the spec does.
16:54 andrss great feature. I would love it in the repl. Or as .^source
16:54 setty1 joined #perl6
16:55 Zoffix -1 on that. Even without the feature people peek at the source and assume a specific behaviour and use undocumented/unspecced features, which makes it problematic for us to improve them later on
16:56 cdg joined #perl6
16:58 andrss so there's no possible general case for such conversions
17:00 Zoffix andrss: what? .Str? You can override .Str method to define how your object is stringified (and .gist if you want say() to stringify differently)
17:00 Zoffix That happens for all objects, other than Str
17:00 Zoffix m: class Foo { method Str { "
17:00 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Unable to parse expression in double quotes; couldn't find final '"' ?at <tmp>:1?------> 3class Foo { method Str { "7?5<EOL>?    expecting any of:?        double quotes?        term?»
17:00 Zoffix oops
17:01 andrss I understand that. But what if it's not Str but some arbitrary class
17:01 [Coke] Zoffix: so is there a better way to give you feedback on the actual text?
17:01 Zoffix m: class Foo { method Str { "teh Str" }; method gist { "teh gist" }; method Numeric { 42 } }; dd [+$_, ~$_, ] with Foo.new
17:01 camelia rakudo-moar 2fb8c7: OUTPUT: «[42, "teh Str"]?»
17:01 Zoffix m: class Foo { method Str { "teh Str" }; method gist { "teh gist" }; method Numeric { 42 } }; .say with Foo.new
17:01 camelia rakudo-moar 2fb8c7: OUTPUT: «teh gist?»
17:02 Zoffix andrss: yeah, what I'm saying is that's the method to define on arbitrary classes.
17:02 [Coke] I get your stance on examples, whitespace, etc., which is why none of those were specifically addressed to you.
17:02 andrss m: class A { method B { B.new }}; class B {}; sub foo(B:D $b) { say "hi" }; foo(A.new)
17:02 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Illegally post-declared type:?    B used at line 1??»
17:03 Zoffix m: class B {…}; class A { method B { B.new }}; class B {}; sub foo(B:D() $b) { say "hi" }; foo(A.new)
17:03 camelia rakudo-moar 2fb8c7: OUTPUT: «Type check failed in binding to parameter '$b'; expected B but got A (A.new)?  in sub foo at <tmp> line 1?  in block <unit> at <tmp> line 1??»
17:03 andrss m: class B {};class A { method B { B.new }};  sub foo(B:D $b) { say "hi" }; foo(A.new)
17:03 camelia rakudo-moar 2fb8c7: OUTPUT: «Type check failed in binding to parameter '$b'; expected B but got A (A.new)?  in sub foo at <tmp> line 1?  in block <unit> at <tmp> line 1??»
17:03 Zoffix m: class B {…}; class A { method B { B.new }}; class B {}; sub foo(B() $b) { say "hi" }; foo(A.new)
17:03 camelia rakudo-moar 2fb8c7: OUTPUT: «hi?»
17:03 Zoffix andrss: that works. Should work on B:D, but I guess that's a bug there
17:05 Zoffix Filed as https://rt.perl.org/Ticket/Display.html?id=131791
17:07 Zoffix And there are tentative plans to expand the coercer feature so that if `B() $b` where $b is `A` fails (which does it by calling .B on $b), to try `B.from-A($b)`. This way you could write, say sub (Foo(Int) $a) {...} and have it work, without having to augment core Int class to stick method Foo into it
17:07 Zoffix likely not with that method name but this sort of mechanism
17:08 jnthn I thought it was just going to be the 1-arg constructor. :)
17:08 jnthn B.new($b)
17:08 jnthn That's what's mentioned in the design docs, anyways.
17:08 Dunearhp joined #perl6
17:09 andrss m: class B {};class A { method B { B.new }};  sub foo(B(A) $b) { say "hi" }; foo(A.new)
17:09 camelia rakudo-moar 2fb8c7: OUTPUT: «hi?»
17:09 andrss thanks.
17:09 andrss still not implicit though
17:10 andrss m: class B {};class A {}; augment class A { method B { B.new } }; sub foo(B(A) $b) { say "hi" }; foo(A.new)
17:10 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?augment not allowed without 'use MONKEY-TYPING'?at <tmp>:1?------> 3class B {};class A {}; augment class A7?5 { method B { B.new } }; sub foo(B(A) $b?    expecting any of:?        generic rol…»
17:11 Zoffix jnthn: that makes more sense, yeah
17:11 andrss m: USE MONKEY-TYPING; class B {};class A {}; augment class A { method B { B.new } }; sub foo(B(A) $b) { say "hi" }; foo(A.new);
17:11 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?augment not allowed without 'use MONKEY-TYPING'?at <tmp>:1?------> 3; class B {};class A {}; augment class A7?5 { method B { B.new } }; sub foo(B(A) $b?    expecting any of:?        generic r…»
17:11 Zoffix use not USE
17:12 andrss m: use MONKEY-TYPING; class B {};class A {}; augment class A { method B { B.new } }; sub foo(B(A) $b) { say "hi" }; foo(A.new);
17:12 camelia rakudo-moar 2fb8c7: OUTPUT: «hi?»
17:13 cdg_ joined #perl6
17:13 mr-foobar joined #perl6
17:15 unop joined #perl6
17:15 domidumont joined #perl6
17:17 domidumont joined #perl6
17:21 wamba joined #perl6
17:24 liztormato joined #perl6
17:32 Juerd https://github.com/Juerd/shalog/commit/5e91359fef757d0164c8013785e4155f50fe5fd3  # jnthn's BUILDALL suggestion works well.
17:33 Juerd And meh, I messed up that commit :(
17:33 Juerd Second hunk shouldn't be in it.
17:37 Geth ¦ doc: f99445fed6 | (Zoffix Znet)++ | doc/Type/Str.pod6
17:37 Geth ¦ doc: Revert "Revert "Restructure .subst with Callables section""
17:37 Geth ¦ doc:
17:37 Geth ¦ doc: This reverts commit 8ef3c500bd82460d7bd6f2f7f9d9759154f908e9.
17:37 Geth ¦ doc: review: https://github.com/perl6/doc/commit/f99445fed6
17:37 Geth ¦ doc: 2b7895b8f0 | (Zoffix Znet)++ | doc/Type/Str.pod6
17:37 Geth ¦ doc: Make xtest pass
17:37 Geth ¦ doc: review: https://github.com/perl6/doc/commit/2b7895b8f0
17:37 dha joined #perl6
17:47 itaipu joined #perl6
17:55 itaipu joined #perl6
18:03 robertle joined #perl6
18:06 gdonald joined #perl6
18:08 raschipi What would be an easy way to return itens from a list until one element matches a condition?
18:08 Juerd Bufs are hard to work with.
18:09 moritz raschipi: gather for @items { last if $condition; take $_ }
18:10 moritz m: my @a = 1, 5, 3, 7, 8, 4, 10; say gather for @a { last if $_ > 6; take $_ }
18:10 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 5 3)?»
18:10 * Juerd really wants buf literals and string operators :(
18:10 raschipi I really wanted a .head that accepted the same argument as .first, I think it would be useful (just a request)
18:11 moritz m: my @a = 1, 5, 3, 7, 8, 4, 10; say[^@a.first(*>=6, :k)]
18:11 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Use of non-subscript brackets after "say" where postfix is expected; please use whitespace before any arguments?at <tmp>:1?------> 3my @a = 1, 5, 3, 7, 8, 4, 10; say7?5[^@a.first(*>=6, :k)]?   …»
18:11 moritz m: my @a = 1, 5, 3, 7, 8, 4, 10; say @a[^@a.first(*>=6, :k)]
18:11 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 5 3)?»
18:12 moritz m: my @a = 1, 5, 3, 7, 8, 4, 10; say @a.grep({last if * >= 6; 1})
18:12 camelia rakudo-moar 2fb8c7: OUTPUT: «()?»
18:12 moritz m: my @a = 1, 5, 3, 7, 8, 4, 10; say @a.grep({last if $_ >= 6; 1})
18:12 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 5 3)?»
18:14 raschipi Noice, that works beautifully.
18:22 TimToady m: my @a = 1, 5, 3, 7, 8, 4, 10; say @a ...^ * >= 6
18:22 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 5 3)?»
18:22 moritz TimToady: that's kinda scary
18:23 TimToady well, "return itens from a list until one element matches a condition" is pretty much the definition of the sequence operator
18:25 Zoffix TimToady: there's a PR for Version that waits what you think on it: https://github.com/rakudo/rakudo/pull/1118#issuecomment-316624260
18:25 moritz TimToady: I realized that, but I've never used the series operator with an explicit generator
18:30 Zoffix m: say 1..4 ... 7..10
18:30 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 2 3 4 5 6 7 8 9 10)?»
18:30 Zoffix :)
18:32 Zoffix m: say 1...4 ... 4...1 ... 1...4 ... 4...1
18:32 camelia rakudo-moar 2fb8c7: OUTPUT: «(1 2 3 4 3 2 1 2 3 4 3 2 1)?»
18:36 TimToady Zoffix: commented on it
18:36 Zoffix Thanks.
18:41 lizmat joined #perl6
18:57 sufrostico joined #perl6
19:09 [Coke] Zoffix++
19:29 ufobat joined #perl6
19:29 * lizmat starts on the Perl 6 Weekly
19:32 stmuk_ lizmat: http://rakudo.org/2017/07/24/announce-rakudo-star-release-2017-07/
19:32 lizmat stmuk_++
19:33 moritz stmuk_++ indeed
19:34 Zoffix stmuk_: the files are missing or something. I see Win64 turned up since the first email on the mailing list, but the .dmg is still missing. Still uploading?
19:35 stmuk_ yeah still building .. should be a matter of mins
19:38 Zoffix hehe. Test::When made into R*.
19:38 Zoffix ZofBot: my plan for world domination is progressing!
19:39 Zoffix I guess I should write a blog post about what that module is about and why people should use it.
19:41 ufobat joined #perl6
19:41 * lizmat doesn't understand the use case for https://github.com/moznion/p6-Object-Container
19:43 raschipi It's... a Hash, but slower?
19:44 Zoffix The docs say it's for DI, which I'm guessing Dependency Injection
19:44 Zoffix Hashes aren't lazy
19:44 * dha starts having pseudohash flashbacks
19:46 ufobat can i export a sub from a module that is not implemented, but imported into this module?
19:48 Geth_ ¦ perl6.org: b161043cc1 | (Steve Mynott)++ | 2 files
19:48 Geth_ ¦ perl6.org: Rakudo Star 2017.07 release
19:48 Geth_ ¦ perl6.org: review: https://github.com/perl6/perl6.org/commit/b161043cc1
19:48 El_Che lizmat: new rakudo linux pkgs for 2017.07 as well. New: support for freshly released fedora 26, eol of ubuntu 16.10 ( only 16.04lts and 17.04)
19:48 lizmat El_Che++
19:49 Zoffix m: '/tmp/foo42'.IO.mkdir; '/tmp/foo42/Foo.pm6'.IO.spurt: 'use Test; sub EXPORT { { "&is" => &is } }'
19:49 camelia rakudo-moar 2fb8c7: OUTPUT: «Failed to open file /tmp/foo42/Foo.pm6: Not a directory?  in block <unit> at <tmp> line 1??»
19:49 Zoffix m: '/tmp/foozzz42'.IO.mkdir; '/tmp/foozzz42/Foo.pm6'.IO.spurt: 'use Test; sub EXPORT { { "&is" => &is } }'
19:49 camelia rakudo-moar 2fb8c7: ( no output )
19:49 Zoffix m: use lib </tmp/foozzz42>; use Foo; is 1, 1;
19:49 camelia rakudo-moar 2fb8c7: OUTPUT: «ok 1 - ?»
19:50 Zoffix ufobat: ^ yup
19:50 * Zoffix &
19:50 stmuk_ ok mac dmg uploaded
19:50 stmuk_ b33r and Game of Thrones!
19:51 ufobat Zoffix, :) thank you
19:52 ufobat sub EXPORT "does" the same as package EXPORT::DEFAULT, right?
19:53 ufobat ahh found it in the documentation
19:54 ufobat if feels as if both approaches can do pretty much the same, why are there 2 versions of exporting? next to the simple "is export"?
19:58 cdg joined #perl6
20:00 andrss left #perl6
20:01 ggoebel joined #perl6
20:06 Zoffix ufobat: that probably suggests they're not the same :)
20:06 lizmat ufobat: TIMTOWTDI ?
20:07 ufobat hah! so there is something that can just achived one way - or how are they not the same?
20:08 Zoffix ufobat: one thing the docs mention is: "Whereas UNIT::EXPORT packages deal with the named parameters passed to use, the EXPORT sub handles positional parameters."
20:09 ufobat AH!
20:09 ufobat thank you very much :)
20:12 lizmat El_Che: I'm lazy, where can your linux packages be found again ?
20:12 Zoffix huggable: deb
20:12 huggable Zoffix, CentOS, Debian, Fedora and Ubuntu Rakudo packages: https://github.com/nxadm/rakudo-pkg/releases
20:12 Zoffix lizmat: there ^
20:12 lizmat thank Zoffix++ El_Che++
20:15 El_Che is the naming discussion still going? My pkgs have a spanish type of name: perl6-rakudo-moarvm-debian8.7_20170700-01_amd64.deb
20:15 El_Che Juan Gonzalez de la Mancha de la Comunión Immaculada
20:15 ufobat i cant get the sub EXPORT working on my perl wich is 2017.06 *confused*
20:16 ufobat the package EXPORT::DEFAULT thingy works
20:33 Zoffix ufobat, what's the issue?
20:33 Zoffix El_Che: yes, the naming discussion will go on until about a month before 6.d release
20:34 Zoffix El_Che: comment on this thread: https://www.reddit.com/r/perl6/comments/6lstq3/the_hot_new_language_named_rakudo/
20:35 raschipi So, September. We just don't know which.
20:35 Zoffix No, this year, between September and December
20:37 Zoffix And to remind: the current discussion is whether and with what to extend "Perl 6" name. There's not enough consensus to abandon that name entirely.
20:42 dha Can we just call it Fred and be done with it?
20:42 dha ;-)
20:43 Zoffix Nope.
20:44 Zoffix Why Fred? :)
20:44 [Coke] she was awesome on Angel.
20:45 lizmat .oO( it's better than Lrep )
20:45 dha I'm probably making a Spike Milligan reference. Or I was subconsiously thinking of Amy Acker. You can never tell with me. :-)
20:49 cdg joined #perl6
20:51 popov_ joined #perl6
20:56 unop joined #perl6
21:00 DBeepBeep joined #perl6
21:03 DBeepBeep I'm having some trouble using a module I made. It's saying, "Cannot import symbol, SYMBOL, from MODULE because it already exists in this lexical scope. I can't find any information on what this means.
21:03 timotimo m: sub is { }; use Test
21:03 camelia rakudo-moar 2fb8c7: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Cannot import symbol &is from Test, because it already exists in this lexical scope?at <tmp>:1?------> 3sub is { }; use Test7?5<EOL>?»
21:04 timotimo it means that something the module has in it would override something you already have in your code
21:04 popov_ joined #perl6
21:04 timotimo m: use Test; use Test;
21:04 camelia rakudo-moar 2fb8c7: ( no output )
21:05 timotimo interesting
21:05 zengargoyle wouldn't the second one be optimized away?
21:06 DBeepBeep I figured that's what the problem is, but I can't find any duplication besides a 'use v6;'
21:06 timotimo dunno
21:06 jnthn timotimo: It doesn't whine if the symbol you're installing is precisely the one that's already there
21:06 timotimo ah, right
21:06 timotimo that's what we "merge" things for
21:07 jnthn DBeepBeep: Maybe try before the use statement that errors something like BEGIN say SYMBOL.perl; to see what's already there
21:09 zengargoyle DBeepBeep: do you have your code up somewhere?  did you figure out yesterday's testing question?
21:10 colomon_ joined #perl6
21:11 zengargoyle does anybody know... do you have to have a github account to use git: URLs?
21:12 zengargoyle re: backlog where rakudobrew was failing for someone when using git: but worked with https: URLx
21:12 geekosaur you don't, but I think https is preferred unless you are planning to push to a git: url
21:12 geekosaur iirc
21:13 DBeepBeep zengargoyle: I can throw the code up on gitlab in a second
21:13 geekosaur and that kind of failure could be specifying auth incorrectly/inappropriately, or a proxy that only works for http/https, or anything in between
21:13 zengargoyle might have been a firewall or other blocking that caused that user a problem... rakudobrew uses the git: version.
21:13 zengargoyle yeah.
21:16 mspo you shouldn't push via git:// since it doesn't offer tls
21:16 mspo git+ssh:// is okay
21:16 mspo (although in that case just using ssh:// is fine)
21:18 zengargoyle rather than editing rakudobrew stuff to make it use https: i think it may have been possible to manually create the git_reference dir with https: clones ...  but probably rakudobrew should use https:
21:18 geekosaur I was kinda including that in there, the point being more that the git protocol (with or without tls) is not optimal for pull-only
21:18 geekosaur iirc
21:18 zengargoyle mspo: never thought about that....
21:19 geekosaur in addition to things like not always playing well with proxies and the like
21:19 Zoffix__ joined #perl6
21:20 zengargoyle i wonder why github doesn't put git+ssh: in their dropdown menu for cloning?
21:21 * zengargoyle guess i always thought it would magically upgrade to secure.
21:21 [Coke] zengargoyle: you can get the ssh link if you click on the 'use SSH' link
21:22 mspo isn't git:// just for non-logged-in?
21:22 mspo I thought it defaulted to https or ssh
21:22 zengargoyle the Clone with SSH link still shows git:
21:26 zengargoyle ah, nm, it's git@github.com:
21:26 zengargoyle not git:
21:29 DBeepBeep zengargoyle: https://gitlab.com/nathanielchanning/Beep-Board
21:29 DBeepBeep I'm trying to run it with 'perl6 -I lib/ t/Parser.t'
21:33 mspo zengargoyle: yeah that's gitolite-style hooks
21:34 mspo ssh for encryption bit "common" user (git) with AA by shell scripts
21:34 mspo although I would assume github is using ruby
21:35 zengargoyle looks like you can't do Beep-Tag::Parser and export a Beep-Tag grammar.
21:36 zengargoyle because the Beep-Tag grammar that you want to export collides with the Beep-Tag of Beep-Tag::Parser.
21:36 DBeepBeep I've tried switching the name of it, but I can try again
21:41 zengargoyle use-ok doesn't actually 'use' the module (i think)...  add 'use Beep-Tag::Parser;' after the use-ok test.  rename grammar to 'G' and remove is export; do Beep-Tag::Parser::G.new; and all your tests pass! :)
21:42 zengargoyle really i'm not sure about the clever naming and importing stuff but i can make it work by being a bit less clever.
21:43 dugword joined #perl6
21:43 cdg joined #perl6
21:43 zengargoyle but you can start from there and know it works and then go back and tweak things to make the usage easier?
21:44 DBeepBeep zengargoyle: Yep, thatnks
21:47 zengargoyle DBeepBeep: if you have it installed (it's from Perl 5, but likely you have it): prove -e 'perl6 -Ilib' t/Parser.t -v
21:49 zengargoyle is the regular testing thing (but i use just what you used often enough when printing out stuff while getting it to actually work :) )
21:51 zengargoyle and you can give prove just 't' and it will runn all the .t tests when you add more.
21:51 DBeepBeep Okay, thanks
21:53 Juerd The first time running a program after upgrading Rakudo is scary.
21:53 popov_ joined #perl6
21:53 Juerd A few seconds of suspense
21:54 popov_ joined #perl6
21:55 zengargoyle DBeepBeep: i think it's using the same name for things.  you can do 'grammar Beep-Tag-Parser is export' and 'use Beep-Tag::Parser' and just use
21:55 zengargoyle Beep-Tag-Parser.new;
21:57 kybr joined #perl6
21:57 zengargoyle Juerd: did you see nine's answer to my precomp question earlier?
22:02 Juerd zengargoyle: No
22:02 niceperl joined #perl6
22:09 cdg joined #perl6
22:09 zengargoyle Juerd: https://gist.github.com/b0b5d2a468e2796833d5bda46a507c78
22:10 zengargoyle haven't tested, but probably works... :)
22:10 Juerd Ooh, this is like Jeopardy. I get to guess the question based on the answer? :)
22:11 Juerd "How can you precompile all installed modules?"
22:11 zengargoyle bingo!
22:16 * zengargoyle is keeping a 'cool.p6' file that collects snippets of wizardry.  hopefully, eventually, i'll clean it up and github it or make a fortune file out of it.
22:17 zengargoyle or channel the Z and make a bot. :)
22:25 Juerd Does anyone have an opinion about modules with horrible source code, in the ecosystem?
22:25 Juerd I'm considering releasing https://github.com/Juerd/shalog/blob/master/lib/Prompt.pm as a separate module
22:26 Juerd Although it's horrific, it's useful, and I already have a second project that could benefit from it.
22:26 Juerd Hopefully in the future the horrible parts can be replaced
22:29 zengargoyle better than some of mine. :)  we have :auth<> and :ver<> so anything is better than nothing.
22:30 * zengargoyle has that lcp in cool.p6 already...
22:30 Juerd I copied it because I have no idea how it works
22:31 Juerd It's a bit too terse for me :)
22:33 lizmat and another Perl 6 Weekly hits the Net: https://p6weekly.wordpress.com/2017/07/24/2017-30-starring-fresh-produce/
22:34 zengargoyle i have a mostly done linear equation solver for balancing chemical formulas and a maze-solver laying around because i don't really know how they work. :P
22:36 zengargoyle (and i wanted to do multi-thread/proc for the maze but that wasn't finished at the time)
22:36 timotimo lizmat: there's a rendering bug (?) "a <a source release"
22:36 timotimo sorry, "source version" it says
22:38 gdonald joined #perl6
22:38 Cabanossi joined #perl6
22:39 * lizmat checks
22:40 lizmat timotimo++ # fixed
22:41 timotimo hm, i'm not sure "made sure" (in the part about me) really fits
22:43 lizmat you mean, because this fix is not 100% sure to work ?
22:44 lizmat timotimo: ^^^  ??
22:46 timotimo yeah
22:46 timotimo i think things can still crash and burn
22:46 timotimo but i think the case where it just continues reading bytecode from the newly installed file at incorrect offsets is gone
22:46 lizmat well, that's good enough for me now  :-)
22:47 lizmat so I'm going to call it a day
22:47 lizmat "a day"
22:47 lizmat and good night!
22:47 timotimo OK
22:47 timotimo good night!
22:47 Zoffix__ lizmat++ #g good weekly
22:49 audiatorix joined #perl6
22:49 audiatorix Hey peeps
22:50 audiatorix I've made a Discord server dedicated to perl (5 & 6). Is it okay to post an invite link?
22:52 audiatorix I'd like to get some people involved
22:52 timotimo i don't think anybody would complain
22:53 audiatorix Anyone is free to join. Roles have to be added manually right now, but I am working on a bot (in perl 6 of course) to handle roles https://discord.gg/T2PN9nV
22:54 audiatorix Sadly the module for Discord on the ecosystem is not perfect
23:04 dolmen_ joined #perl6
23:10 BenGoldberg joined #perl6
23:23 zoll joined #perl6
23:29 Geth ¦ doc: be8b759937 | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Type/Str.pod6
23:29 Geth ¦ doc: Remove confusing base-10 mention
23:29 Geth ¦ doc:
23:29 Geth ¦ doc: Resolves issue #1011.
23:29 Geth ¦ doc:
23:29 Geth ¦ doc: I couldn't find an easy way to rephrase it so that it doesn't mention
23:29 Geth ¦ doc: base 10 in a confusing way, but I figured that not mentioning the
23:29 Geth ¦ doc: resulting base resolves the issue.
23:29 Geth ¦ doc: review: https://github.com/perl6/doc/commit/be8b759937
23:38 Cabanossi joined #perl6
23:47 Zoffix__ left #perl6

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

Perl 6 | Reference Documentation | Rakudo