Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-11-28

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:06 rurban1 joined #perl6
00:07 Ben_Goldberg joined #perl6
00:08 lue It's possible, though the question suddenly elevates from being just about lists to the entirety of Perl 6. "Are these new roles generally useful enough to be roles instead of methods?"
00:09 lue I think an .indefinite method to complement the .infinite method is the best course of action for what you ran into. Though I could be totally wrong :)
00:10 TimToady in any case, 'for' should not be making its list eager merely because it isn't sure whether it's infinite or not
00:10 TimToady it *is* allowed to batch things up, which could have the same effect here
00:11 TimToady but I don't think that's what's happening, since it never returns if you raise the 5 to 10000000
00:12 diakopter maybe you didn't wait long enough [for it to return]
00:13 lue (one situation where indefinite ≠ infinite : my Int $a; [snip] for 1..$a { . What would/should happen here?)
00:15 TimToady if a gather can't produce at least one batch per second, I think the batches are too big
00:18 TimToady in this case, however, I think think the bug is that the batch size is equal to the list size :)
00:26 lue Is there a non-path-manipulating way to specify a path relative from the file's directory, not wherever the script was run from? ($*SWD or something?)
00:27 TimToady do you mean the executable file?
00:27 diakopter I'm executable
00:28 TimToady you're the rank, not the file
00:29 diakopter well, joker, if not ace
00:29 * TimToady looks around for a card file
00:29 lue as in, if a script in bin/ wants to access a file in share/ , I'd like to be able to do "$*SWD../share" or similar, instead of trying to find where the bin/ directory is and mess with the path resulting.
00:30 diakopter dewey decimal got flattened to a string hash
00:30 lue (because running the script in bin from bin/ or from ./ or from share/ all change the $*CWD and thus how relative paths work.)
00:30 TimToady nr: say $*EXECUTABLE_NAME
00:30 camelia rakudo-jvm e5fd34: OUTPUT«perl6-j␤»
00:30 camelia ..rakudo-parrot e5fd34: OUTPUT«./rakudo-inst/bin/perl6-p␤»
00:30 camelia ..niecza v24-98-g473bd20: OUTPUT«/home/p6eval/niecza/run/Niecza.exe␤»
00:30 diakopter heh
00:31 rurban1 joined #perl6
00:31 TimToady nr: say $*EXECUTABLE_NAME.basename
00:31 diakopter well, Niecza.exe isn't technically executable from that shell
00:31 camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Unable to resolve method basename in type Str␤  at /tmp/zHwQA_6d6X line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576)…»
00:31 camelia ..rakudo-parrot e5fd34: OUTPUT«No such method 'basename' for invocant of type 'Str'␤  in block  at /tmp/dp91pC7rQ3:1␤  in any  at /tmp/dp91pC7rQ3:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/par…»
00:31 camelia ..rakudo-jvm e5fd34: OUTPUT«No such method 'basename' for invocant of type 'Str'␤  in block  at /tmp/S3asVAwor7:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in…»
00:31 TimToady nr: say $*EXECUTABLE_NAME.path.basename
00:31 camelia niecza v24-98-g473bd20: OUTPUT«Niecza.exe␤»
00:31 camelia ..rakudo-jvm e5fd34: OUTPUT«perl6-j␤»
00:31 camelia ..rakudo-parrot e5fd34: OUTPUT«perl6-p␤»
00:31 diakopter well, Niecza.exe isn't technically executable from that shell
00:31 TimToady r: say $*EXECUTABLE_NAME.path.dirname
00:31 camelia rakudo-parrot e5fd34: OUTPUT«No such method 'dirname' for invocant of type 'IO::Path'␤  in block  at /tmp/PuZAHYr1nQ:1␤  in any  at /tmp/PuZAHYr1nQ:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen…»
00:31 camelia ..rakudo-jvm e5fd34: OUTPUT«No such method 'dirname' for invocant of type 'IO::Path'␤  in block  at /tmp/t4gMvb7Ik6:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤…»
00:32 TimToady hmm, not that variable
00:32 diakopter (not all linuces have the extension that makes it able to run .exe with mono)
00:32 lue (If I do have to find the path leading to the file and muck with it, that's fine, but I feel like $*SWD should be a common enough desire to exist.)
00:32 TimToady r: say $*PROGRAM_NAME.path.dirname
00:32 camelia rakudo-jvm e5fd34: OUTPUT«No such method 'dirname' for invocant of type 'IO::Path'␤  in block  at /tmp/t7l5xid5Sx:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤…»
00:32 camelia ..rakudo-parrot e5fd34: OUTPUT«No such method 'dirname' for invocant of type 'IO::Path'␤  in block  at /tmp/cV3XDO4X39:1␤  in any  at /tmp/cV3XDO4X39:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen…»
00:32 lue r: say IO::Path.^methods
00:32 camelia rakudo-jvm e5fd34: OUTPUT«SPEC dir BUILD path parts basename directory volume Bridge Int succ pred IO open is-absolute is-relative absolute relative cleanup resolve parent child copy chmod contents f w accessed d e s r l z x modified changed new Str gist perl Numeric␤»
00:32 camelia ..rakudo-parrot e5fd34: OUTPUT«SPEC dir BUILD path parts basename directory volume Bridge Int succ pred IO open is-absolute is-relative absolute relative cleanup resolve parent child copy chmod contents d e f s l r w x z modified accessed changed new Str gist perl Numeric␤»
00:32 TimToady r: say $*PROGRAM_NAME.path.directory
00:33 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«/tmp␤»
00:33 TimToady there you go
00:33 lue TimToady++ . I'll go assign that to $*SWD just because :P
00:35 TimToady what is this 'S' of which you speak?
00:35 lue S = Script. I made it up.
00:35 fridim__ joined #perl6
00:35 lue (the SWD abbrv. that is)
00:35 TimToady but what if it's not a script? :P
00:36 lue I was thinking File Working Directory, but I figure $*FWD is not the most unambiguous of names :)
00:36 TimToady obviously it should be $*PWD...er...
00:37 TimToady actually, it should just be $*PROGRAM_PATH
00:37 TimToady :)
00:38 TimToady 'path' being one of those words that means about 1.5 too many things in Unixland
00:38 lue or $*FPATH, because I don't feel like typing out two whole words for something like that, esp. considering $*CWD and $*PWD precedent. :)
00:39 lue We could go the sed route and just do $*YWD
00:39 TimToady but it does seem kinda wrongish to backderive the path from the name somehow
00:40 TimToady since the name probably had to be glued together from path components in an OS-dependant way in the first place...
00:40 lue I imagine the file's directory doesn't come up often in general, but writing P6 modules with external data sorta makes it necessary.
00:40 TimToady r: say $*PROGRAM_NAME.path.name
00:40 bluescreen100 joined #perl6
00:40 camelia rakudo-parrot e5fd34: OUTPUT«No such method 'name' for invocant of type 'IO::Path'␤  in block  at /tmp/BIXqgKqa8K:1␤  in any  at /tmp/BIXqgKqa8K:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/pa…»
00:40 camelia ..rakudo-jvm e5fd34: OUTPUT«No such method 'name' for invocant of type 'IO::Path'␤  in block  at /tmp/YEVimYjtGK:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  i…»
00:41 TimToady r: say $*PROGRAM_NAME.path.Str
00:41 camelia rakudo-parrot e5fd34: OUTPUT«/tmp/yxN7MpfZKT␤»
00:41 camelia ..rakudo-jvm e5fd34: OUTPUT«/tmp/2tZuUTIc7s␤»
00:41 TimToady maybe $*PROGRAM and $*EXECUTABLE should be of type IO::Path, and we just pull the name out if we want it
00:43 lue rn: say $*PROGRAM_NAME.WHAT
00:43 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34, niecza v24-98-g473bd20: OUTPUT«(Str)␤»
00:43 TimToady r: my $*PROGRAM = $*PROGRAM_NAME.path; say "Usage: $*PROGRAM foo bar baz"
00:43 camelia rakudo-jvm e5fd34: OUTPUT«Usage: /tmp/c04XxfWVNm foo bar baz␤»
00:43 camelia ..rakudo-parrot e5fd34: OUTPUT«Usage: /tmp/Q3y32LyAIr foo bar baz␤»
00:43 TimToady since a path stringifies to the name anyway
00:44 lue TimToady: I agree. It's a bit surprising they're just Strs, actually.
00:44 TimToady r: my $*PROGRAM = $*PROGRAM_NAME.path; say $*PROGRAM.directory
00:44 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«/tmp␤»
00:44 lue ($*PROGRAM has an IO::Path, and maybe change $*PROGRAM_NAME to be = ~$*PROGRAM. i.e. make $*PROGRAM the "primary" variable here.)
00:45 TimToady we're still a bit P5-braned, "Everything is really a string, though not quite as badly as Tcl"
00:45 * TimToady likes it
00:45 TimToady gets rid of at least two unsightly underscores as well
00:46 lue I agree. I only recommended the FOO_NAME redefinition as a "backwards compatible" kind of thing, though I suspect that's not a big issue.
00:48 lue .oO(statement "use" "v6" ";"; statement "say" "\"hello world\"" ";"; ...)
00:49 TimToady we can deprecate the _NAME forms
00:49 lue Hm. TimToady: I'm not really liking the name $*EXECUTABLE for the perl6 executable being run. Feels too easily confusable with $*PROGRAM. Perhaps $*PERL6 or $*P6EXECUTABLE or something.
00:49 lue *nod* on deprecation
00:55 segomos currently running file
00:55 segomos oops
00:56 TimToady well, should be more like $*MACHINE (virtual or not)
00:57 TimToady $*SHEBANG
01:01 TimToady p5eval: $0
01:01 p5eval TimToady: /tmp/p5eval/jail/p5eval-5VKJ.pl
01:01 lue TimToady: not entirely sure someone looking for the perl6 program running the script is thinking in terms of (V)Ms, although I do admit it doesn't feel entirely out of place.
01:02 TimToady p5eval: #!/usr/bin/echo foo bar
01:02 p5eval TimToady: No output
01:03 TimToady $*INTERPRETER
01:03 TimToady to resurrect a perfectly good word
01:03 lue That sounds perfect. (Though $*COMPILER would be less characters... :D)
01:05 TimToady now I wonder if we need to distinguish the executable running as the compiler from the executable running as the interpreter, given we might do separate compilation of the main unit someday
01:06 TimToady should probably be $?COMPILER and $*INTERPRETER in that case...
01:08 BenGoldberg joined #perl6
01:08 TimToady though $*VM probably covers the latter, albeit not as an IO::Path object
01:11 lue $*VM<Path> perhaps?
01:16 prevost joined #perl6
01:17 TimToady doesn't feel quite right, probably going with $*SHEBANG for now, since that #! path is precisely what leads one to the correct interpreter on Unix systems most of the time
01:19 dalek specs: 6cdd9f3 | larry++ | S (2 files):
01:19 dalek specs: change _NAME vars to IO::Path objects
01:19 dalek specs:
01:19 dalek specs: $*PROGRAM_NAME    -> $*PROGRAM
01:19 dalek specs: $*EXECUTABLE_NAME -> $?COMPILER or $*SHEBANG
01:19 dalek specs: review: https://github.com/perl6/specs/commit/6cdd9f3543
01:23 jnap joined #perl6
01:26 dalek specs: e982b42 | larry++ | S28-special-names.pod:
01:26 dalek specs: fix some IO methodname fossils
01:26 dalek specs: review: https://github.com/perl6/specs/commit/e982b42684
01:27 segomos TimToady: i always use #!/usr/bin/env perl  - how is that going to resolve?
01:28 lue And I assume $*SHEBANG doesn't actually need a #! line to work, right :)
01:28 lue s/':)'/? :)/
01:30 TimToady well, /usr/bin/env is an egregious hack to introduce a security dependency on your PATH variable :)
01:30 TimToady especially if you put . at the front of it...
01:31 TimToady so I ignore the existence of that hack, branewisely-speaking
01:32 lue segomos: unless TimToady says otherwise after reading this statement, I would think $*SHEBANG doesn't use what's presented in the #! line
01:32 TimToady it should still be the actual executable located by env
01:33 * lue learned of and has used the /usr/bin/env thing as a way to run the interp. in a location-independent fashion, though apparently just 'thing' works too...
01:34 TimToady I note that P5 successfully finds /usr/bin/perl even if you use the env trick
01:34 TimToady (and puts it into $^X)
01:36 TimToady you mean #!thing ?  No, that doesn't work on most Unixen
01:36 segomos lue: ^ ah
01:37 lue huh. I could swear it worked.
01:37 lue (I've at least seen it, but never tried it)
01:39 TimToady you usually see it on scripts coming from Windows, where it doesn't handle #! at all anyway, so it's just documentation
01:39 TimToady unless, of course, your command interpreter has been taught to handle #! somehow since I last knew...
01:40 * lue wonders if bash can be forced to handle it.
01:40 TimToady you also see #!perl there to keep Perl 5 happy, which wants to redispatch the #! for you if it doesn't contain "perl"
01:41 TimToady (which was a pre-env hack for systems that didn't know #!)
01:41 lue Whatever, I don't ever +x my scripts anyway, even if I add a shebang :) . Doesn't really affect me.
01:42 TimToady so much for the Uniform Access Principle :P
01:42 geekosaur you see it in perl scripts on non-Unix because perl only reads options from #! lines if the basename of the executable is "perl" possibly with underscores appended, and because perl can be built to do #! emulation on systems that don't have it and will then try to exec something else unless the #! executable name ends in "perl"
01:43 geekosaur (again possibly with underscores, so you used to see a lot of replacement Perl executables named perl____ or such)
01:44 geekosaur I dont think bash has builtin #! handling any more. csh did, via a hack of sorts (alias shell)
01:46 pecastro_ joined #perl6
01:50 lue uh, TimToady... how come you were able to just now update S19 four years ago? ;) https://github.com/perl6/specs/commit/6cdd9f3​543#diff-0e77aecc3a4956bd8c7c2184f552c1d9R17
01:51 geekosaur change made N years ago, committed or pushed now?
01:51 geekosaur git is weird that way
01:52 telex joined #perl6
01:52 lue geekosaur: I'm pretty sure that things new. I'm sure TimToady merely forgot to change the year there :)
01:56 * lue &
01:59 dalek specs: 2e989c7 | larry++ | S19-commandline.pod:
01:59 dalek specs: what's four years among friends?
01:59 dalek specs: review: https://github.com/perl6/specs/commit/2e989c7e21
02:33 Vlavv` joined #perl6
02:42 colomon r: class A { has $.a; method b() { say @.a.perl; }; }; A.new.b;
02:44 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«().list␤»
02:44 colomon n: class A { has $.a; method b() { say @.a.perl; }; }; A.new.b;
02:44 camelia niecza v24-98-g473bd20: OUTPUT«(Any, ).list␤»
02:44 colomon :(
02:50 raydiak colomon: https://rt.perl.org/Public/​Bug/Display.html?id=120620
02:51 TimToady r: class A { has $.a; method b() { say $.a.WHAT; }; }; A.new.b;
02:51 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«(Any)␤»
02:57 cognominal joined #perl6
02:58 xinming joined #perl6
03:03 lue colomon: why does @.a even work?
03:03 colomon lue: that is the source of my :(
03:03 colomon it was an inscrutable bug in my actual code.
03:04 colomon nigh inscrutable, I guess I should say, because I did eventually figure it out.
03:04 lue oh, ok. I thought it was somehow doing the slightly wrong thing, and I missed the part of the spec that discussed it.
03:05 colomon if so, I missed it too.
03:05 xenoterracide joined #perl6
03:07 lue r: class A { has $!a; method b() { say @!a.perl; }; }; A.new.b;
03:07 camelia rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/R0s5Z0SHzJ�Attribute @!a not declared in class A�at /tmp/R0s5Z0SHzJ:1�------> [32mclass A { has $!a; method b() { say @!a[33m�[31m.perl; }; }; A.new.b;[0m�»
03:07 camelia ..rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/_Pnl7kNYUk�Attribute @!a not declared in class A�at /tmp/_Pnl7kNYUk:1�------> [32mclass A { has $!a; method b() { say @!a[33m�[31m.perl; }; }; A.new.b;[0m�»
03:07 lue That seems helpful, for debugging purposes.
03:13 Vlavv` joined #perl6
03:15 xenoterracide joined #perl6
03:20 lue r: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:20 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«$ --- $ PASS␤$ --- @ PASS␤$ --- % PASS␤$ --- & PASS␤@ --- $ PASS␤@ --- @ PASS␤@ --- % PASS␤@ --- & PASS␤% --- $ PASS␤% --- @ PASS␤% --- % PASS␤% --- & PASS␤& --- $ PASS␤& --- @ PASS␤& --- % PASS␤& --- & PA…»
03:20 xenoterracide joined #perl6
03:20 lue colomon: it doesn't look good ^^^
03:28 lue r: class Foo { has @.bar; method baz() { &.bar() } }; my $frobozz = { say "hi" }; Foo.new(:bar($frobozz)}.baz
03:28 camelia rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/41gEWEehmyâ�¤Unable to parse expression in argument list; couldn't find final ')' â�¤at /tmp/41gEWEehmy:1â�¤------> [32mz = { say "hi" }; Foo.new(:bar($frobozz)[33mâ��[31m}.baz[0mâ�¤    expecting…»
03:28 camelia ..rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/fK5zWrtgucâ�¤Unable to parse expression in argument list; couldn't find final ')' â�¤at /tmp/fK5zWrtguc:1â�¤------> [32mz = { say "hi" }; Foo.new(:bar($frobozz)[33mâ��[31m}.baz[0mâ�¤    expect…»
03:28 lue r: class Foo { has @.bar; method baz() { &.bar() } }; my $frobozz = { say "hi" }; Foo.new(:bar($frobozz)).baz
03:28 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: ( no output )
03:28 lue r: class Foo { has @.bar; method baz() { &.bar[0]() } }; my $frobozz = { say "hi" }; Foo.new(:bar($frobozz)).baz
03:28 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«hi␤»
03:29 lue This is terrible. Why am I smiling? :D
03:33 lue Could Grammar.nqp:1817 be at fault here, somehow?
03:38 ssutch joined #perl6
03:39 colomon which Grammar.nqp?
03:40 colomon afk # bedtime
03:40 BenGoldberg n: class A { has @.a = (1,2,3); method b() { say %.a[1]; }; }; A.new.b;
03:40 camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Unmatched key in Hash.LISTSTORE␤  at /home/p6eval/niecza/lib/CORE.setting line 396 (Any.hash @ 3) ␤  at <unknown> line 0 (ExitRunloop @ 0) ␤  at /tmp/AIpVUDEUEd line 1 (A.b @ 4) ␤  at /tmp/AIpVUDEUEd line 1 (mainline @ 6) …»
03:40 denysonique_ joined #perl6
03:43 lue colomon: Rakudo's of course :)
03:43 lue r: class A { has @.a = (1,2,3); method b() { say %.a[1]; }; }; A.new.b;
03:43 camelia rakudo-jvm e5fd34: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/jvm/CORE.setting:8786␤  in method hash at gen/jvm/CORE.setting:1493␤  in block  at /tmp/0Hb9CcaRCF:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at ge…»
03:43 camelia ..rakudo-parrot e5fd34: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/parrot/CORE.setting:8811␤  in method hash at gen/parrot/CORE.setting:1504␤  in method b at /tmp/pfm5A_cwIQ:1␤  in block  at /tmp/pfm5A_cwIQ:1␤  in any  at /tmp/pfm5A_cwIQ…»
03:43 lue r: class A { has @.a = 1,2,3; method b() { say %.a[1]; }; }; A.new.b;
03:43 camelia rakudo-jvm e5fd34: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/jvm/CORE.setting:8786␤  in method hash at gen/jvm/CORE.setting:1493␤  in block  at /tmp/7YikQimADb:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at ge…»
03:43 camelia ..rakudo-parrot e5fd34: OUTPUT«Odd number of elements found where hash expected␤  in method STORE at gen/parrot/CORE.setting:8811␤  in method hash at gen/parrot/CORE.setting:1504␤  in method b at /tmp/fO1Rpimwec:1␤  in block  at /tmp/fO1Rpimwec:1␤  in any  at /tmp/fO1Rpimwec…»
03:43 lue r: class A { has @.a = 1,2,3,4; method b() { say %.a[1]; say @.a[1] }; }; A.new.b;
03:43 camelia rakudo-jvm e5fd34: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method b at /tmp/Yn9uQ5mmiG:1␤  in block  at /tmp/Yn9uQ5mmiG:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/…»
03:43 camelia ..rakudo-parrot e5fd34: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method gist at gen/parrot/CORE.setting:12004␤  in method gist at gen/parrot/CORE.setting:1014␤  in sub say at gen/parrot/CORE.setting:12904␤  in method b at /tmp/BDgyG4wPs1:1␤  in block  at /tmp…»
03:43 lue r: class A { has @.a = 1,2,3,4; method b() { say %.a[1]; say @.a[0] }; }; A.new.b;
03:44 camelia rakudo-jvm e5fd34: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method b at /tmp/ftlfxzbx8s:1␤  in block  at /tmp/ftlfxzbx8s:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/…»
03:44 camelia ..rakudo-parrot e5fd34: OUTPUT«Index out of range. Is: 1, should be in 0..0␤  in method gist at gen/parrot/CORE.setting:12004␤  in method gist at gen/parrot/CORE.setting:1014␤  in sub say at gen/parrot/CORE.setting:12904␤  in method b at /tmp/D39dqBRcy7:1␤  in block  at /tmp…»
03:44 lue r: class A { has @.a = 1,2,3,4; method b() { say %.a<1>; say @.a[0] }; }; A.new.b;
03:44 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«2␤1␤»
03:44 BenGoldberg Now that's just odd ;)
03:45 lue n: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:45 camelia niecza v24-98-g473bd20: OUTPUT«$ --- $ PASS␤$ --- @ PASS␤$ --- % FAIL␤$ --- & PASS␤@ --- $ PASS␤@ --- @ PASS␤@ --- % PASS␤@ --- & PASS␤% --- $ PASS␤% --- @ PASS␤% --- % PASS␤% --- & PASS␤& --- $ PASS␤& --- @ PASS␤& --- % FAIL␤& --- & PASS␤»
03:45 lue Niceza's just as bad!
03:45 lue n: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:45 camelia niecza v24-98-g473bd20: OUTPUT«$ --- $ PASS␤$ --- @ PASS␤$ --- % FAIL␤$ --- & PASS␤@ --- $ PASS␤@ --- @ PASS␤@ --- % PASS␤@ --- & PASS␤% --- $ PASS␤% --- @ PASS␤% --- % PASS␤% --- & PASS␤& --- $ PASS␤& --- @ PASS␤& --- % FAIL␤& --- & PASS␤»
03:45 lue P: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:45 camelia pugs: OUTPUT«$ --- @ PASS␤% --- & PASS␤»
03:45 lue wuh
03:45 lue P: my $z; my @a = (<$ @ % &> X <$ @ % &>); for @a -> $L, $R { print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:45 camelia pugs: OUTPUT«$ $ --- $ @ PASS␤$ % --- $ & PASS␤@ $ --- @ @ PASS␤@ % --- @ & PASS␤% $ --- % @ PASS␤% % --- % & PASS␤& $ --- & @ PASS␤& % --- & & PASS␤»
03:46 BenGoldberg rn: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { print "$L - $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:46 BenGoldberg [22:44] <+camelia> niecza v24-98-g473bd20: OUTPUT«$ --- $ PASS␤$ --- @ PASS␤$ --- % FAIL␤$ --- & PASS␤@ --- $ PASS␤@ --- @ PASS␤@ --- % PASS␤@ --- & PASS␤% --- $ PASS␤% --- @ PASS␤% --- % PASS␤% --- & PASS␤& --- $ PASS␤& --- @ PASS␤& --- % FAIL␤& --- & PASS␤»
03:46 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«$ - $ PASS␤$ - @ PASS␤$ - % PASS␤$ - & PASS␤@ - $ PASS␤@ - @ PASS␤@ - % PASS␤@ - & PASS␤% - $ PASS␤% - @ PASS␤% - % PASS␤% - & PASS␤& - $ PASS␤& - @ PASS␤& - % PASS␤& - & PASS␤»
03:46 camelia ..niecza v24-98-g473bd20: OUTPUT«$ - $ PASS␤$ - @ PASS␤$ - % FAIL␤$ - & PASS␤@ - $ PASS␤@ - @ PASS␤@ - % PASS␤@ - & PASS␤% - $ PASS␤% - @ PASS␤% - % PASS␤% - & PASS␤& - $ PASS␤& - @ PASS␤& - % FAIL␤& - & PASS␤»
03:47 BenGoldberg Well, Rakudo passes them all, but niecza fails a few
03:48 lue BenGoldberg: yeah, just noticed. Ideally only four of those pass
03:48 * lue goes to test all the sigils, and maybe draw some diagrams
03:49 lue s/sig/twig/
03:49 BenGoldberg n: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { next if $L eq $R; print "$L --- $R "; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "FAIL"} }; say "PASS" }
03:49 camelia niecza v24-98-g473bd20: OUTPUT«$ --- @ PASS␤$ --- % FAIL␤$ --- & PASS␤@ --- $ PASS␤@ --- % PASS␤@ --- & PASS␤% --- $ PASS␤% --- @ PASS␤% --- & PASS␤& --- $ PASS␤& --- @ PASS␤& --- % FAIL␤»
03:50 BenGoldberg rn: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { next if $L eq $R; $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "$L - $R: FAIL"} }; }
03:50 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: ( no output )
03:50 camelia ..niecza v24-98-g473bd20: OUTPUT«$ - %: FAIL␤& - %: FAIL␤»
03:51 BenGoldberg Curious that those two should fail for niecza, but not any others
03:51 lue BenGoldberg: exactly. The inter-implementation inconsistency on being wrong is quite amazing.
03:52 BenGoldberg P: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {say "$L - $R: FAIL"} }; }
03:52 camelia pugs: ( no output )
03:53 BenGoldberg P: my $z; my @a = <$ @ % &> X <$ @ % &>; for @a -> $L, $R { $z++; my $s = "class A$z \{ has $L.a; method b() \{ $R.a.perl; }; }; A$z.new.b;"; eval($s); CATCH { default {}; say "$L - $R: PASS" }; }
03:53 camelia pugs: ( no output )
03:54 TimToady well, you have to know two things
03:54 TimToady the sigil on an attribute declaration is just documentation
03:55 TimToady and the sigil on @.foo() really means @(self.foo())
03:55 TimToady everything else follows from that
03:55 lue o.o
03:56 lue I suspected some $() interpretation was going on, but I didn't think it was *intentional*.
03:56 TimToady arguably the sigil on the 'has' should matter a bit more
03:56 TimToady and enforce Positional or Associative
03:57 TimToady but certainly the other one is intentional; the $.foo syntax is sugar for a virtual method call
03:57 TimToady and methods don't have sigils
03:57 lue preflex: tell colomon apparently, it's intentional: http://irclog.perlgeek.de/​perl6/2013-11-28#i_7926696
03:57 preflex Consider it noted.
03:58 lue TimToady: well, I suspect they have the & sigil, at least :)
03:58 TimToady shh, it's a sekrit
03:59 lue All of a sudden I don't like $.foo syntax. My brain is having a fit seeing $.foo as not a variable+twigil, but a fancy method call.
04:00 lue [ safe to say that behavior is a very big WAT for me :) ]
04:01 TimToady this is mentioned in the spec at S12:746
04:01 synopsebot Link: http://perlcabal.org/syn/S12.html#line_746
04:01 TimToady lue: the confusion is intentional as well :)
04:02 TimToady see the mention a day or two ago of "Uniform Access Principle"
04:03 TimToady you shouldn't be able to tell from externally whether it's a variable or a method pretending to be a variable
04:03 TimToady because that makes it very, very difficult to refactor your classes
04:04 TimToady and this is a widespread principle throughout Perl 6: A synthetic X should behave just like a built-in X.
04:04 BenGoldberg r: say 1,2 X 3,4
04:04 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«1 3 1 4 2 3 2 4␤»
04:04 TimToady the built-in functions are built-in only by virtue of being in an outer lexical scope
04:05 lue r: for 1.0, 1.1 ... 2 { say $_; say .floor; say (@.floor).perl }
04:05 camelia rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FI5WoYk8xVâ�¤Variable @.floor used where no 'self' is availableâ�¤at /tmp/FI5WoYk8xV:1â�¤------> [32m... 2 { say $_; say .floor; say (@.floor[33mâ��[31m).perl }[0mâ�¤    expecting any of:â�¤     …»
04:05 camelia ..rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/LRHBeU4u9Gâ�¤Variable @.floor used where no 'self' is availableâ�¤at /tmp/LRHBeU4u9G:1â�¤------> [32m... 2 { say $_; say .floor; say (@.floor[33mâ��[31m).perl }[0mâ�¤    expecting any of:â�¤  â€¦Â»
04:06 lue There's a part of me that's getting very eager to disallow the use of $.foo sugar in classes, beyond the has declaration. I'm really not handling this shift in perceptions well :P
04:06 lue r: class Foo { method bar { 3 }; method baz { say $.bar } }; Foo.baz # just checking
04:06 TimToady yes, it depends exactly on whether your method wants to speak to the internal API or the external API of the object
04:07 camelia rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«3␤»
04:07 TimToady when you say
04:07 BenGoldberg Are there (will there be) places where perl6's optimizer can turn code written as 'say $.foo' into 'say $!foo' ?
04:07 TimToady $!foo, you're speaking to the internal, and $.foo, to the external
04:08 TimToady BenGoldberg: yes, if you haven't derived from the class, or declared it to be left 'open'
04:08 BenGoldberg Ok :)
04:09 TimToady see S12:2184
04:09 synopsebot Link: http://perlcabal.org/syn/S12.html#line_2184
04:09 TimToady r: for 1.0, 1.1 ... 2 { my \self = $_; say $_; say .floor; say (@.floor).perl }  # curious
04:09 camelia rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FHFjd0y_i1â�¤Variable @.floor used where no 'self' is availableâ�¤at /tmp/FHFjd0y_i1:1â�¤------> [32mf = $_; say $_; say .floor; say (@.floor[33mâ��[31m).perl }  # curious[0mâ�¤    expecting any …»
04:09 camelia ..rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/OGscxVmw4Lâ�¤Variable @.floor used where no 'self' is availableâ�¤at /tmp/OGscxVmw4L:1â�¤------> [32mf = $_; say $_; say .floor; say (@.floor[33mâ��[31m).perl }  # curious[0mâ�¤    expecting a…»
04:09 TimToady heh
04:09 TimToady the error message lies
04:10 TimToady it means 'where no invocant'
04:10 lue TimToady: I just think having wildly different rules for one twigil (namely, "with this twigil, the sigil doesn't matter") feels wrong. Almost like C<has $.foo;> would be better writen as C<has $!foo :public;>
04:11 lue in terms of showing how it affects the declaration, that is.
04:12 * lue realizes it's nigh-impossible to change such a basic element of Perl 6 at this late stage; he just feels like venting his view-shift steam :)
04:12 Entonian joined #perl6
04:14 BenGoldberg On a more positive note, I recently added http://rosettacode.org/wiki/Sokoban#Perl to show how Sokoban puzzles can be solved in perl (perl5, that is).
04:14 BenGoldberg Anyone interested in adding a perl6 solution to the task?  And, can you make it go faster than my code? :)
04:15 * BenGoldberg hopes that a perl6 solution can go faster
04:17 BenGoldberg p56: vec($_, 1, 4)
04:17 camelia p5-to-p6 : OUTPUT«vec($_, 1, 4)␤»
04:18 BenGoldberg r: my $x = ''; vec($x, 0, 8) = 10; say $x
04:18 camelia rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/guFhrduJziâ�¤Undeclared routine:â�¤    vec used at line 1. Did you mean '&sec'?â�¤â�¤Â»
04:18 camelia ..rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/_UDQiIMvioâ�¤Undeclared routine:â�¤    vec used at line 1. Did you mean '&sec'?â�¤â�¤Â»
04:19 BenGoldberg G'night, time for me to go to bed.
04:21 * lue briefly imagines replacing $./@./%./&.foo with a generic ¢.foo. ¢ for ¢urrent invocant or similar, obviously :)
04:35 genehack joined #perl6
04:50 xinming joined #perl6
04:58 preflex_ joined #perl6
04:58 xinming joined #perl6
05:07 rurban1 joined #perl6
05:14 dalek nqp: a36ba3e | dwarring++ | examples/rubyish/t/inheritance.t:
05:14 dalek nqp: typo. also theta => radius (rusty math)
05:14 dalek nqp: review: https://github.com/perl6/nqp/commit/a36ba3e752
05:14 dalek nqp: 18f2bc5 | dwarring++ | examples/rubyish/rubyish.nqp:
05:14 dalek nqp: reorder rubyish grammar. comments and whitespace now last
05:14 dalek nqp: review: https://github.com/perl6/nqp/commit/18f2bc5bd6
05:17 jnap joined #perl6
05:30 robinsmidsrod joined #perl6
05:32 xenoterracide joined #perl6
06:01 SamuraiJack_ joined #perl6
06:10 xinming joined #perl6
06:13 darutoko joined #perl6
06:18 jnap joined #perl6
06:25 moritz \o
06:31 [Sno] joined #perl6
06:43 SamuraiJack joined #perl6
07:03 brrt joined #perl6
07:07 xenoterracide joined #perl6
07:18 jnap joined #perl6
07:39 rurban1 joined #perl6
07:44 xinming joined #perl6
07:48 kaleem joined #perl6
07:51 SamuraiJack_ joined #perl6
07:59 bgwilf joined #perl6
08:12 AW3i joined #perl6
08:13 zakharyas joined #perl6
08:19 jnap joined #perl6
08:20 jnap1 joined #perl6
08:21 kivutar joined #perl6
08:22 jnap joined #perl6
08:23 dmol joined #perl6
08:36 xenoterracide joined #perl6
08:39 FROGGS joined #perl6
08:45 bgwilf logout
08:45 bgwilf logout
08:46 brrt left #perl6
08:59 dalek rakudo/moar-support: 3c10a62 | (Tobias Leich)++ | src/vm/moar/ (2 files):
08:59 dalek rakudo/moar-support: stub p6staticouter
08:59 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/3c10a626c9
09:00 xinming joined #perl6
09:02 dalek rakudo/moar-support: 5ffcf7f | (Tobias Leich)++ | src/vm/moar/ (2 files):
09:02 dalek rakudo/moar-support: stub p6setautothreader
09:02 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/5ffcf7f09d
09:06 raydiak thanks for all the help, #perl6: http://cyberuniverses.com/pray/#pray-news-20131127
09:07 FROGGS raydiak++
09:08 raydiak :)
09:08 FROGGS nice post, and nice renderings :)
09:10 raydiak thanks...next one will be quite a bit shinier...post after that I hope is when I let the code into the wild
09:11 rindolf joined #perl6
09:11 moritz raydiak++
09:12 moritz .oO( "I didn't release the code, I let it escape" )
09:13 * diakopter renames p6 to The Krakon
09:13 raydiak .oO( "I hope it decides to release me as easily" )
09:13 diakopter er, Kraken
09:16 raydiak JVM made me very happy today, if it wasn't obvious :)
09:16 moritz raydiak: would you like to write a post about pray for the Perl 6 advent calendar?
09:17 raydiak moritz: sure, I'd love to!
09:18 moritz raydiak: you can claim a day in https://github.com/perl6/mu/blob/ma​ster/misc/perl6advent-2013/schedule (either you tell me which one, and I enter it for you, or you tell me your github user name, and I give you a commit bit)
09:19 moritz raydiak: and then I need your email address so that I can invite you to the blog
09:19 moritz raydiak: I'm very much looking forward to your post
09:21 moritz raydiak: I've given you commit access on github, assuming that your user name there is also 'raydiak'
09:21 raydiak moritz: let me get back to you tomorrow...my online identity is a jumbled fragmented mess, and I'd like to consolidate everything, so e-mails, usernames, etc match...but it's 1:30 AM my time, and I'm not up to messing with mail server configs right now :P
09:21 raydiak moritz: yes, that's me
09:21 moritz raydiak: ok, no hurry
09:22 moritz and sleep well :-)
09:23 raydiak moritz: thanks :)
09:23 jnap joined #perl6
09:24 raydiak g'night/morning #perl6 o/
09:27 jnthn raydiak++ # nice blog post :)
09:46 diakopter WHAR IS TADZIK; WHAR IS TADZIK
09:46 diakopter um, ww
09:50 tgt joined #perl6
09:52 jnthn So in December I gotta give a talk on invokedynamic. So I may spend some time next week pimping out our usage of it on Rakudo JVM / NQP JVM a bit. Mebbe I can get things a little faster... :)
09:53 jnthn .oO( This is where I end up spending my time writing code and then have to do slides last minute. ain't it... )
09:57 nwc10 where is your talk? And where will the photos used in it be from?
09:57 nwc10 or is the latter "Wait and see"?
10:01 jnthn ooh, good question on the latter
10:01 jnthn I think I've still got some Croatia ones to use :)
10:01 jnthn Talk is at http://buildstuff.lt/
10:07 hoelzro come, 6ers! upvote: http://www.reddit.com/r/perl/comments/1r​mzwu/pray_a_raytracer_written_in_perl_6/
10:07 hoelzro raydiak++ # doing cool stuff in Perl 6
10:07 masak good antenoon, #perl6
10:08 hoelzro ahoy masak
10:08 webmind hoelzro, don't have reddit
10:08 hoelzro fair enough
10:08 hoelzro it *is* kinda evil.
10:08 hoelzro ;)
10:09 jnthn o/ masak
10:10 webmind hoelzro, never had a reason for it
10:22 ssutch joined #perl6
10:24 jnap joined #perl6
10:32 tadzik whar whar
10:38 masak thar thar
10:39 masak anyone against me just (as per usual) claiming 4-ish slots in https://github.com/perl6/mu/blob/ma​ster/misc/perl6advent-2013/schedule ?
10:41 nwc10 Mrs masak? :-)
10:41 masak :P
10:41 masak don't think so, no.
10:44 hoelzro so I'm looking at the sources for grammar-debugger
10:44 hoelzro and I see this overriding of find_method returning a -> $c, |args
10:45 hoelzro $c is the invocant, right?
10:46 hummeleB1 joined #perl6
10:47 dalek mu: 375ad2e | (Carl Mäsak)++ | misc/perl6advent-2013/schedule:
10:47 dalek mu: claimed slots 2, 9, 15 and 22
10:48 dalek mu:
10:48 dalek mu: Let me also advertise my availability as substitute for any
10:48 dalek mu: slot that remains empty, or author that becomes unavailable at the
10:48 dalek mu: last minute. I'll do my best to stay one draft ahead to make this
10:48 dalek mu: possible.
10:48 dalek mu: review: https://github.com/perl6/mu/commit/375ad2e5b2
10:48 masak let me also extend my hope that, to whatever degree possible, the 24 slot be done by TimToady. ;)
10:53 mathw o/ morning
10:53 ssutch joined #perl6
10:58 masak ooh, clojure has something very much like whatever blocks: -> $x { $x + 3 } is written (fn [x] (+ x 3)) in clojure -- but it also has the * + 3 form as #(+ % 3)
11:01 hoelzro hmm
11:01 jnthn hoelzro: yes, $c is. And it's called $c to be short for cursor :)
11:01 hoelzro so if I define a module with EXPORTHOW::<grammar> set to a meta object, I override the meta object used when creating grammars in any importing unit, right?
11:01 hoelzro ah, that makes sense!
11:01 jnthn hoelzro: Correct.
11:01 jnthn hoelzro: Note that it works leixcally too :)
11:02 hoelzro I take it I can't create my own keywords that way? ex. EXPORTHOW::<myclass> = RobsClassHOW?
11:02 hoelzro neat =)
11:02 jnthn grammar IAmNormal { }; { use HoelzGramamrz; gramamr IAmDifferent { } }
11:02 jnthn hoelzro: Not *yet* but I've spec'd a way...just not implemented it yet.
11:02 hoelzro damn
11:03 hoelzro I was hoping I'd have a cool entry for the advent calendar =/
11:03 jnthn I need it for my secret plan to write "use Actors;" module so you can implement the actor pattern with "actor Thingy {...}" ;)
11:03 jnthn hoelzro: Well, we can always try to get it implemented... :)
11:03 hoelzro hehe
11:04 hoelzro ENOTIME and ELACKOFEXPERIENCE for me
11:04 hoelzro I'm spending my Perl 6 tuits as of late by just reading existing Perl 6 code so I can get a better feel for the language
11:04 * jnthn wonders how many people in the world have experience of writing meta-programming mechanisms that declare new keywords on import... :P
11:05 jnthn .oO( oh hai, lispers... )
11:13 * timotimo has by now seen much more NQP than perl6 :\
11:13 timotimo i should get my feet wet in an actual project written in perl6
11:14 timotimo is somebody already working on tclc? it seems like something simple enough for me to implement
11:15 timotimo the first tclc is in line 3340 :D
11:16 timotimo worst case i'll stub the implementation via substr + tc :P
11:16 arnsholt timotimo: Don't be sad about that. At this point, I think I've seen (and written!) more NQP C code than Perl 6 code =)
11:16 timotimo heh :)
11:24 [Sno] joined #perl6
11:25 jnap joined #perl6
11:37 mathw masak: those Clojure anonymous function macros are really handy sometimes
11:38 mathw masak: one tends to find that Lisp's anonymous function syntax is a little weighty, and they solve that problem for the simple cases
11:38 mathw ...actually a lot like whatever blocks!
11:38 arnsholt Yeah, I immediately started pondering how it'd be implemented in CL
11:39 mathw (defmacro ... :P
11:39 arnsholt The Clojure syntax should be more or less reproducible as a reader macro I think
11:39 mathw You could probably come up with something similar I would've thought
11:39 arnsholt defmacro is the other option
11:39 FROGGS[mobile] joined #perl6
11:39 mathw but I don't really know anything about CL macros
11:40 mathw I find CL quite unwieldy and confusing
11:40 arnsholt But with a reader macro I think you can make it just something like #*(+ % 5)
11:40 mathw It has a kitchen sink feeling to it
11:40 arnsholt CL is the only Lisp I know how to actually use, since we used it for a few courses I took
11:42 masak mathw: to me, they aren't a lot *like* whatever blocks, they *are* whatever blocks ;)
11:42 arnsholt Things like reader macros are kinda neat though. Makes parsing and even lexing really complicated, but lets you do some neat stuff
11:43 masak mathw: ...with an extra up-front '#' warning.
11:45 mathw masak: I guess they are. I tend to think there's less magic going on, but then I actually don't know how a Perl 6 parser figures out what to do with a whatever block
11:49 masak mathw: that's a really good question.
11:49 masak mathw: it... somehow finds the innermost surrounding expression, I guess.
11:53 mathw yeah, so in Clojure there's a lot less magic going on
11:53 mathw the macro phase expands it out to a (fn [x] ...) anyway
11:56 arnsholt The most important difference between a whatever block and the Clojure thing is the syntax I think
12:00 Alina-malina joined #perl6
12:02 masak in Perl 6, the limit of the whatever block is implicit.
12:08 masak https://github.com/perl6/specs/commit/0​f9df8a0f229d617abe810bd9af2768a48a3fe2b # um...
12:09 masak p: my @r = map { .^name }, *; .say for @r
12:09 camelia rakudo-parrot e5fd34: OUTPUT«(timeout)»
12:10 masak lizmat: is this new form of &map syntactically detected? if it isn't, what happens if I have an array @input with a single Whatever object in it, and pass it to &map ?
12:11 masak we typically don't have '*' mean "an infinite supply of lazy values".
12:12 masak p: my @r = map { 1 }, *; .say for @r
12:12 camelia rakudo-parrot e5fd34: OUTPUT«(timeout)»
12:12 masak p: say "hosed?"
12:12 camelia rakudo-parrot e5fd34: OUTPUT«hosed?␤»
12:12 masak ...apparently not.
12:14 masak by the way, is http://irclog.perlgeek.de/​perl6/2013-11-26#i_7918703 as sarctastic as my reading of it indicates?
12:15 masak lizmat: if it *is* syntactically detected, why are we combining a CORE function and a syntactic form into one concept/term?
12:20 masak I guess my main problem is that I don't clearly see the unification attempted here.
12:23 jnthn masak: It's going away in favor of lazy loop { ... } iirc
12:26 masak it may be going away, but it's not gone yet.
12:26 moritz \o
12:26 masak it's still in S32/Containers.pod, L350.
12:26 jnap joined #perl6
12:26 masak moritz! \o/
12:29 jnthn masak: Well, you have a commit bit too :P
12:30 masak trouble is, I feel behind on backlogging, so I don't have a very good perspective.
12:30 masak in particular, I know nothing about this 'lazy loop { ... }' of yours.
12:30 jnthn Well, that's jsut using stuff that's been in spec for years :P
12:31 jnthn While Rakudo doesn't yet implement it, all the loop constructs can produce values.
12:31 Alina-malina joined #perl6
12:43 Gothmog_ joined #perl6
12:51 rurban1 joined #perl6
12:55 atroxaper joined #perl6
12:55 frettled masak: your backlog is backlogged?
12:56 moritz backlog is clogged
12:57 frettled there's a clogback in the backlog
12:57 frettled But yeah, I have problems parsing the backlogs these days :(
12:59 jnthn frettled: Could try using a Perl 6 grammar for that...
13:00 moritz if you want an easily parsable backlog, you can send an Accept: application/json  header to the IRC logs
13:00 moritz and you'll get JSON back
13:02 FROGGS joined #perl6
13:11 nwc10 oh, interesting. Is that smaller than the rendered page?
13:17 frettled moritz: that's cute :)
13:18 frettled … and THEN we could parse it with a Perl 6 grammar :D
13:19 moritz nwc10: lots smaller
13:19 moritz like a factor 5 to 10
13:21 dalek nqp: 34ee80e | (Timo Paulssen)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
13:21 dalek nqp: implement tclc as substr + tc/lc + concat.
13:21 dalek nqp: review: https://github.com/perl6/nqp/commit/34ee80e923
13:27 nwc10 go for it - parse the JSON into HTML using Perl 6
13:27 jnap joined #perl6
13:27 nwc10 er, parse and format ...
13:28 dalek nqp: 2fa041d | (Tobias Leich)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
13:28 dalek nqp: stub QAST::MASTRegexCompiler.uniprop
13:28 dalek nqp: review: https://github.com/perl6/nqp/commit/2fa041d35b
13:35 ajr joined #perl6
13:37 timotimo moritz: chrome suggests you enable gzip compression for the irclog to get about two thirds of the data gone and giving style.css, camelia.png, jquery.min.js and dynamic.js cache expiration data :)
13:38 timotimo also, Cache-Control: public for camelia.png
13:46 masak frettled: yeah, $life is intervening (in mostly good ways), and I'm way behind on backlogging.
13:46 masak frettled: and my IRC presence is weaker than usual.
13:56 moritz the IRC is weak in you!
13:56 masak aye.
13:56 * masak .oO( mIRCichlorians )
13:58 daxim that's probably the most groanworthy this month
14:02 masak you're welcome.
14:13 kaare_ joined #perl6
14:16 dalek nqp: 753d879 | (Timo Paulssen)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
14:16 dalek nqp: implement uniprop on moarvm.
14:16 dalek nqp: review: https://github.com/perl6/nqp/commit/753d879e39
14:18 lizmat joined #perl6
14:18 * lizmat greets #perl6 from somewhere in the Peak district
14:19 hoelzro ahoy lizmat
14:19 FROGGS hi lizmat
14:19 lizmat hoelzro, FROGGS o/
14:22 jnthn lizmat: If you drink just the right amount and hack, it'll be the Ballmer Peak district
14:23 timotimo the thing about the ballmer peak is that if you barely miss it, you're much worse off ...
14:25 dalek rakudo/moar-support: 41d5e28 | (Tobias Leich)++ | src/vm/moar/ (2 files):
14:25 dalek rakudo/moar-support: stub p6shiftpush
14:25 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/41d5e287fe
14:26 nnunley joined #perl6
14:26 jnthn p6shitfpush is quite easy, iirc :)
14:26 nwc10 easy for you, or easy for mere mortals?
14:27 FROGGS haha shit pfusch!
14:27 jnthn bah, typing fail :P
14:27 FROGGS (pfusch might only be funny in german)
14:28 dalek mu: 5e3894b | timo++ | misc/perl6advent-2013/schedule:
14:28 dalek mu: claim day 17 for a heroic tale of a fledgling contributor growing up
14:28 dalek mu:
14:28 dalek mu: or something like that
14:28 dalek mu: review: https://github.com/perl6/mu/commit/5e3894b366
14:28 jnap joined #perl6
14:28 jnthn FROGGS: What's it mean?
14:28 timotimo hahaha
14:28 FROGGS like messing something up
14:28 FROGGS when building it
14:28 jnthn How appropriate :P
14:28 FROGGS hehe, yeah
14:28 * masak .oO( software development, at its worst, is just a bunch of shit pfushing )
14:29 timotimo yeah, pfusch is like when you get a chair built and you later find out it is made out of cardboard instead of wood :P
14:29 FROGGS *g*
14:29 timotimo the way i use it, pfusch is usually a result of either incompetence or wanting to lower cost and then trying to get away with it
14:29 moritz yes, that's pretty much it
14:30 timotimo sometimes it's called "pfusch am werk"
14:31 jnthn Anyway, *shiftpush* is not too hard; should be mostly calls to MVM_repr_push_o and MVM_repr_shift_o or so
14:31 timotimo and p6arrfindtypes?
14:31 timotimo :)
14:32 timotimo MVM_repr_arr, MVM_repr_find and MVM_repr_types i bet! :P
14:32 jnthn I think that one is just indexing
14:33 jnthn Overheard while teaching: "Maybe I shouldn't call this database column 'drop'..."
14:33 timotimo ooooooh :D
14:34 dalek rakudo/moar-support: 3e1b45e | (Tobias Leich)++ | src/vm/moar/ (2 files):
14:34 dalek rakudo/moar-support: stub p6arrfindtypes
14:34 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/3e1b45ef8b
14:35 lizmat jnthn: no alcohol just yet, and no programming either, just late lunch in a hobitton like establishment
14:35 jnthn lizmat: nice :)
14:36 lizmat (with free wifi ;-)
14:38 berekuk joined #perl6
14:45 dalek rakudo/moar-support: 1b6f2bc | (Tobias Leich)++ | src/vm/moar/ (2 files):
14:45 dalek rakudo/moar-support: stub p6listiter
14:45 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/1b6f2bc460
14:45 BenGoldberg joined #perl6
14:46 jnthn timotimo: I think I did an implementation of most of what p6listiter needs as part of implemetning p6list...it's in a separate static method that you can mostly just call, fwiw.
14:47 spider-mario joined #perl6
14:55 dalek rakudo/moar-support: 5006f3a | (Tobias Leich)++ | src/vm/moar/ (2 files):
14:55 dalek rakudo/moar-support: stub p6setfirstflag
14:55 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/5006f3a66d
15:00 tgt joined #perl6
15:05 dalek rakudo/moar-support: d73176b | (Tobias Leich)++ | src/vm/moar/ (2 files):
15:05 dalek rakudo/moar-support: stub p6sort
15:05 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/d73176b809
15:07 xinming joined #perl6
15:12 xinming joined #perl6
15:19 lizmat that was an excellent lunch at the http://wortley-arms.co.uk
15:20 lizmat commuting on&
15:20 dalek rakudo/moar-support: d4e3e55 | (Timo Paulssen)++ | src/vm/moar/ops/perl6_ops.c:
15:20 dalek rakudo/moar-support: implement p6shiftpush, hopefully correctly.
15:20 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/d4e3e5511e
15:21 masak rn: sub bar($/) { say $[0] }; "foo" ~~ /f(o)o/; bar($/)
15:22 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m​===[0mâ�¤â�¤Non-declarative sigil is missing its name at /tmp/ccAoX742Uj line 1:â�¤------> [32msub bar($/) { say [33mâ��[31m$[0] }; "foo" ~~ /f(o)o/; bar($/)[0mâ�¤â�¤Unsupported use of bare 'say'; in Perl 6 please use .say i…»
15:22 camelia ..rakudo-parrot e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/GWSmn2HWdl�Unsupported use of $[ variable; in Perl 6 please use user-defined array indices�at /tmp/GWSmn2HWdl:1�------> [32msub bar($/) { say [33m�[31m$[0] }; "foo" ~~ /f(o)o/; bar($/)…»
15:22 camelia ..rakudo-jvm e5fd34: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/WRehjrHrni�Unsupported use of $[ variable; in Perl 6 please use user-defined array indices�at /tmp/WRehjrHrni:1�------> [32msub bar($/) { say [33m�[31m$[0] }; "foo" ~~ /f(o)o/; bar($/)[0m…»
15:22 masak std: $[0]
15:22 camelia std 3b262af: OUTPUT«[31m===[0mSORRY![31m===[0m�Unsupported use of $[ variable; in Perl 6 please use user-defined array indices at /tmp/VcmUHNpy6P line 1:�------> [32m$[[33m�[31m0][0m�Parse failed�FAILED 00:01 121m�»
15:28 jnap joined #perl6
15:34 jnap joined #perl6
15:34 jnthn .oO( if it's 15:30 and you're still talkin about lunch, it musta been a good one... :) )
15:35 jnthn masak: $0, or $/[0]
15:44 masak jnthn: aye. just tryin' to grok a contestant's t4 submission.
15:44 MikeFair_ joined #perl6
15:44 masak compiling a year-old Rakudo to see if we ever accepted that syntax. my guess is "no".
15:45 benabik joined #perl6
15:46 dalek nqp: 34ea61a | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
15:46 dalek nqp: mapped op getcfh
15:46 dalek nqp: review: https://github.com/perl6/nqp/commit/34ea61a29f
15:49 atroxaper joined #perl6
15:58 Psyche^ joined #perl6
16:03 crab2313 joined #perl6
16:06 rindolf joined #perl6
16:11 cogno joined #perl6
16:42 PacoAir joined #perl6
16:57 xinming joined #perl6
17:05 dalek rakudo/moar-support: 6b86f73 | (Tobias Leich)++ | tools/build/Makefile-Moar.in:
17:05 dalek rakudo/moar-support: we do IO::Soket::INET later
17:05 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/6b86f73ad3
17:07 TimToady masak: Perl 6 is always perfect, but it's extra-specially more perfecter right after I invoke Rule 2.
17:09 xinming joined #perl6
17:10 TimToady If you need a rational basis for that, it's that whenever Perl 6 changes, it demonstrates adaptiveness to its ecological niche.
17:11 TimToady (and Perl 6's ecological niche is a tough crowd.)  :)
17:13 TimToady re t4 example, maybe it was supposed to run under niecza?
17:14 xinming joined #perl6
17:35 ajr joined #perl6
17:37 lizmat joined #perl6
17:38 lizmat jnthn: in the UK it was 14:30 when we were done with lunch  :-)
17:42 berekuk joined #perl6
17:44 [Sno] joined #perl6
17:57 jnap joined #perl6
17:59 jnthn lizmat: oh...yeah, timezones... ;)
18:00 kaleem joined #perl6
18:06 woolfy joined #perl6
18:13 crab2313 joined #perl6
18:15 TimToady masak: oh, I see your test earlier; yeah, $[0] has never meant anything that I can recall
18:17 TimToady MEGO when reading p6eval tests in the irclogs because the formatting is so sucky
18:18 * TimToady wonders if NFG should treat ANSI escapes as graphemes...
18:18 dalek nqp: 2946c2c | (Timo Paulssen)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
18:18 dalek nqp: hasuniprop wants to take the string, too.
18:18 dalek nqp: review: https://github.com/perl6/nqp/commit/2946c2cade
18:22 timotimo hey tadzik, would you like to be friends with me on steam?
18:22 xenoterracide joined #perl6
18:25 timotimo http://steamcommunity.com/actions/Search?K=tadzik - there's apparently 42 of you
18:31 timotimo corecatcher: moarvm can now compile, assemble and serialize the CORE.setting :D
18:32 TimToady it just can't quite deserialize it yet :)
18:32 jnthn Nah, it deserializes.
18:32 jnthn It fails after that while running the things in the body of the setting.
18:34 jnap joined #perl6
18:38 ssutch joined #perl6
18:38 grondilu joined #perl6
18:42 denisboyun joined #perl6
18:53 woosley joined #perl6
18:57 tadzik timotimo: sure :)
18:58 tadzik timotimo: I'm this one: http://steamcommunity.com/id/tsosnierz
18:58 timotimo d'aaw the profile picture
18:58 lizmat jnthn: with morakudo around the corner, I was thinking of moving all files in src/vm/jvm/core that don't have anything JVM specific, to src/core
18:59 lizmat adapt the locations in the JVM make file for now only, so they still would be invisible for parakudo and morakudo
18:59 timotimo friend invite sent
18:59 lizmat and start thinking on how to make that fail properly on parakudo
18:59 timotimo yesterday i was quite impressed by Stealth Bastard Deluxe and my "scores from friends" list could use some competitors :3
19:00 tadzik hehe
19:00 tadzik I don't have that one, but I think it runs on Linux?
19:00 timotimo lizmat: so you'd propose stubbing all the classes that require jvm interop on "every backend" with something that complains loudly if it gets instantiated?
19:00 tadzik may pop up on sale
19:00 timotimo yes, it runs on linuu
19:00 timotimo it is on sale right now
19:00 timotimo 2.24 euros
19:00 * tadzik grumbles on BG:EE never being ported
19:00 timotimo 75% off :)
19:00 lizmat timotimo: well, the stubbing would be general, and depending on inclusion in the makefile
19:00 timotimo what does that stand for?
19:01 tadzik timotimo: Baldur's Gate Enhanced Edition
19:01 timotimo oh yeah
19:01 timotimo they even ported it to android
19:01 timotimo the step towards desktop linux ought to be really, really small
19:01 tadzik they were like "yeah, sure, there'll be a linux port soon!"
19:01 timotimo >_>
19:01 tadzik then they were like "oh, actually, the deal with atari says that we'll sell it separately"
19:01 tadzik and now they're like "yeah, well, we're not really working on it right now, but someday, surely!"
19:04 denisboyun joined #perl6
19:05 raydiak \o good morning/afternoon/evening, #perl6
19:05 tadzik hey hey raydiak
19:08 raydiak hiya tadzik
19:14 moritz is it normal that rakudo/moar-vm sesgfaults after stage optimize?
19:14 timotimo it should not :\
19:15 diakopter er, there's a rakudo/moar-vm ?
19:15 timotimo yeap :3
19:15 timotimo well, more or less
19:15 moritz moar-support is the proper name of the branch
19:21 moritz let's see how long it takes under the debugger
19:32 kivutar joined #perl6
19:35 jnap joined #perl6
19:37 ingy joined #perl6
19:37 moritz http://perlpunks.de/paste/show/52979b6f.6d5d.f6 # moar-support segfault backtrace
19:39 nwc10 moritz: is tc->instance->boot_types.BOOTInt NULL?
19:40 nwc10 (unless someone with more knowledge of the code than me asks a better question, that seems like the first thing to rule out)
19:41 moritz nwc10: how do I find out?
19:41 nwc10 p tc->instance->boot_types.BOOTInt)
19:41 nwc10 IIRC
19:42 nwc10 er,
19:42 nwc10 without that )
19:42 nwc10 p being short for print
19:42 moritz $1 = (MVMObject *) 0x15352b0
19:42 moritz doesn't look very null-y
19:42 nwc10 OK. Cool. Then I don't know.
19:42 nwc10 and yes, doesn't look at all null-y
19:42 nwc10 hmmm
19:43 nwc10 does this produce a structure, or an error:
19:43 nwc10 p *ref
19:43 moritz (gdb) p ref
19:43 moritz $2 = (MVMObject *) 0x98000800000000
19:43 nwc10 oops
19:43 nwc10 p *ref
19:43 moritz Cannot access memory at address 0x98000800000000
19:43 nwc10 OK. that would be the SEGV, I think
19:43 nwc10 presumably
19:43 ajr joined #perl6
19:43 nwc10 p *(tc->instance->boot_types.BOOTInt)
19:43 moritz looks a bit big and very 0-y
19:43 nwc10 is happy
19:44 moritz $3 = {header = {owner = 0, flags = 9, size = 32, forwarder = 0x0, sc = 0x2a052d8}, st = 0x1510fa0}
19:44 nwc10 yes. Given that the other pointer has 7 hex digits, is suggests that real valid memory is nowhere hear
19:44 nwc10 OK. the value of ref is garbage.
19:44 nwc10 I don't know enough to help further
19:46 nwc10 oh, hangon, a guess
19:47 nwc10 what does
19:47 nwc10 p *(MVMObject *) 0x980008
19:47 nwc10 give
19:47 moritz $5 = {header = {owner = 0, flags = 0, size = 0, forwarder = 0x0, sc = 0x21}, st = 0x8000800080008}
19:48 TimToady 32 vs 64 bit you think?
19:49 moritz this is a 64bit system, fwiw
19:49 nwc10 it's my guess. Something is out of alignment
19:49 nwc10 I could be wrong
19:49 nwc10 I could be very wrong. sc = 0x21 is garbage
19:49 nwc10 so that's not it either
19:49 nwc10 someone who actually knows what they are talkign about needs to answer. :-)
19:51 TimToady nobody is moar answerable...
19:53 tgt joined #perl6
19:58 ingy anyone here use weechat?
19:58 segomos weedchat or irssi
19:58 ingy I need some help
19:58 ingy I want to hide the user list pane
19:59 tadzik ingy: yep
19:59 spider-mario joined #perl6
20:01 tadzik ingy: nicklist.hidden = on
20:01 tadzik section [bar] in weechat.conf
20:02 ingy tadzik: *hugs*
20:03 tadzik *blush*
20:04 baest joined #perl6
20:05 sjohnson ( `ー´)
20:07 ingy^ joined #perl6
20:07 ingy^ tadzik: hi
20:07 tadzik oh hai
20:08 ingy^ can I hide the time in the part on the left?
20:08 ingy^ I need more horizontal space
20:08 tadzik I think you can
20:09 tadzik I only bothered to change the format to HHMM though
20:09 tadzik pretty sure you can set it to "" :)
20:09 ingy^ I'm giving a talk with live irc window
20:09 ingy^ space is tight
20:11 ingy^ joined #perl6
20:12 ingy^ tadzik: test
20:12 ingy^ yeah that worked
20:12 tadzik hello, dear guest
20:12 ingy^ flippin sweet
20:12 ingy^ give a remote toronto perl mongers talk at 7pm EST
20:13 ingy^ /join #pairup
20:14 moritz
20:15 sjohnson
20:15 diakopter
20:16 xenoterracide joined #perl6
20:16 sjohnson whoa, nice one diakopter
20:16 sjohnson sure showed us!
20:17 diakopter )(
20:17 moritz and all just because my ssh session hang
20:19 diakopter *hing
20:20 * moritz idly wanders if diakopter belongs to the ministry of silly ircs
20:29 xenoterracide joined #perl6
20:33 jnthn moritz: About the crash in write_ref_func, that's the thing that https://github.com/MoarVM/MoarVM/commit/​187b36b1b1d6f48a0615bfb9c1923de7a0bad299 fixed, or at least fixed for others...
20:33 preflex jnthn: you have 3 new messages. '/msg preflex messages' to read them.
20:35 moritz jnthn: ah, maybe my moar was too auld
20:35 jnthn Yeah, given the backtrace matches pretty much exactly...
20:37 ingy tadzik: what's that area on the left where the time/user for each msg is
20:38 ingy what's that called in the conf?
20:38 tadzik ingy: I've no idea
20:48 berekuk joined #perl6
20:57 bbkr joined #perl6
21:15 zakharyas joined #perl6
21:19 dalek rakudo/moar-support: 66bf730 | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
21:19 dalek rakudo/moar-support: Implement SIG_ELEM_DEFAULT_FROM_OUTER.
21:19 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/66bf730ff6
21:30 SevenWolf joined #perl6
21:37 jnap joined #perl6
21:48 berekuk joined #perl6
21:51 ingy tadzik: np
21:51 ajr joined #perl6
22:09 xenoterracide joined #perl6
22:25 masak 'night, #perl6
22:25 xenoterracide joined #perl6
22:27 colomon o/
22:27 preflex colomon: you have 1 new message. '/msg preflex messages' to read it.
22:38 lizmat_ joined #perl6
22:38 jnap joined #perl6
22:39 xenoterracide joined #perl6
22:47 lizmat joined #perl6
22:55 woolfy joined #perl6
22:59 rurban1 joined #perl6
23:14 raydiak joined #perl6
23:39 jnap joined #perl6
23:56 jnap joined #perl6

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

Perl 6 | Reference Documentation | Rakudo