Camelia, the Perl 6 bug

IRC log for #perl6, 2010-08-12

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

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

All times shown according to UTC.

Time Nick Message
00:00 Psyche^ joined #perl6
00:01 ruoso joined #perl6
00:04 ingy greetinga
00:04 ingy greetings
00:04 ingy :)
00:05 sorear gratings.
00:07 araujo joined #perl6
00:08 colomon joined #perl6
00:10 fengshaun joined #perl6
00:30 [Coke] ingy: hio
00:36 ingy hi [Coke]!
00:37 ingy greatings sorear
00:42 redicaps joined #perl6
00:48 [Coke] should .^methods work on an instance or just on the WHAT?
00:49 tylercurtis rakudo: 5.^methods.sort.join(', ').say
00:49 p6eval rakudo 6b318e: OUTPUT«, ACCEPTS, ACCEPTS, BUILD, BUILDALL, Bool, Bool, Bridge, CREATE, Capture, Complex, IO, Int, Num, Numeric, Numeric, Numeric, PARROT, Rat, Real, Seq, Str, Str, WALK, WHENCE, WHERE, WHICH, WHICH, abs, abs, acos, acos, acosec, acosec, acosech, acosech, acosh, acosh, acotan,
00:49 p6eval ..acotan, aco…
00:51 tylercurtis [Coke]: S12 says "$obj.^methods();" works.
00:54 [Coke] k. so 66810 is still borked.
00:55 [Coke] rakudo: say .[1]
00:55 p6eval rakudo 6b318e: OUTPUT«Any()␤»
00:58 tylercurtis rakudo: our multi postfix:<?>  ($question) { $question; }; say .WHAT?
00:58 p6eval rakudo 6b318e: OUTPUT«Any()␤»
01:02 ash_ joined #perl6
01:17 ashleydev joined #perl6
01:19 plobsing joined #perl6
01:20 ashleydev joined #perl6
01:22 cognominal joined #perl6
01:24 alc joined #perl6
01:28 rurban joined #perl6
01:39 hercynium joined #perl6
01:47 [Coke] rakudo: say 6 >== 2
01:47 p6eval rakudo 6b318e: OUTPUT«Cannot modify readonly value␤  in '&infix:<=>' at line 1␤  in main program body at line 22:/tmp/pcDfDrEhfG␤»
01:47 colomon arrrrrr!
01:48 [Coke] rakudo: say
01:48 p6eval rakudo 6b318e: OUTPUT«␤»
01:49 [Coke] rakudo: [+]
01:49 p6eval rakudo 6b318e: OUTPUT«===SORRY!===␤Confused at line 22, near "[+]"␤»
01:52 [Coke] phenny: ask pmichaud if he can review RT #74008, which is a patch for some laziness.
01:52 phenny [Coke]: I'll pass that on when pmichaud is around.
01:53 colomon [Coke]: pretty sure that patch is ancient history.
01:54 [Coke] colomon: feel free to close it out. =-)
01:54 [Coke] (but you have to reply to the guy and thank him.)
01:55 colomon ugh
01:55 colomon any idea why prove would return "Input/output error"?
01:58 colomon I'm trying to write a new module, and discovering that all the tools seem to be broken on my MacBook.  :(
02:01 colomon ah, I see
02:09 sorear now for the part where I have to come up with a sensible representation of character classes
02:19 jaldhar joined #perl6
02:20 rgrau joined #perl6
02:22 [Coke] rakudo: my %h = {my => "x"}; # RT#74948
02:22 p6eval rakudo 6b318e: OUTPUT«===SORRY!===␤Malformed my at line 22, near "=> \"x\"}; #"␤»
02:22 [Coke] std: my %h = {my => "x"}; # RT#74948
02:23 p6eval std 31912: OUTPUT«ok 00:01 115m␤»
02:23 [Coke] can someone explain what std is parsing that as?
02:23 [Coke] barewords are dead, yes?
02:24 ash_ is http://trac.parrot.org/parrot/wiki/​Creating%20Closures%20with%20NQP-rx still rigt?
02:25 ash_ right*
02:25 ash_ or does nqp-rx have closure support without doing manual newclosures ?
02:27 colomon star: sub a(@b, $c) { say :@b.perl; say :$c.perl; }; a(1..3, 20);
02:27 p6eval star 2010.07: OUTPUT«"b" => 1..3␤"c" => 20␤»
02:27 colomon star: sub a(@b, $c) { say :@b.perl; say :$c.perl; }; a((1, 2, 3), 20);
02:27 p6eval star 2010.07: OUTPUT«"b" => (1, 2, 3)␤"c" => 20␤»
02:27 colomon star: sub a(@b, $c) { say :@b.perl; say :$c.perl; }; a(1...3, 20);
02:27 p6eval star 2010.07: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤  in 'a' at line 22:/tmp/v2qx0M4vkH␤  in main program body at line 22:/tmp/v2qx0M4vkH␤»
02:30 colomon star: sub a(@b, $c) { say :@b.perl; say :$c.perl; }; my @array = 1...3; a(@array, 20);
02:30 p6eval star 2010.07: OUTPUT«"b" => [1, 2, 3]␤"c" => 20␤»
02:30 [Coke] RT: 671 total, 199 new, 17 need tests.
02:34 ashleydev joined #perl6
02:36 ash_ nqp: say(1);
02:36 p6eval nqp: OUTPUT«1␤»
02:37 ash_ nqp: my $a := 4; my $b := sub { return $a; }; $a := 123; say($b());
02:37 p6eval nqp: OUTPUT«Routine declaration requires a signature at line 1, near "{ return $"␤current instr.: 'parrot;HLL;Grammar;panic' pc 552 (src/cheats/hll-grammar.pir:205)␤»
02:37 ash_ nqp: my $a := 4; my $b := { return $a; }; $a := 123; say($b());
02:37 p6eval nqp:  ( no output )
02:37 ash_ nqp: my $a := 4; my $b := { return $a; }; $a := 123; say(1, $b());
02:37 p6eval nqp:  ( no output )
02:38 ash_ rakudo: my $a := 4; my $b := { return $a; }; $a := 123; say(1, $b());
02:38 p6eval rakudo 6b318e:  ( no output )
02:40 ash_ rakudo: sub f($a) { return { return $a + 3; } }; say 4 f
02:40 p6eval rakudo 6b318e: OUTPUT«===SORRY!===␤Confused at line 22, near "say 4 f"␤»
02:40 ash_ rakudo: sub f($a) { return { return $a + 3; } }; say f 4
02:40 p6eval rakudo 6b318e: OUTPUT«_block87␤»
02:41 ash_ rakudo: sub f($a) { return { return $a + 3; } }; say (f 4)();
02:41 p6eval rakudo 6b318e:  ( no output )
02:41 ash_ rakudo: sub f($a) { return { return $a + 3; } }; say(f(4)());
02:41 p6eval rakudo 6b318e:  ( no output )
02:42 ash_ nqp: sub f($a) { return { return $a + 3; } }; my $b = f(3); my $c = f(5); say($b());
02:42 p6eval nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 1, near " f(3); my "␤current instr.: 'parrot;HLL;Grammar;panic' pc 552 (src/cheats/hll-grammar.pir:205)␤»
02:43 karb joined #perl6
02:46 plobsing nqp: sub f($a) { return sub () {return $a + 3} }; say(f(1)())
02:46 p6eval nqp: OUTPUT«4␤»
02:46 [Coke] phenny: ask pmichaud if we can close 75030 now.
02:46 phenny [Coke]: I'll pass that on when pmichaud is around.
02:47 sorear nqp: sub k($x) { sub () { $x }; }; my $a := k(1); my $b := k(2); say($a());
02:47 p6eval nqp: OUTPUT«1␤»
02:47 ash_ ya, nqp-rx supports closures without having to call newclosure now (tested in my terminal)
02:58 agentzh joined #perl6
02:59 drbean joined #perl6
03:09 masonkramer joined #perl6
03:09 molaf joined #perl6
03:10 sorear coming up with a sane representation of character classes: not easy
03:13 * sorear ponders <[一..七]>
03:13 ingy :)
03:14 tylercurtis .u …
03:14 phenny U+2026 HORIZONTAL ELLIPSIS (…)
03:14 ingy 二。。八
03:15 sorear rakudo: say '丁' ~~ <[一..七]>
03:15 p6eval rakudo 6b318e: OUTPUT«0␤»
03:15 sorear rakudo: say '二' ~~ <[一..七]>
03:15 p6eval rakudo 6b318e: OUTPUT«0␤»
03:15 sorear oh right I forgot the slashes
03:15 sorear rakudo: say '二' ~~ /<[一..七]>/
03:15 p6eval rakudo 6b318e: OUTPUT«␤»
03:15 sorear rakudo: say '丁' ~~ /<[一..七]>/
03:16 p6eval rakudo 6b318e: OUTPUT«丁␤»
03:16 sorear ok it's using codepoint order, not logical order
03:18 sorear (that's kinda nice, making <[一..七]> match the correct 7(?) characters would be ... interesting)
03:28 petdance joined #perl6
03:30 kar joined #perl6
03:33 cjk101010 joined #perl6
03:36 Axius joined #perl6
04:03 Axius joined #perl6
04:38 cjk101010 joined #perl6
04:39 dju joined #perl6
04:43 dju joined #perl6
04:44 mj41_ joined #perl6
04:45 pnate joined #perl6
04:45 araujo joined #perl6
04:46 alc joined #perl6
04:51 REPLeffect joined #perl6
05:08 alester_ joined #perl6
05:09 kaare joined #perl6
05:14 Axius joined #perl6
05:59 wtw joined #perl6
06:13 moritz_ good morning
06:13 sorear hello
06:14 uniejo joined #perl6
06:16 Axius joined #perl6
06:23 dudulz joined #perl6
06:24 squeeky morning!
06:29 ghyspran joined #perl6
06:30 Mowah joined #perl6
06:31 squeeky Rakudo's now available for mac homebrew, 'brew update; brew install rakudo-star'. \o  \o/  o/
06:32 moritz_ \o//
06:43 Casan joined #perl6
06:44 pugssvn r31962 | moritz++ | [t/spec] tests for RT #RT #77160, flattening of quantified captures in Match objects
06:46 moritz_ phenny: tell bbkr that I improved a test of his in t/spec/S05-match/capturing-contexts.t in commit r31962 - isa_ok $thing, Any; is true for all $things except Mu and Junction - probably not what you want
06:46 phenny moritz_: I'll pass that on when bbkr is around.
06:47 pugssvn r31963 | moritz++ | [t/spec] be even more explicit with undefinedness check
06:59 Axius joined #perl6
07:00 dual joined #perl6
07:14 drbean joined #perl6
07:20 foodoo joined #perl6
07:36 baest joined #perl6
07:36 wamba joined #perl6
07:37 ingy greetings
07:41 ash_ joined #perl6
07:47 moritz_ $ ./perl6 -e '$_="abc"; say m:c/./; say m:c/./'
07:47 moritz_ a
07:47 moritz_ b
07:47 moritz_ \o/
07:52 sorear ?
07:53 moritz_ I've implemented the default values for :c locally
07:56 ash__ joined #perl6
08:00 moritz_ now I just need to move the implementation to where it belongs :-)
08:02 pugssvn r31964 | moritz++ | [S05] saner defaults for :c and :p; without a previous match, $/.to blows up
08:06 moritz_ http://use.perl.org/~pudge/journal/40493 use.perl.org is open for adoption
08:08 Mowah joined #perl6
08:09 masak joined #perl6
08:09 masak oh hai, #perl6!
08:09 moritz_ oh hai
08:14 frettled ia ia!
08:14 stereonaut joined #perl6
08:14 masak how was it again, were numifications of non-numeric strings such as 'foo' going to throw a warning or an error of some kind? http://twitter.com/catherin​edevlin/status/20941945707
08:15 moritz_ it should warn
08:15 masak thanks.
08:16 moritz_ a python programmer trying otut Perl 6. NOt bad :-)
08:16 moritz_ "Trying Perl 6. Wow, I expected it to be a little less... Perl."
08:16 moritz_ so much for the "Perl 6 is not Perl" thing :-)
08:17 frettled haha
08:18 kaare_ What does the :auth trait on a classname actually do?
08:18 moritz_ it can distinguish several modules with the same name
08:19 kaare_ OK, thought so. Just couldn't find a description in the synopsis
08:19 moritz_ try S10 or S11
08:20 kaare_ It's mentioned in S12. But not explained.
08:21 kaare_ ... or maybe explained outside my attention span ;-)
08:21 moritz_ yeah. Look in S11 instead
08:22 masak moritz_: one could write your last spec change as +$/.?to :)
08:22 draxil joined #perl6
08:22 masak (not saying one should...)
08:22 moritz_ masak: no
08:22 moritz_ it's not the same
08:23 moritz_ a failed match object might have a non-sensical .to
08:23 masak oh, right.
08:23 moritz_ one might write it as +($/ || $/.to)
08:24 moritz_ but I don't think there's much to gain with golfing in this part of the spec
08:24 masak true.
08:24 masak and that one depends on the numeric value of False.
08:24 masak which is, or ought to be, a code smell.
08:25 moritz_ it's another thing that I first implemented according to the spec, and then I found it didn't work
08:25 moritz_ (actually I expected it to fail in that way, but I couldn't resist trying anyway)
08:25 masak :)
08:26 * moritz_ is pleased to announce that we now pass t/spec/S05-modifier/continue.t without any fudges
08:26 pugssvn r31965 | moritz++ | [t/spec] unfudge :pos and :continue modifier tests for Rakudo
08:28 * moritz_ wonders how :g:p is supposed to work
08:28 dalek rakudo: 69561ef | moritz++ | src/Perl6/Actions.pm:
08:28 dalek rakudo: :continue and :pos now default to ($/ ?? $/.to !! 0)
08:28 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​9561ef449a81aee22189229e9724ea23565e6ee
08:29 Alias joined #perl6
08:43 dakkar joined #perl6
08:43 jnthn morning, #perl6 :-)
08:44 moritz_ morning jnthn
08:46 masak lolitsjnthn!
08:47 jnthn lol m's
08:47 oha morning
08:47 moritz_ the spectests seem to assume that m:p:g/.../ matches multiple times, as long as there are no gaps in the matches
08:47 moritz_ ie each match is tied to the end position of the previous match
08:47 moritz_ now, what happens for a zero-width match?
08:47 masak phenny: tell tadzik ufo pulled, including the newest commit. thanks.
08:47 phenny masak: I'll pass that on when tadzik is around.
08:48 moritz_ I'm inclined to say that a match fails then
08:48 masak moritz_: the Right Thing happens.
08:48 masak moritz_: couldn't it just ignore the zero-width match and move on?
08:48 masak a kind of always-progress criterion.
08:48 Axius joined #perl6
08:49 moritz_ masak: that's what it does now. But that violates the :p concept
08:49 masak oh, ok.
08:49 * masak doesn't know what :p does
08:50 moritz_ anchors to a specific position
08:50 masak but if it violates it, then an error sounds sane.
08:50 masak it's clearly better than just looping infinitely.
08:50 moritz_ well, not error, just no match
08:50 masak huh. ok.
08:50 oha moritz_?
08:50 masak I think I'd have to use it in practice to get a feel for what's useful.
08:50 moritz_ oha?
08:50 oha if the regex say match nothing, it should match
08:51 oha but if that means infinite loop, that would be better to error
08:51 meteorjay joined #perl6
08:51 oha when it happen an deep recursion, you get an error and not return undef
08:52 moritz_ I guess we'll tell people to use :c instead of :p if they want to have zero-width matches combined with :g
08:52 moritz_ anyway, it's a one-line change if we want any of the other possible behaviours
08:52 oha moritz_, may i suggest to warn at least?
08:52 masak for those of us who are still on use.perl: http://use.perl.org/~pudge/journal/40493
08:53 masak pudge is looking to give it away to someone who can give it a 'good home'.
08:54 moritz_ oha: warning seems like a good balance for now
08:54 moritz_ oha++
08:55 whiteknight joined #perl6
08:56 sorear masak: hi!
08:56 masak sorear! \o/
08:56 sorear masak: is it deliberate that I get access denied when trying to view commnts on your blog?
08:57 masak sorear: definitely not.
08:57 masak that sounds really odd.
08:57 moritz_ sorear: I also have problems viewing use.perl.org comments right now
08:57 masak viewing them logged in seems to work fine.
08:59 sorear hello jnthn
08:59 moritz_ I see only my own comments, and replies to them
08:59 moritz_ on a blog post by masak that shows "22 Comments
09:00 masak I'm not sure what to do to get that fixed.
09:01 jnthn morning, sorear
09:02 moritz_ masak: I'll try active waiting first
09:02 masak rakudo: say '一'..'七'
09:02 p6eval rakudo 69561e:
09:02 p6eval ..OUTPUT«(timeout)一一一一一一一一一一一一一一一一一一一一一​一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一​一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一​一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一�
09:02 masak stuck on square one... :)
09:03 moritz_ rakudo: say ('一'..'七').[^20]
09:03 p6eval rakudo 69561e: OUTPUT«一一一一一一一一一一一一一一一一一一一一␤»
09:04 moritz_ rakudo: say '一'.succ
09:04 p6eval rakudo 69561e: OUTPUT«一␤»
09:04 moritz_ that explains a lot :/
09:05 * sorear wonders what that *should* be
09:05 * sorear can make a case for 丁 or 二
09:05 masak rakudo: class A { sub b { 0x10 }; has $!c = b; method foo { $!c } }; say A.new.foo
09:05 p6eval rakudo 69561e: OUTPUT«16␤»
09:05 masak \o/
09:06 * jnthn thought he fixed that one a couple of weeks ago :-)
09:06 * sorear wonders how long it will take #perl6 to notice that I only actually know about ten hanzi
09:06 jnthn sorear: Don't worry, I only know enough to expect 二 next ;-)
09:06 sorear .u 4e00
09:06 phenny U+4E00 CJK UNIFIED IDEOGRAPH-4E00 (一)
09:07 sorear .u 4e01
09:07 phenny U+4E01 CJK UNIFIED IDEOGRAPH-4E01 (丁)
09:07 sorear that's the case for 丁
09:07 jnthn Oh.
09:07 jnthn masak: #75644 - I agree with your analysis there.
09:07 jnthn masak: I'd like a better error at some point.
09:07 jnthn But it's right to error out.
09:07 masak aye.
09:08 * moritz_ is buried in a flood of test-needing tickets
09:09 moritz_ many of them would be so much nicer to test if we had exception objects...
09:09 dolmen joined #perl6
09:10 sorear wait, are you talking about hard-coding rakudo error messages in the implementation independant tests?  ick
09:11 oha in src/builtin/Str.pir i see there are "ranges" where succ work on. if the ranges aren't found they just skip to other char:
09:11 dalek niecza: deb4f49 | sorear++ | Cursor.cs:
09:11 dalek niecza: First draft of the NFA generator and dumper for the LTM system
09:11 dalek niecza: review: http://github.com/sorear/niecza/commit/d​eb4f49a69ce16957d783d1ee6f922fb65482eec
09:11 oha rakudo: say '0一'.succ;
09:11 p6eval rakudo 69561e: OUTPUT«1一␤»
09:12 sorear mind you, it would not be correct to just treat the hanzi numerals as such a range
09:12 sorear because they don't use the place value system
09:14 briang joined #perl6
09:14 squeeky 四十二 = 4 10 2, 4 x 10 + 2 = 42
09:14 sorear the successor of 十 is 十一, etc
09:17 ingy si shi er
09:17 masak I think we should probably draw the line somewhere before that.
09:17 masak in fact, maybe all the non-ASCII behaviour of ranges and succ et al belongs in well-maintained non-core modules.
09:17 masak just a thought.
09:18 sorear ideally written by someone who actually uses said numbers on a regular basis
09:18 ingy [<masak>..<sorear>]
09:19 moritz_ +1
09:19 masak three people in agreement!
09:19 squeeky hmmm, tempting to procrastinate on work and port Math::Roman to p6....
09:19 sorear ingy: I was a bit unclear yesterday when talking about niecza's regex support
09:19 sorear ingy: as I see it, niecza is an optimizing p6regex compiler
09:19 moritz_ squeeky: somebody already submitted a Math::Roman-like subroutine to rosettacode
09:19 moritz_ (in p6, that is)
09:19 AndreasX joined #perl6
09:19 sorear ingy: the fact that it also supports non-regex perl 6 code is secondary
09:20 tom_tsuruhara joined #perl6
09:20 tom_tsuruhara joined #perl6
09:22 ingy sorear: I'm not sure I grok all that
09:22 ingy sorear: I'm just looking for an easy way to port pegex into a p6 impl
09:23 ingy sorear: but it's not high on any current todo list
09:23 ingy sorear: I'd like to play with niecza though
09:23 masak phenny: tell szabgab that I've now pulled szabgab/html-template into masak/html-template. thanks for your help updating the module!
09:23 phenny masak: I'll pass that on when szabgab is around.
09:25 masak ooh! ooh! I've thought of a new badge for modules.perl6.org !
09:25 moritz_ do tell
09:25 masak this one will require a bit of manual editing each time, but it'll be worth it.
09:26 masak a "reviewed" badge, linking to the review.
09:26 masak mwhahaha
09:26 ingy sorear: I think if you rename http://github.com/sorear/niecza/blob/master/README to README.pod, github will format it for you...
09:26 sorear ingy: is something stopping you?
09:26 sorear ingy: re. "I'd like to play with niecza though"
09:26 ingy sorear: about 100 things ;)
09:27 squeeky but a snitch ain't one of them
09:30 dalek niecza: 09faa31 | sorear++ | README:
09:30 dalek niecza: Rename README to README.pod (ingy)
09:30 dalek niecza: review: http://github.com/sorear/niecza/commit/0​9faa31e38b1668c630426df2b2414d9390b4737
09:30 dalek rakudo: 9d7428f | moritz++ | src/core/Cool-str.pm:
09:30 dalek rakudo: fix interaction between :g and :p regex modifiers in Cool.match
09:30 dalek rakudo: At least there are some tests that expect them to work together this way,
09:30 dalek rakudo: similar to m/\G$regex/g in p5
09:30 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​d7428fe4f498c1a86efe37eb5f9f4f3053b9092
09:32 ingy sorear: \o/
09:33 macroron joined #perl6
09:34 sorear ingy: I don't suppose any of those 100 things can be helped?
09:34 sorear I'm lonely in this sandbox...
09:35 masak sorear: a fate that often befalls the implementor of a non-mainstream Perl 6 implementation.
09:36 colomon joined #perl6
09:36 oha masak, i've updated a bit the buf.pod
09:36 moritz_ indeed
09:36 masak oha: will look.
09:37 moritz_ it takes a lot of effort to make a p6 compiler usable, to the point where you can actually attract users
09:37 oha masak, just explained a bit well why i need that
09:37 oha i was thinking to add a http example too
09:37 masak moritz_: aye. it's a bit of a bootstrapping Catch 22.
09:37 moritz_ even more so since rakudo is failry usable
09:37 masak oha: since no-one has picked up on the p6l thread, I'll write a response there now.
09:38 oha masak, i was thinking that probably alot are on holydays
09:38 oha but well, your replies are more then appreciated
09:38 masak oha: to be honest, I'm thinking the email you sent could have done a bit more to attract well-deserved attention. :)
09:39 masak oha: but that's not your fault, it's your first email to p6l.
09:39 masak will try to correct that by explaining why the ideas are worthwhile.
09:39 oha masak, i see what you mean. but i have very few knowledge about p6 spec.
09:40 masak just hang in there.
09:40 masak the road up the mountain is shorter than you might think.
09:40 oha imho, this may be a virtue in some cases
09:40 oha but well, i can't propose something really :)
09:42 oha (anyway i confess i didn't read the archives to have an idea about how that ML works)
09:43 oha moritz_, regarding rakudo. i actually think that the poor IO is a big obstacle right now
09:43 oha i see application where speed isn't an issue, supposed you can do networking
09:43 moritz_ oha: I know; and I plan to work a bit on it once masak++ has finished his gsoc project, and his work is merged into master
09:44 daxim joined #perl6
09:44 moritz_ at least I plan to work on the non-network IO. I don't know enough about networks to make it work
09:44 ingy sorear: I just mean that I have 100 project things and niecza is pretty deep on the stack right now. I'll keep your loneliness in mind though. It would be nice to see how my p6 modules fare on niecza
09:44 Casan is perl6's augment like extends in java.. ?
09:44 oha moritz_, i've remade IO::Socket::INET to make it usable for binary data, and i was able to write a Gearman::Client in just 2 hours after that.
09:45 oha but that depends on Buf
09:45 sorear Casan: not at all
09:45 moritz_ \o/
09:45 sorear Casan: perl6's is is like extends in Java
09:45 bbkr moritz_: thanks for correcting test in capturing-contexts.t
09:45 phenny bbkr: 06:46Z <moritz_> tell bbkr that I improved a test of his in t/spec/S05-match/capturing-contexts.t in commit r31962 - isa_ok $thing, Any; is true for all $things except Mu and Junction - probably not what you want
09:45 sorear class Sub is Super { ... }
09:45 sorear augment allows you to modify classes in place.  don't use without a good reason.
09:46 moritz_ 'augment' is an in-place modification of the class (and generally considered evil, unless you have a good reason)
09:46 oha is augment scoped?
09:46 sorear no
09:46 moritz_ no
09:46 oha nasty but fantasty :)
09:46 Casan sorear: thanks for the clarification.. so my understanding is that augment kinda overrides/replaces the existing.
09:46 sorear (which is most of why it's evil)
09:46 moritz_ if you want something scoped, use a lexical (multi) sub instead
09:47 sorear unfortunately, we don't have the ability to treat lexical subs and methods on an equal footing (yet)
09:47 masak oha: email sent.
09:47 sorear (do any systems besides CLOS and C# support that?)
09:47 oha masak++
09:48 moritz_ sorear: well, then don't use the method API, just sub calls
09:49 moritz_ you can always have a multi that falls back to calling a method
09:50 briang left #perl6
09:52 oha is there a way to override core mods in rakudo?
09:52 oha i mean. i've written this IO2::Socket::INET
09:52 oha but i would like to replace IO::Socket*
09:52 javs joined #perl6
09:54 masak 'augment' adds to things, and 'supersede' replaces them.
09:54 masak in theory, that should work with modules also.
09:54 masak but remember that it's antisocial to use MONKEY_TYPING
09:55 moritz_ oha: submit a patch :-)
09:55 oha moritz_, not right now. still a mess here
09:56 moritz_ there's likely some PIR magic that allows you to alias namespaces
09:56 oha i'll try to work around it
09:57 oha right now the IO::Socket::* is used anywhere?
09:58 moritz_ yes
09:58 moritz_ mberends has a HTTP server on top of it
09:59 oha i must try to make it backward compatible
09:59 moritz_ not necessarily
10:00 oha iirw the actual revision have read and write which handle Str
10:00 moritz_ just discuss your changes with mberends when he shows up
10:00 oha i've rewritten to use recv and send with Buf
10:00 oha i think i can make read and write syntactic sugar
10:00 oha moritz_, ok. i'll try to catch him
10:00 redicaps left #perl6
10:00 moritz_ that would certainly be nice (read/write as sugar)
10:04 NOTevil joined #perl6
10:05 bbkr rakudo: sub infix:<0.0>(Int, Int) {say "\o/"}; 0 0.0 0; # curious...
10:05 p6eval rakudo 69561e: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\o' at line 22, near "/\"}; 0 0.0"␤»
10:05 bbkr rakudo: sub infix:<0.0>(Int, Int) {say '\o/'}; 0 0.0 0; # curious...
10:05 p6eval rakudo 69561e: OUTPUT«\o/␤»
10:05 bbkr rakudo++
10:10 cono rakudo: grammar A { regex TOP {^<B>$}; token B { <C> | <D> }; token C { c }; token D { d }; }; my $m = A.parse("c"); $m<b><c>.say
10:10 p6eval rakudo 69561e: OUTPUT«Any()␤»
10:11 cono Is it a bug?
10:11 moritz_ b vs. B
10:11 cono oops ;)
10:12 cono moritz_: thanks
10:12 cono rakudo: grammar A { regex TOP {^<B>$}; token B { <C> | <D> }; token C { c }; token D { d }; }; my $m = A.parse("c"); $m<B>.keys.perl.say
10:12 p6eval rakudo 69561e: OUTPUT«()␤»
10:12 cono rakudo: grammar A { regex TOP {^<B>$}; token B { <C> | <D> }; token C { c }; token D { d }; }; my $m = A.parse("c"); %($m<B>).keys.perl.say
10:12 p6eval rakudo 69561e: OUTPUT«("C")␤»
10:12 cono ah
10:16 masak lunch &
10:17 oha i've looked ad Cool.pm but i still can't understand what it does
10:18 cono Null PMC access in get_repr() Is that a critical error ?
10:18 moritz_ yes
10:21 moritz_ seems it's time to blog about Cool
10:22 cono rakudo: class A::B { has $.s = "hey" }; my $q = "B"; my $l = gather { take "A::$q".new; }; $l[0].s.say
10:22 p6eval rakudo 69561e: OUTPUT«Null PMC access in get_repr()␤  in <anon> at line 22:/tmp/kBN02ALah1␤  in 'List::at_pos' at line 1␤  in 'Any::postcircumfix:<[ ]>' at line 1658:CORE.setting␤  in main program body at line 1␤»
10:22 cono Found how to reproduce ;)
10:22 moritz_ just to have a place to point people to when people ask
10:22 moritz_ rakudo: class A::B { has $.s = "hey" }; my $q = "B"; my $l = gather { take "A::$q".new; }; $l[0]
10:23 p6eval rakudo 69561e: OUTPUT«Null PMC access in get_repr()␤  in <anon> at line 22:/tmp/Brx41cXyGM␤  in 'List::at_pos' at line 1␤  in 'Any::postcircumfix:<[ ]>' at line 1658:CORE.setting␤  in main program body at line 1␤»
10:23 moritz_ rakudo: class A::B { has $.s = "hey" }; my $q = "B"; my $l = gather { take "A::$q".new; };
10:23 p6eval rakudo 69561e:  ( no output )
10:23 moritz_ rakudo: class A::B { has $.s = "hey" }; my $q = "B"; my $l = gather { take "A::$q".new; }; $l.eager
10:23 p6eval rakudo 69561e: OUTPUT«Null PMC access in get_repr()␤  in <anon> at line 22:/tmp/7avPB0sgCd␤  in main program body at line 1␤»
10:23 krakan joined #perl6
10:24 cono moritz_: it's only possible if prefix namespace present A::, without it, all good
10:24 cono rakudo: class B { has $.s = "hey" }; my $q = "B"; my $l = gather { take "$q".new; }; $l[0].s.say
10:24 p6eval rakudo 69561e: OUTPUT«hey␤»
10:24 gfldex cono: rakudobug@perl.org
10:25 cono ok, thanks
10:26 oha moritz_, apropos Cool: it would be welcome :)
10:32 TiMBuS is there a way to un-arrayify optional captures? 'ab' ~~ /(a)? b/; # $0 is an array
10:34 oha TiMBuS, (a||) works?
10:34 TiMBuS does it? I didn't think of that
10:34 oha TiMBuS, should. lemme check
10:35 TiMBuS oh. nothing isnt allowed
10:35 TiMBuS of course
10:35 sorear (a||<?>)
10:35 sorear well, [(a)||<?>}
10:35 sorear s/}/]/
10:35 TiMBuS that's the one
10:37 oha rakudo: ("ab"~~/(a||'')b/).perl
10:37 p6eval rakudo 69561e:  ( no output )
10:39 oha rakudo: ("ab"~~/(a||'')b/).caps
10:39 azert0x joined #perl6
10:39 p6eval rakudo 69561e:  ( no output )
10:39 oha rakudo: say ("ab"~~/(a||'')b/).caps
10:39 p6eval rakudo 69561e: OUTPUT«0  a␤»
10:39 azert0x joined #perl6
10:40 azert0x joined #perl6
10:40 exodist joined #perl6
10:47 Axius joined #perl6
10:51 cosimo joined #perl6
10:54 masonkramer joined #perl6
10:55 masak rakudo: class Foo {}; say "Foo".new.perl
10:55 p6eval rakudo 9d7428: OUTPUT«Foo.new()␤»
10:55 masak I don't think that should be allowed.
10:55 masak why should Str.new reasonably behave like that?
10:56 sorear because that's the way Perl 5 worked, and the overriding principle of Parrot's design is "like Perl 5 unless noted"
10:57 sorear it should be noted that Perl 5 did not reify classes as user data objects; static method invocation involved using the string itself as an object
10:58 masak I think I've seen a rakudobug protesting this behaviour.
10:58 jhuni joined #perl6
10:59 jnthn It's Just Plain Wrong.
10:59 jnthn No point patching it up though - it'll just die when we switch meta-model.
10:59 masak \o/
10:59 masak I hope people won't grow dependent on it.
11:00 whiteknight joined #perl6
11:02 dalek niecza: 4ed6d14 | sorear++ | Cursor.cs:
11:02 dalek niecza: Allow deparsing of general character class terms
11:02 dalek niecza: review: http://github.com/sorear/niecza/commit/4​ed6d1496e049e4c08d23f85561b66420698f8c3
11:02 dalek niecza: 974578f | sorear++ | Cursor.cs:
11:02 dalek niecza: Implement char class nodes, tweak char class design
11:02 dalek niecza: review: http://github.com/sorear/niecza/commit/9​74578fdd2931c9b301218eb8edfce8c11e33ae5
11:17 Mowah joined #perl6
11:21 dalek rakudo: 811c1c5 | moritz++ | src/core/Match.pm:
11:21 dalek rakudo: remove warning from Match.perl. While Match.new() does not accept subcaptures so
11:21 dalek rakudo: far, the result is running perl code nonetheless
11:21 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​11c1c5636a0647a9d50ea623ca6bccd9379d927
11:26 tjyang joined #perl6
11:32 colomon http://github.com/colomon/List-Utils  # had fail when trying to add it to pls last night.  :(
11:33 bbkr http://rt.perl.org/rt3/Tic​ket/Display.html?id=66620 - can i close this one? it's related to parrot bug fixed 10 months ago.
11:33 moritz_ sure
11:33 moritz_ colomon: JSON doesn't like trailing commas, and you forgot to add a comma after the previous line
11:34 moritz_ ... which is why I don't add my project as the list line in the file :-)
11:34 moritz_ fixed.
11:34 colomon wait, so it did push?
11:34 moritz_ aye
11:35 colomon then why does git keep on telling me  ! [rejected]        master -> master (non-fast forward)  when I try to push it?
11:36 moritz_ http://github.com/masak/proto/commit/6f​79441f07d72fd032bfd5099d15d65d20c69a1b
11:36 moritz_ colomon: try git pull --rebase
11:37 colomon huh.  pushed and very clearly with bad commas.  sigh.
11:37 colomon moritz_++ for fixing it.
11:39 bbkr rakudo: use Test; class Thing {}; my $thing = Thing.new(); ok($thing.isa("Thing")); ok($thing.isa(Thing)); # checking http://rt.perl.org/rt3/Tic​ket/Display.html?id=69999
11:39 p6eval rakudo 9d7428: OUTPUT«ok 1 - ␤ok 2 - ␤»
11:39 bbkr rakudo: use Test; class Thing::something {}; my $thing = Thing::something.new(); ok($thing.isa("Thing::something")); ok($thing.isa(Thing::something));
11:39 p6eval rakudo 9d7428: OUTPUT«not ok 1 - ␤ok 2 - ␤»
11:41 Axius joined #perl6
11:42 bbkr hmm. can someone tell me if this is expected behavior? .isa("Thing::something") should behave as ~~Thing::something or ~~Str ?
11:45 moritz_ as ~~Thing::something I hope
11:45 moritz_ at least I don't see why it should behave differently for strings containing short and long type names
11:51 rgrau_ joined #perl6
11:58 * masak uses Møøse for $WORK
11:58 masak heady stuff.
11:59 moritz_ handy stuff, too
12:00 masak ϶oϵ
12:03 M_o_C joined #perl6
12:08 chuhnk joined #perl6
12:09 chuhnk Just read http://www.perl.com/pub/2010/08/peopl​e-of-perl-6-jonathan-worthington.html and became intrigued
12:09 masak chuhnk: cool!
12:09 masak we're intrigued too, almost all the time :)
12:10 chuhnk so perl6 is going to be a compiled language?
12:10 masak chuhnk: Perl 5 is a compiled language.
12:10 chuhnk really I never thought of it like that
12:10 masak but not everybody knows that.
12:10 moritz_ Perl 6 is just a language. The matter of how it is executed is left to the implementor
12:10 chuhnk I always thought of it just as a dynamic scripting language
12:10 masak it is.
12:10 masak different axes :)
12:11 chuhnk interesting
12:11 masak chuhnk++ # learned something new within 2 minutes :)
12:11 moritz_ currently rakudo compiles Perl 6 code to bytecode, which it then executes in-memory
12:11 moritz_ but you can write that bytecode to disc too, if you prefer
12:11 moritz_ actually all Perl 6 implementations I know of are (mostly) compilers
12:12 masak maybe Pugs started out as pure interpreter.
12:12 masak I've heard other small project talking about executing from the AST, too.
12:12 chuhnk so essentially its like scala? where you can do scalac source.scala and it compiles it into java bytecode or you can do scala source.scala and it compiles then runs it.
12:12 masak aye.
12:13 chuhnk very nice
12:13 masak that seems a reasonable comparison.
12:13 moritz_ pugs compiled to an intermediate code, and then either interpreted that, ,or compiled to another backend
12:13 masak even from the start? I don't remember.
12:14 moritz_ not sure what it did in the beginning
12:14 chuhnk This is quite exciting because from that link above, theres talk of having threading and parallel programming support
12:15 mj41_ joined #perl6
12:16 masak tests 12-18 in t/spec/S32-io/IO-Socket-INET.t fail for me with latest Rakudo. known?
12:16 moritz_ masak: try to re-run it
12:17 * masak does so
12:17 moritz_ masak: i get some random failures from time to time, but usually only one fails
12:18 jnthn chuhnk: Yeah, I hope Jonathan gets some work done on that at some point soonish. :-)
12:19 * moritz_ hopes so too :-)
12:20 chuhnk ha my boss has just said perl will not go mainstream :p
12:20 chuhnk i disagree, but what do I know
12:20 * moritz_ thinks that Perl is already mainstream
12:21 masak chuhnk: is your boss very young or living under a rock?
12:21 masak because that would explain why she doesn't already know that Perl is mainstream.
12:21 chuhnk perl6* sorry lol.
12:22 masak now that's another matter :)
12:22 masak I'm on the fence there as well.
12:22 masak we need to get Rakudo or some other implementation fast, then we might have a chance.
12:23 masak rakudo: sub f(Int $x where Inf) { say "called" }; f(Inf); f(42)
12:23 p6eval rakudo 9d7428: OUTPUT«Nominal type check failed for parameter '$x'; expected Int but got Num instead␤  in 'f' at line 22:/tmp/R59qPo3sAx␤  in main program body at line 22:/tmp/R59qPo3sAx␤»
12:23 fod joined #perl6
12:23 jaldhar joined #perl6
12:23 masak how do we plan to solve the above?
12:24 masak it's wrong, right?
12:24 moritz_ it's wrong
12:24 moritz_ Inf is kinda interesting
12:24 moritz_ because it's both of type Num and Int
12:24 masak aye. :)
12:25 jnthn wtf?
12:25 jnthn Multiple inheritance?
12:25 masak rakudo: class myInf is Int is Num {}; say myInf ~~ Int; say myInf ~~ Num
12:25 moritz_ magic?
12:25 jnthn I...think that's going to end very, very badly.
12:25 p6eval rakudo 9d7428: OUTPUT«1␤1␤»
12:25 masak :D
12:26 masak rakudo: sub f(Int $x = Inf) { say $x }; f(42); f()
12:26 p6eval rakudo 9d7428: OUTPUT«42␤Inf␤»
12:27 jnthn Think we still have an RT open about that one.
12:27 jnthn I'm not sure how this will work out in the end, anyways.
12:27 masak aye.
12:27 masak jnthn: we could typecheck at compile-time! :)
12:27 masak at least for literals.
12:27 jnthn masak: Coming soon to a compiler near you! :P
12:28 jnthn Yes, should be do-able. :-)
12:28 * masak makes sekkrit plans to do it in Yapsi
12:28 moritz_ I guess we need to have that serialization stuff first :(
12:28 colomon at one point, TimToady and I discussed making Inf a separate Numeric type.
12:29 colomon I don't know that either of us actually thought through the details.
12:30 masak colomon: wouldn't that make it match neither Int nor Num?
12:30 moritz_ unless it's multi-inerited
12:30 moritz_ *inherited
12:31 colomon as far as I can see, yes.
12:31 jnthn moritz_: Yeah. I expect that to happen soonish though.
12:31 masak \o/
12:31 colomon the thing is, we probably want Inf and NaN to be there for *every* Real type.
12:31 masak colomon: that's a very good point.
12:32 chuhnk left #perl6
12:32 moritz_ jnthn: btw has your grant been approved?
12:32 colomon so solutions that require multi-inheritance are very limiting.
12:32 jnthn moritz_: I got permission from allison++ while at YAPC::EU to do at lesat the most immediately required Parrot change to support it properly there.
12:32 masak moritz_: I've re-run t/spec/S32-io/IO-Socket-INET.t about four times now. always failures on 12..18.
12:32 jnthn moritz_: No but it's currently being voted on, I believe.
12:32 moritz_ masak: :(
12:32 moritz_ jnthn: great that allison isn't against it :-)
12:34 jnthn moritz_: Yes, being able to grab a flip chart and scribble diagrams to explain what I was after and why I wanted it was a big help. meatspace++ :-)
12:36 moritz_ indeed
12:36 moritz_ just imagine how long our 5hrs discussion would have taken over email/irc :-)
12:37 jnthn Yeah, plus having the post the stroopwafel packet between each other as we did it woulda been a drag too.
12:37 * masak still hasn't opened his
12:37 moritz_ :-)
12:37 jnthn masak: no, me either :-)
12:38 masak guess I'm waiting for a girl to drop by so I can give her some stroopwafels.
12:38 jnthn masak: Though I only really got home yesterday. :-)
12:38 masak but the girls are few and far between... :)
12:38 moritz_ masak: I have a girl drop by every evening... :-)
12:38 jnthn masak: I could do the same but I suspect they have an expirey date... :-)
12:38 moritz_ she was very happy about the stroopwafels
12:38 moritz_ :-)
12:39 * masak has been afflicted by spring hormones in the past few days... in August!
12:39 pmurias joined #perl6
12:40 * jnthn avoids making a hormones => whoremoans pun
12:41 jnthn masak: Maybe it's the weather. Here it's been more springy than summery. :-)
12:42 jnthn (Though that mad me happy. It's colder. Phew.)
12:42 masak jnthn: avoidance fail.
12:42 jnthn *made
12:42 masak jnthn: I suspect it might have been Italy. not sure how.
12:42 jnthn :S
12:43 jnthn Well, just imagine if Kiev had won... :P
12:43 masak oh well. hormones come and go. Perl 6 remains. :)
12:43 moritz_ lol
12:49 [Coke] "overriding principle of parrot's design" (Freudian slip)
12:52 * masak doesn't see the slip
12:52 masak or was the overriding principle that hormones come and go but Perl 6 remains? :P
12:53 moritz_ colomon: btw List-Utils now appears on http://modules.perl6.org/
12:54 [Coke] masak: he meant "Perl 6"
12:54 masak who did?
12:54 [Coke] sorear:
12:54 [Coke] at least, I assume he did.
12:54 kensanata joined #perl6
12:55 masak hm. maybe.
12:55 masak Parrot does look a lot like Perl 5 to me, though.
12:55 masak I always thought of PIR as Perl 5 assembly :)
12:56 moritz_ there's certainly a lot of inspiration from p5 in there
12:56 alc joined #perl6
12:56 [Coke] yes, but you'd think if that was the overriding principle, we'd run p5 already.
12:57 mathw Well, that would have been easier if we actually understood what Perl 5 does
12:57 moritz_ except for the small fact that p5 is a universe of its own, without a spec
12:57 masak mathw: whatever it does, it's blazingly fast!
12:57 masak I mean... wow!
12:57 moritz_ and a small number of some hundred magic variabales
12:59 drbean joined #perl6
12:59 moritz_ did you know that $^N are stored by taking then ^N as an escape sequence, and using the result in the symbol table? :-)
12:59 moritz_ and other variables of the same format
13:00 masak perl6: say "\x263A"
13:00 p6eval pugs, rakudo 811c1c: OUTPUT«☺␤»
13:01 masak \o/
13:02 * moritz_ hopes to add niecza to the 'perl6' target list soonish
13:10 Holy_Cow joined #perl6
13:11 ruoso joined #perl6
13:12 meppl joined #perl6
13:13 coffeeyy joined #perl6
13:17 pmurias ruoso: the smop docs (stuff in lowdoc) should be turned into POD only modules?
13:26 pugssvn r31966 | pmurias++ | [v6-mildew] cleanup
13:26 pugssvn r31967 | pmurias++ | [smop] add main module
13:26 pugssvn r31968 | pmurias++ | [mildew] use smop's main module
13:26 pugssvn r31969 | pmurias++ | [v6-mildew] remove trash
13:27 pugssvn r31970 | pmurias++ | [smop] [Mildew-Setting-SMOP] update version numbers
13:33 PerlJam from p6l: "we'd need a pure Perl implementation of the rules engine that could match either text or data"  Aside from the speed penalty, I wonder how close GGE fits that bill.
13:34 * moritz_ mostly ignores Aaron Sherman on p6l. He has good ideas, but it's hard to get actual spec commit out of him
13:36 masak jnthn: aww, Signatures talk not up yet? I wanted to refer to it in a p6l post :/
13:38 jnthn masak: I made the PDF then lacked internets to upload it.
13:39 jnthn masak: Will do it later on today.
13:39 jnthn (Gotta pop out for a moment right now...)
13:39 masak no worries. sent email, might follow up later when PDF's online.
13:41 szabgab masak, jnthn either of you might be available for a perl6 hackathon around 6-7/11 in Eindhoven or near-by?
13:41 phenny szabgab: 09:23Z <masak> tell szabgab that I've now pulled szabgab/html-template into masak/html-template. thanks for your help updating the module!
13:42 masak PerlJam: the question isn't really well-posed as it is. with an actual description of how it should work, it might be possible to answer that.
13:43 masak PerlJam: PGE had several different "engines": p5re, p6re, and file glob. GGE has the p6re one. all of those are centered around matching text, so it's sort of a design assumption.
13:43 szabgab phenny: thank you too
13:43 moritz_ aye; assuming that stuff can be easily changed just because it's in Perl 6 is a misconception
13:44 masak szabgab: sounds like fun. I'm probably available then, but hesitant to tie myself up without further information.
13:44 moritz_ I mean change something that goes against a fundamental assumption of the module in question
13:44 szabgab I don't have further information yet, just asked the organizers of http://www.t-dose.org/
13:44 masak I think one should think of grammars as an inspiration here, not necessarily the means to match binary/hierarchical data.
13:44 szabgab for a perl stand and maybe for a room for  a hackathong
13:45 szabgab if they approve good
13:45 szabgab if onlt the stand gets approved we can still offer some talks and find a place for a hackathon
13:45 szabgab and then I'll try to get some funding for it
13:45 masak szabgab: using it as an opportunity to meet up with jnthn might be one way I could motivate it.
13:45 szabgab so far I have one maybe from pmichaud :)
13:46 masak consider it a maybe from me as well :)
13:46 szabgab 2 may-bees
13:49 moritz_ http://github.com/moritz/perlgeek.de/commi​t/8e3bb549b777438bf24c9f3213f63606b0d1ac4a is that clear/readable?
13:51 colomon ooo, hack-a-thong.
13:52 baest moritz_: very
13:53 baest moritz_++
13:53 moritz_ \o/
13:54 pugssvn r31971 | pmurias++ | [mildew] use Test::Script to make sure the mildew executable compiles
13:54 moritz_ then I haz blogged
13:54 moritz_ http://perlgeek.de/blog-en/perl-6/cool.html
13:54 moritz_ lol
13:55 baest :)
13:57 [particle] moritz_: why is Cool a Class and not a Role?
13:58 moritz_ [particle]: to be mutable, and thus monkey-typable
13:58 [particle] i suspect enquiring minds want to know
14:00 [particle] that is, you explain why Cool exists, but not why it's a Class.
14:00 alester joined #perl6
14:00 moritz_ right
14:02 * moritz_ adds the explanation
14:02 * [particle] gives moritz_++ karma points
14:02 moritz_ [particle]++
14:02 PerlJam saying "Cool fills this role" sounds a little odd then  ;)
14:03 [particle] s/role/niche|need/
14:03 moritz_ I dimly recall there being a second reason for it not being a role, but I can't remember what it was
14:03 * moritz_ changes it to 'niche'
14:03 masak moritz_: the fact that we now get to write 'class A is Cool'? :P
14:04 moritz_ masak: as a role, it would have been called "Magic"
14:04 moritz_ so that we can write "class A does Magic"
14:04 moritz_ I meant a technical reason :-)
14:04 masak of course.
14:06 PerlJam moritz_: you might add a little bit of text about why it's called "Cool" as I'm sure Other People react to the name without realizing there's a reason it has that name.
14:07 * moritz_ is not sure what to write about it
14:10 * PerlJam either actually
14:10 [particle] "These behaviors have long been considered cool by people new to Perl, so the class is appropriately named." ?
14:12 PerlJam Perhaps crib "convienent object oriented loopbacks" and "I'm cool with an argument of that type" and other bits of the paragraph at S02:1744
14:12 IllvilJa joined #perl6
14:14 moritz_ PerlJam++
14:15 PerlJam naming things like "bless" and "Cool" and such cause people outside of Perl to just think we're being cute and that's looked upon with disdain (much like camelia).  I think somewhere we should say "yeah, it's cute.  It's also memorable, and  that's the point"  (or something to that effect)
14:16 tadzik joined #perl6
14:16 tadzik good {daypart(:local)} #perl6
14:16 phenny tadzik: 08:47Z <masak> tell tadzik ufo pulled, including the newest commit. thanks.
14:16 tadzik masak: I hope the newest is included, the elder is broken :)
14:16 PerlJam (at least that's how it works for me so I assume Larry did it that way for that purpose ;)
14:17 moritz_ PerlJam: you might want to add such a note to the book
14:18 PerlJam moritz++
14:19 moritz_ in general I'd appreciate it if we had more explanations why stuff is like it is
14:20 Trashlord joined #perl6
14:20 PerlJam If we can gather enough "whys" maybe we could explicitly incoporate that into the structure of the book.
14:21 PerlJam something like:  through out the book you will see sidebars that looks like this.  These sidebars contain further explanation of why something is the way it is.
14:21 tadzik curiosity: Isn't (1..n).pick doing two array allocations itself?
14:21 tadzik it's quite an idiomatic way to write (n.rand + 1), could it be optimized to the latter, to avoid object juggling?
14:24 PerlJam tadzik: when I first read what you just wrote, I thought, "no it isn't" (wrt idiomatic) because I would tend to not pick that method when it's 1..N.  But I *would* choose it for N..M
14:24 tadzik yeah, n..m is even more fun
14:25 moritz_ tadzik: you could submit a patch for Range.pick
14:25 moritz_ tadzik: that avoids flattening the list
14:26 tadzik moritz_: what avoids?
14:27 moritz_ Range.pick
14:27 masak tadzik: yes, newest was included. that's why I wrote 'including the newset'. :)
14:28 masak yay, pmichaud's grant has been accepted: http://news.perlfoundation.org/2010/0​8/hague-grant-acceptance-lists-i.html
14:28 plobsing joined #perl6
14:28 PerlJam masak: that's a good slightly early birthday present
14:28 tadzik masak: I realized it's broken while being out of the net, yet I managed to login to GH from my friend's computer and make a commit using their web interface. Awful experience, I must say
14:28 jnthn yay \o/
14:28 masak tadzik: :)
14:31 tadzik what will be a good name for a module with subs replacing common shell commands, like mkdir -p, rm -r, cp -r? I initially named it Shell::Utils, but not sure if it really fits it. Ideas?
14:32 moritz_ File::Utils?
14:32 moritz_ Path::Utils?
14:32 moritz_ or ::Tools
14:32 moritz_ ExtUtils
14:32 PerlJam tadzik: Perl 5 puts those in File::Path.
14:32 PerlJam (not a particularly good name IMHO)
14:33 moritz_ otoh Shell::Tools isn't too bad
14:33 tadzik File::Tools? Or File::Utils
14:33 jnthn Shell::Emulation
14:34 PerlJam of course, they're also called "make_path" and "remove_tree" which I find oddly wrong too (why not remove_path?)
14:34 tadzik that sounds too generic imho
14:34 moritz_ MinUS - Minimalist Unix Shell
14:35 spq1 joined #perl6
14:35 kensanata joined #perl6
14:35 PerlJam I like FS::Tools personally.  The ones mentioned so far aren't about files as much as they are about the file system.  What other "common shell commands" will there be?
14:36 moritz_ FS sounds like it's file system manipulation - FAT, Ext3, RaiserFS etc.
14:36 moritz_ wow, http://www.reddit.com/r/programming/​comments/d0cm0/what_is_modern_perl/ is top 5 in r/programming/
14:36 moritz_ at least for a short while :-)
14:37 tadzik File::Tools sounds nice
14:37 tadzik I'll put File::Copy in here (it's too small and simple to be a separate module imho), definitely 'mkdir -p' (I wrote it myself for neutro, and I see moritz did similar thing for Module::Starter), probably cp -r and rm -r too
14:37 [particle] it can be renamed when it makes its way to :auth<CPAN>
14:38 PerlJam File::Tools +1
14:39 moritz_ +1
14:39 moritz_ in Unix, a directory is a kind of file too :-)
14:39 tadzik yep
14:39 tadzik So it shall be done
14:40 PerlJam so ... File::Find will be included too?
14:41 tadzik hmm
14:41 tadzik Survey: [ ] Include File::Find in File::Tools or [ ] Keep 'em separated
14:42 moritz_ [X] bundle
14:42 PerlJam (I'm pro-include too)
14:43 moritz_ PerlJam: then make your cross!
14:43 [particle] File::Tools is a distro, right? bundle File::Find.
14:43 ashleydev_ joined #perl6
14:43 * tadzik 's builtin regex engine recognizes only [.]
14:43 PerlJam [particle]++ proper framing is important :)
14:44 mhsparks joined #perl6
14:44 [particle] i wish there was a way to distinguish distros from modules by name
14:44 mhsparks left #perl6
14:44 tadzik I see 3 people for, 0 against
14:44 [particle] ...or some other marker
14:44 tadzik the ancient council has spoken
14:45 moritz_ now I feel old. Thank you.
14:45 moritz_ :-)
14:45 tadzik shh! It was supposed to be epic and dramatic!
14:46 mhsparks joined #perl6
14:46 * moritz_ increaes the volume of the mysterious background music
14:46 mhsparks left #perl6
14:46 szbalint this demands strange unicode symbols!
14:47 * PerlJam searches for an excalibur unicode character (it must exist, right?)
14:47 tadzik star: say "\n\n\n\n\n\n\n\n\n"
14:47 p6eval star 2010.07: OUTPUT«␤␤␤␤␤␤␤␤␤␤»
14:47 moritz_ .sword
14:47 moritz_ .u sword
14:47 tadzik .u sword
14:47 phenny U+2694 CROSSED SWORDS (⚔)
14:47 phenny U+2694 CROSSED SWORDS (⚔)
14:47 tadzik yay!
14:47 masak did I just miss an ancient council meeting? dang. :)
14:47 tadzik there must be a module for this
14:48 moritz_ use Council::Ancient <decide>;
14:48 PerlJam .u skull and cross bones
14:48 phenny PerlJam: Sorry, no results for 'skull and cross bones'.
14:48 PerlJam .u skull
14:48 phenny U+2620 SKULL AND CROSSBONES (☠)
14:48 masak tadzik: http://search.cpan.org/~audreyt/App-Uni-v0.12.0/
14:48 tadzik yay :)
14:48 tadzik .u ghost
14:48 phenny U+2EE4 CJK RADICAL GHOST (⻤)
14:49 tadzik a rectangle here :(
14:49 PerlJam .u grasshopper
14:49 phenny PerlJam: Sorry, no results for 'grasshopper'.
14:49 tadzik .u pearl
14:49 phenny tadzik: Sorry, no results for 'pearl'.
14:49 PerlJam .u onion
14:49 phenny PerlJam: Sorry, no results for 'onion'.
14:49 tadzik .u camel
14:49 phenny tadzik: Sorry, no results for 'camel'.
14:49 masak I like the sounds of 'radical ghost' :)
14:49 moritz_ .u perl
14:49 phenny moritz_: Sorry, no results for 'perl'.
14:49 PerlJam clearly those unicode wonks have been slacking
14:49 tadzik and that's how ancient council meetings end up. Damn you, unicode
14:50 moritz_ .u camelia
14:50 phenny moritz_: Sorry, no results for 'camelia'.
14:50 masak PerlJam: you must not have seen http://unicode.org/Public/6.0.​0/charts/versioned/U1F600.pdf
14:50 tadzik I feel a need for Optimize::Fun, which would tell jokes during the long-taking opereations
14:51 PerlJam does phenny take hex?
14:51 PerlJam .u 1f648
14:51 phenny PerlJam: Sorry, no results for '1f648'.
14:51 PerlJam .u 0x1f648
14:51 phenny PerlJam: Sorry, no results for '0x1f648'.
14:52 moritz_ phenny doesn't like codepoints > 0xffff iirc
14:52 moritz_ tadzik: sounds like a nice module
14:52 tadzik yet I don't know how to detect long-running subs
14:53 moritz_ all subs are long-running subs in rakudo :-)
14:53 PerlJam heh
14:56 envi^home joined #perl6
14:59 rurban joined #perl6
15:04 Axius joined #perl6
15:06 kst joined #perl6
15:21 justatheory joined #perl6
15:21 isBEKaml joined #perl6
15:22 isBEKaml OHHAI, #perl6!
15:24 oha hi isBEKaml
15:27 masak isBEKaml! \o/
15:28 oha i've noticed something on net-io on rakudo test
15:28 oha it was getting failed over and over, till i've realised that the process got hang
15:28 oha there are 2 issues
15:28 oha 1) the test launch a demon which hang there
15:28 risou joined #perl6
15:29 oha 2) the bind() didn't throw an error if the port is already bound
15:29 oha i'm fixing the 2)
15:30 kst joined #perl6
15:30 Italian_Plumber joined #perl6
15:31 moritz_ I guess you already have a commit bit to the pugs repo?
15:31 achromic joined #perl6
15:31 oha moritz_, sorry?
15:32 [Coke] tell perljam to test something.
15:32 isBEKaml masak, oha: \o/
15:32 moritz_ oha: do you have write access to the repository in which the tests are stored?
15:32 [Coke] needs the botname, eh?
15:32 moritz_ or do you want to fix bind(), not the tests?
15:32 oha moritz_, no
15:32 coffeeyy left #perl6
15:32 oha moritz_, i'm going to fix the bind()
15:32 oha which is the real issue imho
15:32 [Coke] phenny: ask pmichaud if he has a schedule in mind for the grant.
15:32 phenny [Coke]: I'll pass that on when pmichaud is around.
15:33 moritz_ anyway, if you want access to that repo, just /msg me your email address and desired nickname
15:34 tadzik hmm. If File::Tools has 'use File::Find', and someone will 'use File::Tools', will he/she have access to File::Find functions
15:34 tadzik ?
15:35 moritz_ only if you re-export them somehow (don't ask me how that works...)
15:35 isBEKaml tadzik: hm, I guess File::Find is already available in pugs repo. Not sure how usable it is since that was so long ago. :)
15:35 tadzik isBEKaml: it isn't :)
15:35 szabgab $page.content ~= qq{<a href="{$elem.attributes<url>​}">{$elem.attributes<url>}} ~ "</a>\n";
15:35 tadzik isBEKaml: we wrote the new one, with lazy lists and pink unicorns
15:35 szabgab I just fixed that line
15:35 isBEKaml tadzik: isn't available or unusable? :)
15:35 szabgab it used to be
15:35 szabgab $page.content ~= qq{<a href="{$elem.attributes<url>​}">{$elem.attributes<url>}} ~~ "</a>\n";
15:36 szabgab ~ instead of ~
15:36 tadzik isBEKaml: iirc it doesn't work, and our File::Find is better anyway :)
15:36 szabgab ~~ instead of ~
15:36 tadzik isBEKaml: afair pugs' File::Find is a verbatim port of this awful Perl 5's File::Find
15:37 isBEKaml tadzik: hm, better to rewrite the awful into awesome and let the world know! :)
15:37 isBEKaml tadzik++
15:38 colomon oooo, I didn't know Rakudo had pink unicorns yet.  tadzik++
15:38 tadzik colomon: actually, that's NYI
15:38 colomon tadzik: dang.
15:38 tadzik isBEKaml: nothing new, it's in R*
15:42 tadzik I'll be back later, to implement the invisible pink unicorns and stuff
15:45 coffeeyy joined #perl6
15:46 pyrimidine joined #perl6
15:51 britneypire joined #perl6
15:52 alester It would be swell if vim users were to try installing and using the Perl .vim files at http://github.com/petdance/vim-perl so I can get some eyeballs on them before vim 7.3 comes out.  Just check out the repo and do a "make install" into your ~/.vim dir.
15:52 isBEKaml ooh, tadzik is yet to implement pink unicorns (makes a note to see them when they are out) :)
15:53 isBEKaml alester: I installed them from there. But found them too slow in displaying files when dealing with :set ft=perl6 :(
15:53 isBEKaml alester: tried fixing them, but gave up when I found the huuge vimscripts. :(
15:54 alester A ticket describing your experiences in the github bit tracker would be welcome.
15:54 alester Giving details re: slow.
15:54 isBEKaml alester: sure, will post them when I get around to it next time.
15:55 isBEKaml alester: for now, I just use :set syntax=perl6 for faster loading of files.
16:02 Axius joined #perl6
16:02 ashleydev_ joined #perl6
16:10 isBEKaml https://bugzilla.gnome.org/show_bug.cgi?id=626593   ## Lol
16:16 masak oha++ just found a place in t/spec/S32-io/IO-Socket-INET.pl which will never work if we do reading with Bufs.
16:17 oha my $s = $io.read(2)~$io.read(1); # this read 1 unicode char of 3 bytes.
16:17 masak apparently line 115 splits a character.
16:17 oha it was working with the old implementation
16:17 oha s/old/actual/
16:17 masak the char is 3 bytes wide, but that line reads 2.
16:18 oha but after i've tried to use Buf i obiously get an error
16:18 oha Malformed UTF-8 string
16:18 masak and that error is *correct*
16:18 oha imho, yes
16:18 masak because $babe is a Str.
16:19 masak and Strs aren't allowed to contain two thirds of a character.
16:19 masak so that test needs to be rewritten somehow.
16:19 oha masak, i'm not sure how to change it to check the error
16:20 masak oha: let me check who wrote that part.
16:20 oha the nice thing is that now $sock have .read(->Buf) and .recv(->Str)
16:21 masak carlin++, it seems.
16:21 oha the second is sugar on the first, and give backward compatibility (where possible)
16:21 masak I'm not savvy enough to comment on whether that's nice/desirable, but it sounds ok :)
16:22 oha masak, honestly, i would prefer recv() by Buf and read() by Str
16:22 masak not sure we need the Str-returning things at all.
16:22 masak feels like a typical FAQ.
16:23 oha masak, anyway IO.pm have read(->Buf);
16:23 dakkar what encoding would be used by the Str-returing methods?
16:23 masak oha: yep. I wrote that one :)
16:23 masak dakkar: $?ENC, probably.
16:23 oha dakkar: multi method recv(Int $bytes, Str $enc)
16:24 dakkar oha: better :)
16:24 oha $enc default to UTF-8
16:24 oha if not specified (again, for backward compatibility)
16:24 dakkar default encondings are usually evil…
16:24 masak aye.
16:24 oha i do not want to break HTTP::Server::Simple
16:24 masak I'm just doing what the spec says.
16:24 dakkar Java went that way, and they had to deprecate half the API
16:24 masak aye.
16:25 oha i could add a warn, but i fear this will mess all the tests
16:25 * dakkar would add a FAIL
16:26 masak not having a default encoding simply amounts to making the $enc parameter mandatory.
16:27 dakkar yes
16:27 oha masak, it's a bit better, if the $enc is missing, i call $buf.decode() so i delegate the problem to Buf.pm
16:28 dakkar Buf has a 'decode' method without a mandatory encoding?
16:28 * dakkar should shut up before degenerating into a rant
16:29 oha dakkar, actually yes
16:29 payload joined #perl6
16:30 patrickas joined #perl6
16:30 patrickas ola
16:30 dakkar ugh
16:31 oha hi patrickas
16:31 patrickas ola oha :-)
16:31 isBEKaml patrickas! :)
16:31 patrickas \o/ isBEKaml!
16:32 dakkar I'd love for an Encoding to be a couple of functions, coercible from Str via lookup…
16:32 isBEKaml patrickas: the deletes worked then! ;)
16:32 dakkar so that we could pass around Encoding objects, or their names…
16:32 patrickas it seems so! still waiting for the sky to fall :-)
16:32 isBEKaml patrickas: erm, didn't break anything... ... (I really should watch things)
16:34 patrickas that was a nice patch but did not solve much .... I got me another one that'd give us about 13 more test passes in series ... pending some twits from colomon to review and apply :-)
16:36 patrickas ping moritz_
16:36 isBEKaml patrickas: \o/
16:37 patrickas actually ping anyone with ideas :-) What would be a nice/standard way to present the USAGE information for scripts with both long and short forms of arguments?
16:39 isBEKaml GetOpts ?
16:39 rgrau joined #perl6
16:39 patrickas good point ... let's steal from GetOpts :-) heading to CPAN
16:42 molaf joined #perl6
16:42 patrickas getopts seems to only process single-character switches maybe Getopt::Long
16:45 isBEKaml patrickas: oh, man. I didn't realise GetOpts was a module on CPAN. I just threw it out. :-)
16:46 isBEKaml patrickas: yes, GetOpt::Long is the way to go.
16:46 isBEKaml patrickas: GetOpt::Long::Descriptive also looks promising.
16:49 jennyf joined #perl6
16:50 Mowah joined #perl6
16:50 patrickas OK I'll steal the Usage on a line followed by a line for each short - long option
16:51 patrickas also the short options always mean one letter right ?
16:56 [particle] yes, short options are always one letter
16:56 [particle] and if they're bundled, only the last one can take a value
16:56 isBEKaml AFAIK, gnu programs always had it that way (single letter short options) and it's usually the case in other programs too.
16:57 [particle] forget what you knew about gnu and read S19.  there are similarities, but differences, too.
16:57 * [particle] really has to finish up his grant... been thinking about it quite a bit lately, just looking for tuits
16:58 [particle] but, by all means, if you want to implement parts of command line parsing for rakudo, feel free to beat me to it.
16:59 patrickas [particle] I am working on the short options but I am sure I won't implement all of the possibilities ... just the most simple ones I guess
17:00 [particle] patrickas++
17:00 Trashlord joined #perl6
17:00 justatheory joined #perl6
17:03 rokoteko how would you: close STDOUT; open STDOUT, ">", \my $str or die $!; print "foo"; warn "str: $str"   ... in perl6?
17:04 rokoteko ie. redirect $*OUT to a variable.
17:04 Packetknife joined #perl6
17:04 Packetknife joined #perl6
17:06 patrickas [particle] just to clarify I am working on short options passed to the perl script (parsed by MAIN) not to the perl executable
17:06 [particle] it's all the same, except where it's different.
17:06 patrickas :-)
17:09 nperez joined #perl6
17:14 rokoteko temp NYI?
17:15 patrickas NYI IIRC
17:16 masak aye, NYI.
17:16 Axius joined #perl6
17:17 [particle] NY, aye.
17:17 rokoteko rakudo: my $var = IO.new; $*OUT := $var; say "foo"; warn "foo is [$var.perl]"
17:17 p6eval rakudo 811c1c: OUTPUT«foo is [IO()<0x6c0ce50>.perl] at line 22:/tmp/DPUonfFcAp␤»
17:18 pmichaud rakudo:  my $a = 5;  temp $a = 6;
17:18 phenny pmichaud: 01:52Z <[Coke]> ask pmichaud if he can review RT #74008, which is a patch for some laziness.
17:18 phenny pmichaud: 02:46Z <[Coke]> ask pmichaud if we can close 75030 now.
17:18 phenny pmichaud: 15:32Z <[Coke]> ask pmichaud if he has a schedule in mind for the grant.
17:18 p6eval rakudo 811c1c: OUTPUT«Could not find sub &temp␤  in main program body at line 22:/tmp/zTGyvw4kLk␤»
17:18 [particle] looks like IO needs a .perl
17:18 pmichaud $var.perl won't interpolate
17:18 pmichaud need parens
17:19 pmichaud my $var = IO.new;  say $var.perl;
17:19 pmichaud rakudo:  my $var = IO.new;  say "$var.perl()  $var.perl";
17:19 p6eval rakudo 811c1c: OUTPUT«IO.new(PIO => Any, ins => Any, autoflush => Any, path => Any, stat => IO;Stat.new(path => Any))  IO()<0x612fbd0>.perl␤»
17:19 rokoteko rakudo: my $var = IO.new; $*OUT := $var; say "foo"; warn "foo is [" ~ $var.perl ~ "]"
17:19 p6eval rakudo 811c1c: OUTPUT«foo is [IO.new(PIO => Any, ins => Any, autoflush => Any, path => Any, stat => IO;Stat.new(path => Any))] at line 22:/tmp/lTfNH9xMFu␤»
17:20 rokoteko hmm. probably my $var = IO.new; is just completely wrong in my use case.
17:22 rokoteko just tried to hack in *somehow* the redirecting to a variable. but as it's IO it obviously is Input and Ouput instantly. maybe I could make it buffered and then read the buffer. .. really no-one can think of a way how redirecting $*OUT to a variable coule be be done when implemented?
17:24 TimToady does it need to work for subprocesses?
17:24 sjohnson hi TimToady long time no see
17:26 rokoteko TimToady: I have no further requirements yet. :)
17:26 * TimToady is finally back home, and is down to only 12 days of ir clogs
17:26 _macdaddy joined #perl6
17:26 TimToady my $*OUT = $handle works for a dynamic scope, but not for subprocesses
17:27 rokoteko TimToady: say $handle.WHAT  .. ?
17:27 rokoteko Str() ?
17:28 rokoteko that was one of the first things I tried, but NYI in rakudo, I guess.
17:28 Axius joined #perl6
17:29 [Coke] cheeze it, it's the larry.\
17:31 TimToady handle can be an IO returned by open
17:31 Axius joined #perl6
17:33 TimToady errand &
17:33 rokoteko TimToady: could you please read the lastlogs for past 30mins. Id appreciate. ie. Im curious how would the IO store the data printed to it and how would retrieve it? that sounds merely like a hack to me.
17:34 rokoteko 20:34 here now.. and: 20:03 < rokoteko> how would you: close STDOUT; open STDOUT, ">", \my $str or die $!; print "foo"; warn "str: $str"   ... in perl6?
17:36 [Coke] rokoteko: or you could wait until he catches up, like everyone else. =-)
17:37 rokoteko [Coke]: Sure. I just thought I was lucky to be the last one asking when he happened to appear!
17:38 [particle] was it good luck or bad luck?
17:38 rokoteko [particle]: in case of 'bad' luck, I wouldve said unlucky. :/
17:40 rokoteko But surely, it's not an issue of this second. :) I was just curious. I can wait 6 days (I think TimToady handles 12 days of question in max 6 days).. ;)
17:42 pmichaud rokoteko: I don't think IO by itself acts like a stringbuffer.
17:42 rokoteko pmichaud: me neither.
17:42 pmichaud but the way that you would do it would be something like:
17:43 pmichaud my $*OUT = IO::StringBuffer.new();   say; say; say 'what-you-want';
17:43 pmichaud i.e., you don't rebind the existing $*OUT -- you just create a new one.
17:44 rokoteko how would I restore the old?
17:44 pmichaud you don't have to
17:44 rokoteko store it in another IO object?
17:44 pmichaud the old one will become visible again when the block exits
17:44 rokoteko ahhh.
17:44 pmichaud that's kind of the point of dynamic variables
17:44 ruoso joined #perl6
17:44 perl_4_life joined #perl6
17:45 pmichaud rakudo:  sub foo() { say $*abc; };   my $*abc = 'one';  foo();   { my $*abc = 'two';  foo(); };  foo();
17:45 p6eval rakudo 811c1c: OUTPUT«one␤two␤one␤»
17:45 pmichaud note that when foo() is called from the nested block, it sees the nested declaration of $*abc
17:46 pmichaud but when called from outside of the nested block, it sees the outer one.
17:48 rokoteko pmichaud: ok. and in lexical scope it's not yet known how it's going to work? ie. my $newout = IO::StringBuffer.new(); temp $*OUT = $newout; ?
17:49 rokoteko pmichaud: did you really mean "my $*OUT = IO::StringBuffer.new();" there ???
17:49 pmichaud rokoteko: yes.
17:49 rokoteko the my $*OUT sounds/looks funny.
17:49 pmichaud why?
17:49 pmichaud it's just declaring a new variabled called $*OUT
17:49 pmichaud *variable
17:49 pmichaud that variable hides the previous declaration of $*OUT from the setting
17:50 pmichaud (I don't understand the question about 'lexical scope')
17:50 Axius joined #perl6
17:51 pmichaud here's the difference between using 'my' and 'temp' with a dynamic variable
17:51 pmichaud if I use 'temp', then I'm actually modifying the existing dynamic variable in place
17:52 pmichaud so, for example,   temp $*OUT = ...    would temporarily set $PROCESS::OUT to a new value, and then restore that value upon scope exit
17:52 pmichaud however,  my $*OUT = ...   creates a new dynamic $*OUT variable, leaving $PROCESS::OUT unchanged
17:53 * PerlJam wonders about the utility of temp these days
17:53 rokoteko both makes $*OUT have the same scope?
17:53 pmichaud $*OUT always has dynamic scope -- that's what the * means
17:53 pyrimidine left #perl6
17:53 pyrimidine joined #perl6
17:54 whiteknight joined #perl6
17:54 pmichaud in my example above, note that $*abc in sub foo() isn't lexical.
17:55 pmichaud i.e., there's no $*abc lexically declared for sub foo().
17:56 Khisanth so our got replaced with a splat :)
17:56 pmichaud PerlJam: I agree, 'temp' seems much less necessary or desirable now that we have dynamic vars
17:56 pmichaud Khisanth: not really :)
17:56 pmichaud Khisanth: it's not a package variable, either.  :-)
17:57 pmichaud rakudo:  class A { method xyz() { say $*abc; } };    { my $*abc = 'hello';  A.xyz(); }
17:57 p6eval rakudo 811c1c: OUTPUT«hello␤»
17:58 PerlJam Khisanth: Perl 6 has added (or formalized) a few extra axes for variables.  Luckily we have these twigils to help us figure out which axis we're looking at.
17:59 oha PerlJam, i like the idea behind 'let'
18:00 isBEKaml rakudo: my $*foo="foo"; { $*foo = "bar"; say $*foo; }; say $*foo;
18:00 p6eval rakudo 811c1c: OUTPUT«bar␤bar␤»
18:00 oha i wonder what would happen to have a sort of committable transaction with threads
18:00 isBEKaml rakudo: my $*foo="foo"; { my $*foo = "bar"; say $*foo; }; say $*foo;
18:00 p6eval rakudo 811c1c: OUTPUT«bar␤foo␤»
18:00 rokoteko { my $oldout = $*OUT; my $newout = IO::StringBuffer.new(); my $*OUT = $newout; say "foo"; my $*OUT = $oldout; } ...
18:00 rokoteko .. hmm. accodring to S32 select() is gone.
18:01 revdiablo PerlJam: Do you know offhand where the twigils documented?
18:02 PerlJam revdiablo: S02
18:02 PerlJam S02:1865 looks like
18:02 revdiablo Gracias
18:02 revdiablo Found the relevant section
18:04 PerlJam btw, looking at that list of variables .... does $<foo> really belong?  Or am I suffering a hobgoblin of foolish consistency?
18:04 TimToady actually, temp on dynamic vars is special; temp $*foo is supposed to really mean my $*foo but initialized to the previous value
18:04 rokoteko pmichaud: so my $*var is legal because $* stands for dynamic variable?
18:04 pmichaud rokoteko: yes
18:04 pmichaud and in the above
18:04 pmichaud my $*OUT = $oldout;
18:04 TimToady dynamic vars are really lexicals that allow themselves to be found dynamically
18:05 pmichaud would likely be an error
18:05 pmichaud (and really isn't needed)
18:05 colomon joined #perl6
18:05 rokoteko pmichaud: .. unless you want to continue withing the block using the old $*OUT
18:05 TimToady temp/let on dynvars just emulate temp/let semantics using my declarations
18:05 pmichaud rokoteko: if that's the case, just create a nested block
18:06 TimToady but don't really do the save/restore trick
18:06 TimToady let has to copy up to the outer dynvar on success
18:06 TimToady s/outer/old/
18:06 pmichaud rakudo:  say 'hello';  { my $*OUT = ...;   say 'this goes to the inner $*OUT';  };   say 'this goes to the original $*OUT';
18:06 p6eval rakudo 811c1c: OUTPUT«hello␤»
18:06 pmichaud a better example might be:
18:07 rokoteko TimToady: ok. I dont know of "let" yet. :)
18:07 pmichaud rakudo:  say 'hello';  { my $*OUT = $*ERR;   say 'this goes to the standard error';  };   say 'this goes to the original $*OUT';
18:07 TimToady nobody implements any kind of 'let' yet
18:07 p6eval rakudo 811c1c: OUTPUT«hello␤this goes to the standard error␤this goes to the original $*OUT␤»
18:08 pmichaud rakudo:  say 'hello';  { my $*OUT = open('temp', :w);  say 'this goes to the temp file'; };  say 'this goes to original $*OUT';  say slurp('temp');
18:08 p6eval rakudo 811c1c: OUTPUT«hello␤Operation not permitted in safe mode␤  in 'Safe::forbidden' at line 2:/tmp/Wm9CiXRIdm␤  in main program body at line 22:/tmp/Wm9CiXRIdm␤»
18:08 pmichaud bah
18:08 pmichaud rokoteko: anyway, the point is that you don't have to explicitly restore $*OUT
18:08 PerlJam TimToady: how useful are the subtle distinctions of temp that they would get such a short keyword?
18:08 rokoteko pmichaud: yes, you have a chance to specify a dynamic scope for it. I got it thanks. :)
18:10 TimToady PerlJam: huffman is not my only razor.
18:10 Axius joined #perl6
18:11 rokoteko rakudo: say 'STDOUT: foo 0'; warn 'STDERR: foo 1';  { my $*OUT = $*ERR; say 'STDERR: foo 2';  }; say 'STDOUT: foo 3';
18:11 p6eval rakudo 811c1c: OUTPUT«STDOUT: foo 0␤STDERR: foo 1 at line 22:/tmp/loy1LTybO5␤STDERR: foo 2␤STDOUT: foo 3␤»
18:11 rokoteko there's something wrong there.
18:12 pmichaud ...why?
18:12 gfldex rakudo: grammar Grammar::Foo {
18:12 rokoteko rakudo: say "foo 1"; warn "foo 2"; say "foo 3"; warn "foo 4";
18:13 p6eval rakudo 811c1c: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
18:13 p6eval rakudo 811c1c: OUTPUT«foo 1␤foo 2 at line 22:/tmp/43WEOVje61␤foo 3␤foo 4 at line 22:/tmp/43WEOVje61␤»
18:13 gfldex rakudo: grammar Grammar::Foo { token foo { 'foo' }; }; say 'foo' ~~ /^<Grammar::Foo::foo>$/;
18:13 p6eval rakudo 811c1c: OUTPUT«===SORRY!===␤regex assertion not terminated by angle bracket at line 22, near "::Foo::foo"␤»
18:13 rokoteko pmichaud: ahh. nothing. I somehow misinterpreted the bot earlir. :) thank you a bnuch!
18:13 pmichaud http://gist.github.com/521392   # example for rokoteko
18:13 gfldex std: grammar Grammar::Foo { token foo { 'foo' }; }; say 'foo' ~~ /^<Grammar::Foo::foo>$/;
18:13 p6eval std 31912: OUTPUT«ok 00:01 117m␤»
18:13 PerlJam TimToady: So ... what razor are you using for temp that doesn't slice it from the language?  :)
18:14 TimToady my wait-and-see razor
18:14 pmichaud PerlJam: "much less useful"  doesn't always mean "not useful"  :-)
18:14 [Coke] ... that would explain the crazy hair.
18:14 PerlJam TimToady: good enough for me.  :)
18:14 rokoteko pmichaud++
18:15 PerlJam pmichaud: I know an asymptote when I see one.  But maybe I'm wrong.
18:15 pmichaud rokoteko: note that if the nested block calls any functions that do 'print' or 'say', they also use the new value of $*OUT and not the global one
18:15 rokoteko this was more trivial than I guessed. :) but Im only at S06, so let's forgive me ;)
18:16 rokoteko pmichaud: yes. I understand the dynamic sence. this is related to the 'lexical scope' question you didn't understand earlier. :)
18:16 pmichaud okay.
18:16 pmichaud good
18:16 rokoteko 20:48 < rokoteko> pmichaud: ok. and in lexical scope it's not yet known how it's going to work? ie. my $newout = IO::StringBuffer.new(); temp $*OUT = $newout; ?
18:17 rokoteko where $newout is obviously lexical. but I didnt know yet that you can say my $*OUT = $newout;
18:17 pmichaud TimToady: welcome back
18:17 rokoteko .. so Im bit confused what happens to $newout when it falls out of lexical scope. :)
18:17 TimToady down to 10 days of backlog...
18:18 rokoteko s/6 days/1.5 hours/
18:22 ashleydev__ joined #perl6
18:23 Packetknife joined #perl6
18:23 Packetknife joined #perl6
18:23 PerlJam rokoteko: it drops beyond the horizon of your light-cone  :)
18:25 mberends joined #perl6
18:25 rokoteko ahh. So I can see it appearing above the horizon of my heavy-cone where everything is backwards.
18:25 tadzik joined #perl6
18:25 oha hi mberends
18:25 tadzik hello
18:26 mberends good * :) only 3.5 days backlog to go here...
18:26 pmichaud rokoteko: when $newout falls out of lexical scope, it acts like any other lexical var :-)
18:26 pmichaud down to 33 messages in my inbox!  woo hoo!
18:26 jnthn o/ mberends
18:27 jferrero joined #perl6
18:27 rokoteko pmichaud: and at after that point when you say "foo"; it goes back to the original $*OUT ?
18:28 s1n joined #perl6
18:28 mberends hi jnthn, should I break out my Java books yet ? ;)
18:28 pmichaud well, that depends on $*OUT more than $newout in your example
18:28 pmichaud from what you wrote, though, the temp on $*OUT goes out of scope at the same time that $newout does
18:28 pmichaud but the restoration of $*OUT to its previous value doesn't have anything to do with $newout
18:30 tadzik what happens if 2 modules import themselves, is circular dependency an issue?
18:30 jnthn mberends: Soon. ;-)
18:31 rokoteko pmichaud: I think I'll have to wait to be able to experiment with this in practice. :) but as you are the PM, my wish is to prioritize StrPos before and then IO::StringBuffer -- of course after all the other stuff that are more important on your list. :)
18:31 rokoteko pmichaud: thanks a lots for your time! :)
18:32 pmichaud rokoteko: noted, and thanks!
18:32 [Coke] he's just /a/ PM. they grow on trees, you know.
18:32 rokoteko As do programmers, if you ask from a PM. ;)
18:32 hercynium joined #perl6
18:37 unenana joined #perl6
18:39 dukeleto pmichaud: i sent you a msg in #parrot, just letting you know :) It is about turning the parrot github account into an org so we can have a proper git mirror of parrot
18:40 PerlJam [Coke]: I haven't seen many Patrick Michauds growing on trees.  :)
18:40 wamba joined #perl6
18:40 tadzik http://pb.rbfh.de/zUfzTnk3zJUd -- is it possible to get this to work?
18:40 [particle] there's one here in seattle
18:41 avar dukeleto: parrot will be using github?
18:42 [Coke] avar: it's a git mirror of the official svn repo.
18:43 [Coke] (we're moving to git, but probably not github.)
18:43 [Coke] (but maybe)
18:43 tadzik or another thing: A.pm uses B.pm, B.pm has some exported functions. How to make it possible for the user to use subs from B.pm when using A.pm?
18:46 Mowah joined #perl6
18:47 Tene tadzik: if you want to use subs from another module without importing them, declare them as 'our sub', and then use a full namespace.
18:48 Tene tadzik: That not working is probably a bug.
18:48 tadzik Tene: my case is the File::Tools distribution. It is going to contain File::Find, File::Copy and few other things. File::Find etc. are separate modules, but I'd be nice when someone uses File::Tools and gets all the subs from all the modules avaiable
18:50 Tene tadzik: Check the specs, there's syntac (currently NYI) to indicate that you want things re-exported when using a module.
18:51 tylercurtis joined #perl6
18:52 PerlJam [Coke]: If github is good enough for perl 5, it should be good enough for parrot :)
18:52 [Coke] cotto's in charge, I defer to him.
18:53 pmichaud dukeleto: okay, I'm still recovering from travel and conferences
18:54 pmichaud [particle]: ping
18:54 pmichaud (nm, see /msg)
19:00 blaze joined #perl6
19:00 blaze Hi
19:00 moritz_ hello
19:00 tadzik hi blaze
19:00 Guest96786 ohww whats that.. my nick got changed
19:01 [Coke] welcome to freenode!
19:01 Guest96786 !nick blaze
19:01 Guest96786 #nick blaze
19:01 Guest96786 oh... cant change my nick
19:02 Guest96786 ok.. comming back to the purpose of being here..
19:03 [Coke] partcl-nqp: puts stderr what?
19:03 p6eval partcl-nqp: OUTPUT«what?␤»
19:03 Guest96786 i was wondering if some one could help me point to a page where there is a comparision between perl5 and perl6
19:03 Guest96786 whats been dropped in perl6 and whats added to perl6
19:03 [Coke] the synopses themselves are kind of written in that fashion.
19:03 moritz_ http://perlgeek.de/en/article/5-to-6
19:03 [Coke] perl6.org -> docs -> synopses.
19:03 moritz_ not quite what you want, but does contain some comparison
19:04 [Coke] but moritz_'s article's probably much friendlier. =-)
19:04 Guest96786 many thanks moritz_ and Coke
19:04 pmichaud Guest96786: just a note, the differences are fairly substantial
19:04 tylercurtis Guest96786: http://perlcabal.org/syn/Differences.html may also be helpful.
19:05 Guest96786 thank you too.. l'll go through the page as well
19:06 [Coke] pmichaud: looks like we can get a speedup if we change the one-char substr checks in pct & nqp-rx to be ords instead. do you forsee any issues there?
19:06 dakkar joined #perl6
19:07 pmichaud [Coke]: no, but I think we could also get a huge speedup if we had an opcode that could do string comparisons in the middle of a string
19:07 [Coke] (potentially unicode issues, I suppose, depending on how clever we are.)
19:08 pmichaud I'm thinking something like     $I0 = strcmp $S0, $S1, $I1
19:08 mberends joined #perl6
19:08 [Coke] pmichaud: I'll try to remember that one too.
19:08 pmichaud which returns true  (or -1,0,1)  after performing a string comparison between $S0 and ($S1 starting at offset $I1)
19:08 pmichaud right now pct and nqp have to do a lot of
19:08 pmichaud $S1 = substr target, offset, length of $S0
19:09 pmichaud $I0 = cmp $S0, $S1
19:09 pmichaud ...
19:09 pmichaud which involves creating a lot of extra strings
19:09 thepler joined #perl6
19:09 pmichaud [Coke]: anyway, patches to use ord instead of single-character substrings are okay with me
19:10 pugssvn r31972 | moritz++ | [S05] specify what .keys, .values and .kv do on Match objects
19:10 [Coke] k. substring is a lot more expensive than it used to be, so this should also help out.
19:11 pmichaud right
19:11 [Coke] as should your suggestion. less substrings all around.
19:11 pmichaud I did a quick scan of the files in nqp-rx/src/gen to see how many times 'substr' got called, and it was enough to make me say "we could probably avoid a lot of these if we just had a better opcode"
19:11 pmichaud might want it to be 'substrcmp'  instead of 'strcmp'
19:12 [particle] parrot strings are immutable now, yes?
19:12 moritz_ yes
19:12 pmichaud [particle]: yes
19:12 [particle] should be a smop creating a new string header that points strstart to the middle of an existing string body
19:12 pmichaud [particle]: we do that already
19:12 moritz_ still a string header that could be avoided
19:12 pmichaud but that still involves creating a string header
19:12 [Coke] yes, but why create new headers at all if you don't have to.
19:13 [particle] hokay
19:13 [Coke] heh.
19:13 pmichaud and since we're talking about creating a new string header at *each* comparison, they can add up.
19:13 pmichaud in particular, consider that every token of a source program ends up with a _lot_ of string comparisons before we figure out which token it is
19:13 pmichaud (because it's not just the tokens that match, but also all of those that fail)
19:15 masak joined #perl6
19:15 [Coke] moritz_: that phrasing is a little odd.
19:15 masak ahoy!
19:15 moritz_ [Coke]: better phrasing welcome
19:15 [Coke] moritz_: I don't know what you're trying to say. =-)
19:16 [Coke] just that .keys may return both numbers and strings?
19:16 jnthn ahoj, masak :-)
19:16 moritz_ [Coke]: hashes have positional (list) and named (hash) parts
19:16 masak jnthn: you want to know how pack/unpack are going? they're going quite well :)
19:16 moritz_ [Coke]: I want to say that .kv etc work on both parts
19:16 jnthn I was about to termentor you about those. :-)
19:16 jnthn *tor
19:16 [Coke] moritz_: at the same time, yes? so you might get 1, 2, 'spaf', 'baz' ?
19:16 masak moritz_: s/involved/involve/
19:17 jnthn masak: You got something commited in your branch?
19:17 moritz_ [Coke]: yes
19:17 [Coke] s/involved/include/
19:18 masak jnthn: a tiddle bittle. will commit more as the evening passes.
19:18 [Coke] "the keys may include both numbers and strings". (not sure identifiers is the right word there.)
19:18 jnthn masak: Nice :-)
19:18 justatheory joined #perl6
19:18 jnthn masak: Let me know if you've anything you'd like me to review.
19:19 masak basically, I just need someone to bounce opinions off right now.
19:19 masak many small decisions to make along the way.
19:19 masak and I'm trying to grok Perl 5's pack/unpack, I've never done that in depth before.
19:23 pugssvn r31973 | moritz++ | [S05] attempt to clarify wording, and add an example
19:23 mberends \o masak: I'm also very interested in what you're cooking up, and may be able to grok some of the funny binary formats.
19:24 masak excellent. then I'll accost either you or jnthn, whatever's convenient. :)
19:24 tadzik http://github.com/tadzik/perl6-File-Tools -- further ideas welcome
19:24 jnthn masak: Feel free. I'm doing Perl 6 hacking this evening anyways. :-)
19:24 tadzik moritz_: I borrowed your mkdir-p implementation for this
19:25 moritz_ mberends: there was lots of interesting in socket work here while you were gone
19:25 moritz_ tadzik: feel free
19:25 masak tadzik: pls add to pls. :)
19:25 tadzik masak: but it has no tests! :(
19:25 tadzik (yet)
19:25 masak tadzik: that's no reason to withhold a good module from the public! :)
19:25 tadzik :)
19:25 tadzik alright, alright :)
19:25 masak tadzik: and you can always get the medal later :)
19:25 jnthn tadzik: just make a t directory with anything in it and you still get teh medal.
19:26 jnthn Uh, I mean... :-)
19:26 masak that page updates regulatly.
19:26 masak tadzik: or what cheating jnthn said :)
19:26 jnthn <innocent look>
19:26 tadzik masak: so it's ok to remove File::Find now?
19:26 masak tadzik: I have a feeling I'm the wrong person to ask that.
19:26 masak tadzik: why do you want to remove it?
19:27 tadzik masak: for it's in File::Tools now
19:27 masak tadzik: ah, ok.
19:27 masak tadzik: did you write File::Find?
19:27 tadzik masak: yep
19:27 masak then go right ahead.
19:27 tadzik it has a watcher, what to do :O
19:28 tadzik oh, it hasn't *relief*
19:29 * tadzik must remember to pull before commiting
19:30 moritz_ tadzik: you'll get a friendly [rejected] if you don't :-)
19:30 tadzik moritz_: To be honest, I find it really unfriendly. Who likes to be rejected? :(
19:31 moritz_ tadzik: think of it this way: it means that somebody else has done some work for you in the meantime
19:31 tadzik :)
19:33 mgrabovsky joined #perl6
19:35 mgrabovsky left #perl6
19:35 tadzik sorry for the paste
19:35 tadzik > use File::Find; find(:dir<t/dir1>).elems
19:35 tadzik 6
19:35 tadzik > use File::Find; find(:dir<t/dir1>).sort.elems
19:35 tadzik 7
19:35 tadzik bug?
19:36 tadzik it has an additional Any()
19:36 tadzik using pmichaud++ range branch, if relevant
19:36 moritz_ might be relevant
19:36 tadzik let me recompile then
19:37 moritz_ try my @a := find(:dir<t/dir1>);  say @a.perl; say @a.sort.perl;
19:37 tadzik # On branch master # Your branch is ahead of 'origin/master' by 10 commits.
19:37 tadzik weird
19:37 tadzik moritz_: one Any() more
19:37 tadzik as I said
19:37 moritz_ tadzik: well, you exected find() twice (so changes in the file system could change things)
19:38 moritz_ I'm sure there's a bug somewhere
19:38 tadzik any idea about this git? :|
19:39 moritz_ masak: any reason why bin/ufo is not executable?
19:39 masak moritz_: nope. let me fix that immediately.
19:39 pmichaud (extra Any)  sounds familiar... I'm pretty sure the range branch still has a couple of bugs (which is why it hasn't merged to master)
19:39 tadzik moritz_, masak: this commiting-via-github broke that
19:39 moritz_ ah
19:40 tadzik maybe a githb bug, or a feature
19:44 pmichaud af
19:44 pmichaud *afk
19:47 tadzik alright, works on master
19:51 Packetknife joined #perl6
19:51 Packetknife joined #perl6
19:55 dalek book: 48d3cb3 | moritz++ | src/grammars.pod:
19:55 dalek book: [grammars] some simplifications; try to be clearer on .ast
19:55 dalek book: review: http://github.com/perl6/book/commit/48​d3cb3d303f59177ee6020ca8cb871e7ac37bc1
19:56 offerkaye joined #perl6
19:56 isBEKaml left #perl6
19:56 moritz_ everybody, please test rakudo on top of the gc_threshold_tuning parrot branch
19:56 moritz_ and report your findings to chromatic on #parrot, or to me
19:59 pyrimidine left #perl6
19:59 pyrimidine joined #perl6
19:59 colomon moritz_: can you tell us more?
20:02 TimToady <masak> by the way, what's so great about .parsefile that .IO.slurp.parse doesn't do?
20:02 TimToady set the filename for error messages, mainly
20:02 masak fairy nuff.
20:02 moritz_ http://trac.parrot.org/parrot/ticket/1737 colomon, that's the longer story
20:03 moritz_ I guess in theory it's also easier to get .parsefile lazy
20:04 masak TimToady: what's an example of an error message occurring from within a grammar that would merit from having a file name of the file parsed included in it?
20:04 masak moritz_: that would require some nice hooks down into nqp-rx.
20:07 TimToady masak: uh, any error message from a file that could also be forcing the compilation of subfiles?  The user generally likes to know which file failed.
20:07 colomon moritz_: so this is another optimization, not one of the ones chromatic has been tweeting about this week?  \o/
20:09 masak TimToady: the closest I can get to picturing this is a &die call inside a {} in a rule. how to automatically get the .parsefile file name in there?
20:10 jaldhar joined #perl6
20:11 Tene masak: can you give me an example of an error message that would benefit by *not* having the file name included?
20:11 TimToady masak: the locmess method pulls it out of $*FILE<name>
20:12 masak TimToady: oh, ok.
20:13 masak Tene: it might be a file that the user doesn't know about and doesn't need to know about.
20:14 _jaldhar joined #perl6
20:16 masak by the way, over lunch I came to talking about dynamic/contextual variables with a friend of mine. the question that came of of that was: why does contextuals lookup have to go through successive OUTER:: scopes? couldn't the runtime just keep a single hash of stacks behind the scenes, and just do dynamic lookup on that hash?
20:17 Italian_Plumber joined #perl6
20:17 nperez optimization?
20:18 masak I hope it's an optimisation. many lookups would probably be faster that way.
20:19 masak there's a slight bureacracy overhead at block entry and exit, I guess.
20:19 nperez right. no I believe I agree with you, just saying it might be premature, thats all :)
20:20 masak I agree, it might.
20:20 masak I should try it both ways with Yapsi.
20:20 masak when I get to dynamic variables.
20:21 masak but it's not hard to imagine that 100 stack frames down into a recursion, the single hash lookup might be faster than 100 hash lookups :)
20:23 TimToady readonly dynvars can easily be cached locally, much like env vars
20:24 TimToady and the main point of doing it this way is to avoid globals so we don't get threading issues
20:24 Holy_Cow joined #perl6
20:24 TimToady we automatically get thread-local storage this way
20:26 masak readonly dynvars? 'constant $*foo := 42;'?
20:26 TimToady my $*foo ::= 42;
20:26 masak ah.
20:27 masak right, ::= means 'readonly' nowadays, not 'compile-time'.
20:27 TimToady and for rw vars you can cache the location at least
20:27 TimToady so you only have to chase up the stack on first ref
20:27 masak where's the cache situated? hooked onto the block?
20:28 TimToady it can just be in a sekrit part of the lexpad
20:28 ruoso joined #perl6
20:29 TimToady just as first ref to OUTER::OUTER::OUTER::<$foo> puts a secret $foo into the current pad
20:29 masak std: my $*foo; { say $*foo; my $*foo }
20:29 TimToady std: my $foo; {{{ $foo; my $foo }}}
20:29 p6eval std 31912: OUTPUT«ok 00:01 114m␤»
20:29 p6eval std 31912: OUTPUT«[31m===[0mSORRY![31m===[0m␤Lexical symbol '$foo' is already bound to an outer symbol (see line 1);␤  the implicit outer binding at line 1 must be rewritten as OUTER::OUTER::OUTER::<$foo>␤  before you can unambiguously declare a new '$foo' in this scope at /tmp/sa9gYIOwjq line
20:29 p6eval ..1…
20:29 TimToady except of course that dynamic vars are dynamic
20:29 masak :)
20:30 jhuni joined #perl6
20:30 masak std: { say $foo; say $^foo }
20:30 TimToady so I think it will be possible to implement them efficiently
20:30 p6eval std 31912: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable $foo is not predeclared at /tmp/8taw5b2bQN line 1:␤------> [32m{ say $foo[33m⏏[31m; say $^foo }[0m␤Check failed␤FAILED 00:01 114m␤»
20:30 masak std: { say my $foo; say $^foo }
20:30 p6eval std 31912: OUTPUT«[31m===[0mSORRY![31m===[0m␤$foo has already been used as a non-placeholder in the surrounding block,␤  so you will confuse the reader if you suddenly declare $^foo here at /tmp/gakQyw7Wzz line 1:␤------> [32m{ say my $foo; say $^foo[33m⏏[31m }[0m␤Potential difficulties:␤
20:30 p6eval ..$…
20:30 * TimToady snickers
20:30 masak 'confuse the reader' :)
20:31 masak I'm happy about now implementing lexicals efficiently in Yapsi. I wonder if any other Perl 6 implementation does that currently.
20:32 tylercurtis masak: Bennu implements them fairly efficiently to the extent that it implements them at all. :)
20:32 masak please tell me more.
20:34 tylercurtis Well, if you don't actually implement lexical closures... or containers... or multiple assignment... it's really easy to implement lexical variables efficiently.
20:35 sorear good * #perl6
20:35 sorear Are the rules about exactly *what* \w \d \s \v et al match documented anywhere?
20:36 KenGuru joined #perl6
20:36 masak sorear: the corresponding Unicode traits?
20:42 sorear moritz_: ok, I'll put string escape sequences high on my list then. :)
20:42 sorear [Coke]: I did mean Perl 5, although it would have been more correct to say "parrot's current object system's design"
20:44 dukeleto pmichaud: cool, thanks. There is no rush.
20:45 sorear alester: I use the vim-perl6 modules.  My only complaint is that editing gets laggy in files over 500 lines or so; I don't suppose it would be possible to put in some kind of #vim: this line is outside any function, regex, comment, or string and can be used as a sync point marks?
20:46 alester I don't know.
20:46 alester Make a ticket for it in github and then I have a place to remember.
20:48 sorear pmichaud: ISTR TimToady saying something along the lines of temp $*foo being sugar for my $*foo = CALLER::<$*foo>; as a special case, *not* actually changing the old dynamic var
20:49 ashleydev_ joined #perl6
20:50 TimToady I made that point later in the backlog
20:51 plluksie joined #perl6
20:53 sorear pmichaud: Note that #parrot-land recently experimented with removing strstart and buffer sharing entirely.  It's a significant win except for PCT.
20:56 sorear masak: The corresponding unicode traits are quite obviously wrong for this.  (U+000A is not Space)
20:56 [Coke] sorear: I'm not sure I would claim the original object system was designed with any goals in mind, other than a hatred of objects.
20:56 masak sorear: no? I thought it was \v
20:56 masak and hence \s
20:56 [Coke] and that wasn't a goal so much. ;)
20:57 sorear U+000A is Cc (OtherControl)
20:57 masak I guess it's an exception, then.
20:57 masak there might be a finite number of those :P
20:58 sorear yeah
20:58 TimToady we force the traditional properties within the ASCII range
20:58 sorear I'd like a complete list ;)
20:58 TimToady nothing outside of 0..127 is forced, iirc
20:59 sorear \w = N + L, \d = N, what are \s \v?
20:59 sorear \h too
21:00 masak sorear: PGE has the complete list.
21:00 masak sorear: I can give you the URL if you want.
21:00 masak in fact, GGE has it too, but nicer :)
21:01 TimToady each \s is either \h or \v; the only surprising one (to some folks) is that CR is considered \h
21:01 rokoteko am I supposed to receive all the possible documentation when checking out Rakudo star from github, or do you have some share secrets somewhere? not talking about Synopsis etc, but just the actual implementation/ideas docs... ?
21:02 kst joined #perl6
21:02 tadzik when are filehandles autoclosed?
21:02 cxreg when they're ajar
21:02 cxreg no wait, wrong joke
21:02 masak sorear: http://github.com/masak/gge/blob/​master/lib/GGE/Perl6Regex.pm#L20
21:03 masak rokoteko: not much of that, I'm afraid. most user documentation simply isn't written yet.
21:03 masak rokoteko: best you can do is probably read the Advent Calendar and/or moritz_++'s p5-to-p6 stuff.
21:03 sorear tadzik: Process exit.
21:04 sorear Nobody's come up with a better answer yet
21:04 tadzik thanks sorear
21:04 masak nobody really knows how DESTROY will work under a non-refcounting GC, it seems.
21:04 rokoteko masak: I was meaning over-all documentation. Lately Ive found myself browsing through Perl-Pugs docs to learn about how things really are/could/should be implemented. they are way more extensive than what I receive with rakudo star.
21:04 sorear At one point somebody (moritz?) recommended switching to a completely synchronous garbage collector, allowing filehandles to be reclaimed when they go out of scope
21:05 PerlJam sorear: does that imply a gc run at the end of every scope ?
21:05 masak rokoteko: if there's anything that you would have liked us to have included in Rakudo Star, I'm sure people here will be happy to hear it.
21:05 rokoteko masak: .. closest to that (in rakudo) are the core thingies written in perl6, which are quite self-explanatory, after you learn the syntax.
21:05 tadzik masak: what do you think about http://github.com/tadzik/ufo/commit/4a9a5195 ?
21:06 * masak looks
21:06 masak tadzik: that makes a whole lot of sense.
21:07 tadzik I had some serious headscratching while inlining ufo in neutro, to avoid a dependency. Seriously, took me like an hour to figure it out with a help from someone I don't rememer who is
21:07 tadzik run 'make' was then failing, but only in that process
21:07 tadzik masak: pull request?
21:08 masak tadzik: yes please.
21:08 masak a bit busy with pack/unpack right now, but will pull later.
21:08 tadzik masak: done. Sure thing, no need to hurry
21:09 tadzik oh wait, I think I sent you pull for a wrong repo
21:09 tadzik tadzik--
21:09 rokoteko masak: well. I got about a year old Perl6-Pugs-6.2.13 downloaded at my current irc host. Ive been browsing through the docs/ dir. maybe you should take a look at there also. in rakudo I miss stuff like notes/ dir, not to mention all the random "what to read" files. etc random thoughts. I just wondered if they are not included in the rakudo package, but instead you store them somewhere else (not publicly available).
21:09 * PerlJam doesn't grok "not public available"
21:09 rokoteko maybe something like docs/unofficial/ in the distro, where the developers can let their thoughts flow?
21:10 PerlJam publicLY even
21:10 masak rokoteko: Rakudo != Pugs
21:10 masak so Pugs having a given type of docs does not automatically mean that Rakudo has them.
21:11 rokoteko I was just curious how the dev people share the thoughts if they are not in the distro. :)
21:11 masak that said, yes, we do keep some planning/roadmap/design docs in Rakudo's docs/ folder.
21:11 PerlJam rokoteko: here :)
21:11 masak rokoteko: what PerlJam said.
21:12 rokoteko ok.
21:12 pugssvn r31974 | lwall++ | [STD] warn on smartmatch of Bool::True and Bool::False as well
21:12 [Coke] I think if you want insight into the minds of the developers, this channel is probably the best bet I've seen.
21:13 sorear huh, it appears that GGE doesn't actually implement \w anywhere
21:13 Mowah joined #perl6
21:13 sorear or rather, it translates it to ~~ /\w/ in the output perl6
21:13 [Coke] GGE?
21:13 PerlJam rokoteko: also, if it's speculation on the design, some of that ends up in the synopses
21:14 masak sorear: right. cheating there. sorry 'bout that.
21:14 masak sorear: the README lingers a bit on that.
21:14 sorear [Coke]: http://github.com/masak/gge
21:14 * [Coke] misses having an infobot.
21:14 * masak likes the peace and quiet
21:14 masak purl--
21:15 KenGuru i'm improving my vim skills (i'm a newby so far), and would like to use rakudo with vim. is there a plugin (not the syntax coloring one) for code completion, and compilation?
21:16 jnthn An infobot that responded only when talked to would be bearable.
21:16 jnthn purl, OTOH... :-)
21:16 sorear masak: this COOLTHINGS makes me wonder if gge and yapsi are related
21:16 KenGuru I'm currently using the most current cream install 7.3 beta
21:16 masak sorear: they used to be, more than they are now.
21:16 masak sorear: gge definitely led to yapsi, but I don't see yapsi really needing gge any more.
21:16 sorear jnthn: I was the maintainer of one 3 years ago.  Check /mode #perl6 +b, I think it's still in the list
21:17 masak sorear: largely thanks to the advances in nqp-rx.
21:17 [Coke] jnthn: "speak only when spoken to" is fine.
21:17 [Coke] or a glossary linked to in the topic. =-)
21:18 sorear yep, she's still in the ban list
21:18 sorear twice.
21:19 masak lamdabot?
21:20 masak s/md/mbd/
21:20 KenGuru any vim user out here?
21:21 [Coke] hai.
21:21 masak \o
21:21 offerkaye yes but a noob
21:21 [Coke] but I don't have an answer to your autocomplete question.
21:21 [Coke] I don't have that for /any/ languages.
21:22 tadzik I liked it when I installed it, but have it for variable names and stuff
21:22 KenGuru ok, the autocomplete shouldnt be the prob
21:22 tadzik actually, it just completes works
21:23 KenGuru ok, then i should only have a look at how to configure vim the right way for executing the files with rakudo
21:24 dwierenga KenGuru: IIUC then ":h make" inside Vim should get you started
21:24 tylercurtis rakudo: role A { has $!foo; }; role B { has $!foo; }; class C does A does B; say 'alive';
21:24 p6eval rakudo 811c1c: OUTPUT«===SORRY!===␤Attribute '$!foo' conflicts in role composition␤»
21:24 KenGuru whats ILUC?
21:25 Tene IIUC = If I Understand Correctly
21:25 dwierenga KenGuru: If I Understand Correctly
21:25 tylercurtis rakudo: role A { my $!foo; }; role B { my $!foo; }; class C does A does B; say 'alive';
21:25 p6eval rakudo 811c1c: OUTPUT«===SORRY!===␤Lexical 'self' not found␤»
21:25 KenGuru japp
21:25 KenGuru ok
21:26 masak rakudo: role A { my $!foo }; class C does A {}
21:26 p6eval rakudo 811c1c: OUTPUT«===SORRY!===␤Lexical 'self' not found␤»
21:26 masak tylercurtis: known bug?
21:27 tylercurtis rakudo: role A { has $!foo; }; role B does A {}; role C does A {}; class D does B does C {}; say 'alive';
21:27 p6eval rakudo 811c1c: OUTPUT«alive␤»
21:28 tylercurtis masak: Don't know.
21:28 rgrau_ joined #perl6
21:28 milki_ joined #perl6
21:29 * masak submits rakudobug
21:29 masak rakudo: role A { my $!foo }; say "alive"
21:29 p6eval rakudo 811c1c: OUTPUT«alive␤»
21:29 masak rakudo: role A { my $!foo }; say A.new; say "alive"
21:29 p6eval rakudo 811c1c: OUTPUT«Lexical 'self' not found␤  in <anon> at line 10:/tmp/zY15QXjyOi␤  in main program body at line 1␤»
21:29 masak interesting.
21:31 cosimo_ joined #perl6
21:31 Juerd_ joined #perl6
21:31 pmichaud_ joined #perl6
21:31 pochi_ joined #perl6
21:31 frettled_ joined #perl6
21:33 oha_ joined #perl6
21:33 ashleydev__ joined #perl6
21:34 masak observe how those are actually two types of errors. is the first parse-time and the second run-time, or something?
21:34 dual_ joined #perl6
21:34 tylercurtis ::?CLASS is NYI, right?
21:34 masak right.
21:34 Helios joined #perl6
21:34 x3nU joined #perl6
21:35 LionMade0fLions joined #perl6
21:35 jnthn_ joined #perl6
21:35 dakkar joined #perl6
21:35 Helios joined #perl6
21:36 tadzik holy crap
21:37 tadzik is anyone alive?
21:37 squeeky they might be having dinner, or a pint. or both.
21:37 offerkaye I'm alive, but dead tired :) good night! :)
21:38 tadzik o/ :)
21:39 Tene tadzik: what's up?
21:39 azert0x joined #perl6
21:39 buubot joined #perl6
21:39 Helios joined #perl6
21:39 dakkar joined #perl6
21:39 jnthn_ joined #perl6
21:39 LionMade0fLions joined #perl6
21:39 oha_ joined #perl6
21:39 frettled_ joined #perl6
21:39 pochi_ joined #perl6
21:39 pmichaud_ joined #perl6
21:39 cosimo_ joined #perl6
21:39 milki_ joined #perl6
21:39 kst joined #perl6
21:39 KenGuru joined #perl6
21:39 jhuni joined #perl6
21:39 Italian_Plumber joined #perl6
21:39 pyrimidine joined #perl6
21:39 masak joined #perl6
21:39 thepler joined #perl6
21:39 mberends joined #perl6
21:39 tylercurtis joined #perl6
21:39 s1n joined #perl6
21:39 nperez joined #perl6
21:39 payload joined #perl6
21:39 spq1 joined #perl6
21:39 exodist joined #perl6
21:39 krakan joined #perl6
21:39 meteorjay joined #perl6
21:39 baest joined #perl6
21:39 araujo joined #perl6
21:39 Patterner joined #perl6
21:39 mtve joined #perl6
21:39 meinwald joined #perl6
21:39 astinus joined #perl6
21:39 cono joined #perl6
21:39 Intensity joined #perl6
21:39 arnsholt joined #perl6
21:39 TimToady joined #perl6
21:39 Sarten-X joined #perl6
21:39 wayland76 joined #perl6
21:39 proller joined #perl6
21:39 yves joined #perl6
21:39 HarryS joined #perl6
21:39 rhr joined #perl6
21:39 spinclad joined #perl6
21:39 tylerni7 joined #perl6
21:39 xinming joined #perl6
21:39 lue joined #perl6
21:39 takadonet joined #perl6
21:39 perlygatekeeper joined #perl6
21:39 dalek joined #perl6
21:39 BooK joined #perl6
21:39 sjohnson joined #perl6
21:39 mantovani joined #perl6
21:39 imarcusthis joined #perl6
21:39 p6eval joined #perl6
21:39 pjcj joined #perl6
21:39 mdxi joined #perl6
21:39 slavik joined #perl6
21:39 hillu joined #perl6
21:39 tomaw joined #perl6
21:39 melte joined #perl6
21:39 allbery_b joined #perl6
21:39 jasonmay joined #perl6
21:39 saaki joined #perl6
21:39 zostay_ joined #perl6
21:39 snarkyboojum joined #perl6
21:39 eternaleye joined #perl6
21:39 [particle] joined #perl6
21:39 pragma_ joined #perl6
21:39 Eevee joined #perl6
21:39 jdv79 joined #perl6
21:39 jettero joined #perl6
21:39 szabgab joined #perl6
21:39 buu joined #perl6
21:39 ascent_ joined #perl6
21:39 shelling_lab joined #perl6
21:39 cibs joined #perl6
21:39 Khisanth joined #perl6
21:39 _sri joined #perl6
21:39 lucs joined #perl6
21:39 avuserow joined #perl6
21:39 kirillm joined #perl6
21:39 au|irc joined #perl6
21:39 rcfox joined #perl6
21:39 spacebat joined #perl6
21:39 ingy joined #perl6
21:39 fridim joined #perl6
21:39 mmmpork joined #perl6
21:39 hugme joined #perl6
21:39 BinGOs joined #perl6
21:39 shabble joined #perl6
21:39 peters_mops joined #perl6
21:39 chitragupt joined #perl6
21:39 japhb joined #perl6
21:39 grew joined #perl6
21:39 wolverian joined #perl6
21:39 nadim joined #perl6
21:39 PerlJam joined #perl6
21:39 cmadsen joined #perl6
21:39 infrared joined #perl6
21:39 cj joined #perl6
21:39 gfldex joined #perl6
21:39 zachy joined #perl6
21:39 cxreg joined #perl6
21:39 Getty joined #perl6
21:39 kolibrie joined #perl6
21:39 jjore joined #perl6
21:39 zby joined #perl6
21:39 fda314925 joined #perl6
21:39 sbp joined #perl6
21:39 phenny joined #perl6
21:39 Gothmog_ joined #perl6
21:39 Bucciarati joined #perl6
21:39 dimid joined #perl6
21:39 revdiablo joined #perl6
21:39 frodwith joined #perl6
21:39 m6locks joined #perl6
21:39 lestrrat joined #perl6
21:39 mulander joined #perl6
21:39 mathw joined #perl6
21:39 gabiruh joined #perl6
21:39 cotto joined #perl6
21:39 tewk joined #perl6
21:39 perigrin joined #perl6
21:39 sunnavy joined #perl6
21:39 szbalint joined #perl6
21:39 diakopter joined #perl6
21:39 sorear joined #perl6
21:39 tadzik Tene: the sky has fallen! /o\
21:40 ingyfoo joined #perl6
21:40 perigrin_ joined #perl6
21:41 kolibrie_ joined #perl6
21:41 mmmpork_ joined #perl6
21:41 tewk_ joined #perl6
21:41 cottoo joined #perl6
21:41 imarcust1is joined #perl6
21:41 pmichaud joined #perl6
21:41 pochi joined #perl6
21:41 mdxi joined #perl6
21:41 jettero joined #perl6
21:41 jettero joined #perl6
21:41 mtve joined #perl6
21:41 chitragupt joined #perl6
21:41 Sarten-X2 joined #perl6
21:42 phenny joined #perl6
21:42 meteorjay joined #perl6
21:42 buubot joined #perl6
21:42 cmadsen joined #perl6
21:42 c0nspiracy_ joined #perl6
21:43 moritz_ joined #perl6
21:43 c0nspiracy__ joined #perl6
21:44 masak rakudo: sub foo { gather { say "OH HAI"; take 42 } }; my $value = foo; say "before"; say $value
21:44 p6eval rakudo 811c1c: OUTPUT«before␤OH HAI␤42␤»
21:44 masak oha++ taught me that trick :)
21:44 masak a lazy scalar.
21:45 tadzik I don't get it
21:45 tadzik oh, I get it
21:45 sunnavy joined #perl6
21:45 cj joined #perl6
21:46 masak I hadn't realized gather would work on scalars.
21:46 saaki joined #perl6
21:48 tylercurtis rakudo: my $foo = gather { say "evaluating"; take 42; }; say 'in the beginning'; my $a = $foo; say 'in the middle'; my $b = $foo; say 'in the end'; say $a; say $b;
21:48 p6eval rakudo 811c1c: OUTPUT«in the beginning␤in the middle␤in the end␤evaluating␤42␤42␤»
21:49 tylercurtis rakudo: my $foo = gather { say "go"; 42 }; say $foo.WHAT
21:49 p6eval rakudo 811c1c: OUTPUT«List()␤»
21:49 masak Lists are wondrous beasts.
21:51 tadzik six six six, the number of the List9)
21:51 tadzik oh noes, I has failed
21:51 pmichaud it's not really a scalar -- it's a list containing a scalar.  :)
21:52 masak a scalar variable containing a list containing a scalar :)
21:52 pmichaud rakudo:  my $foo = gather { say 'something'; take 42 };    say $foo ~~ Int;
21:52 p6eval rakudo 811c1c: OUTPUT«0␤»
21:52 masak ah, that's why it works. I feel better now.
21:55 * sorear is annoyed at System.Collections.BitArray and non-Perl culture in general
21:55 sorear I want to use bit sets as keys in a hash table.
21:56 sorear This came completely for free with vec
21:59 pyrimidine left #perl6
22:03 masak right, &vec! I forgot about that one.
22:03 masak should Perl 6 have one of those?
22:03 masak it should probably work on Buf as well...
22:03 tylercurtis masak: by the way, regarding the difference in error for roles with my attributes between role A {...}; A.new; and role A {...}; class B does A {...};, I have a guess that may be incorrect: it's because in the former case, the class that the problem is occurring in is created at runtime, whereas in the latter, the composition of the role occurs at compile-time.
22:04 masak tylercurtis: yes, I think that is so.
22:06 masak when we can do real Proxy objects with STORE, we could even get the lvalue form of &vec to work \o/
22:07 sorear I'd be happy with the four-arg form of &vec
22:08 masak perldoc doesn't mention such a form. are you thinking of substr?
22:08 sorear (vec doesn't actually have a four-arg form, but substr and splice do, and there's an obvious mapping)
22:08 masak right.
22:09 masak ooh! all of these three do the same, don't they, but on different data structures.
22:09 masak that's very pretty.
22:09 masak hm, I guess &vec is the odd one out, since it doesn't expand/collapse data.
22:10 * masak --> sleep
22:11 tom_tsuruhara joined #perl6
22:11 tom_tsuruhara joined #perl6
22:20 tadzik Perl articles can be easily recognised on reddit. They have slightly less downvotes than upvotes, and 90% of the comments are trolling downvoted beyond treshhold
22:24 mac| joined #perl6
22:24 mac| hiho
22:24 Packetknife joined #perl6
22:24 Packetknife joined #perl6
22:25 tadzik mac|: o/
22:28 kst joined #perl6
22:53 rindolf joined #perl6
22:53 rindolf Hi all.
22:53 tadzik hey rindolf
22:54 Chillance joined #perl6
23:06 * mac| is going to bed. G'nite for every1!
23:07 risou joined #perl6
23:10 rindolf tadzik: what's up?
23:10 tadzik rindolf: insomnia, as usual :)
23:10 rindolf tadzik: ah.
23:10 tadzik the thin line between "I don't feel like coding anymore" and "I'm sleepy"
23:11 tadzik this thin line happens tobe pretty thick in my case
23:11 ingy rakudo: say foo => 'bar'
23:11 p6eval rakudo 811c1c: OUTPUT«Unexpected named parameter 'foo' passed␤  in 'say' at line 5179:CORE.setting␤  in main program body at line 22:/tmp/XHvKXcvp0Y␤»
23:11 tadzik on the night of 2010.07 release I was looking at the irc the whole night, then on 4 AM decided I won't sleep today and got out bikiing
23:12 ingy rakudo: say(foo => 'bar')
23:12 p6eval rakudo 811c1c: OUTPUT«Unexpected named parameter 'foo' passed␤  in 'say' at line 5179:CORE.setting␤  in main program body at line 22:/tmp/uCDMVKbW8Z␤»
23:12 ingy star: say(foo => 'bar')
23:12 p6eval star 2010.07: OUTPUT«Unexpected named parameter 'foo' passed␤  in 'say' at line 5066:CORE.setting␤  in main program body at line 22:/tmp/SeosE9YJkP␤»
23:12 tadzik rakudo: say (foo => bar)
23:12 p6eval rakudo 811c1c: OUTPUT«Could not find sub &bar␤  in main program body at line 22:/tmp/NhKRgUobc1␤»
23:13 tadzik oh
23:13 tadzik rakudo: say (foo => 'bar')
23:13 p6eval rakudo 811c1c: OUTPUT«foo        bar␤»
23:13 tadzik ingy: is that what you expected?
23:13 tylercurtis joined #perl6
23:14 pmichaud rakudo:  say 'foo' => 'bar'
23:14 p6eval rakudo 811c1c: OUTPUT«foo        bar␤»
23:14 orafu joined #perl6
23:16 tadzik time to sleep. g'nite #perl6
23:25 greatflamingfoo joined #perl6
23:27 estrabd joined #perl6
23:41 ashleydev_ joined #perl6
23:43 ashleydev__ joined #perl6
23:44 ashleydev__ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs