Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-07-25

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:04 beggars joined #perl6
00:11 justatheory joined #perl6
00:28 AnTriber joined #perl6
00:34 payload joined #perl6
01:07 egypt joined #perl6
01:10 orafu joined #perl6
01:13 lumi__ joined #perl6
01:17 molaf_x joined #perl6
01:20 hercynium joined #perl6
01:21 tann rakudo: my @a = 1..10; say @a[5..*].perl;
01:21 p6eval rakudo dd5767: OUTPUT«[6, 7, 8, 9, 10, undef]␤»
01:22 colomon joined #perl6
01:22 egypt why the undef?
01:23 tann egypt: methinks, it's a bug
01:23 tann rakudo's bug that is
01:24 tann pugs: my @a = 1..10; say @a[5..*].perl;
01:24 p6eval pugs: OUTPUT«(6, 7, 8, 9, 10)␤»
01:26 * araujo wonders what '.perl' does
01:27 sjohnson araujo: it's like Data::Dumper in P5
01:27 tann sraujo: stringifies the content of the object
01:27 araujo oooh
01:27 araujo nice
01:27 tann so you can eval it back in
01:28 TimToady like .repr in python, except we think there's more than one possible representation :)
01:28 araujo aah I see :)
01:29 araujo and so, i guess all the valid representations can be eval'ed too?
01:29 tann theorectically yes :)
01:29 TimToady it is not guaranteed :)
01:29 araujo hah ok
01:30 TimToady or we'd have to write test cases for python, ruby, lisp, bf, tcl, etc.  :)
01:31 tann test cases for p6's subscripts already make one go insane :D
01:34 tann TimToady: so, which syn/how can i do my $x = \$y; $$x = 1 like in p5?
01:35 TimToady why do you need the indirection?
01:35 tann TimToady: porting p5 modules to p6
01:36 TimToady why did the module need the indirection?
01:36 tann it's Benchmark.pm and the guys does crazy referenences in that code
01:36 tann and i'm too lazy or trying to change as little as possible :D
01:37 TimToady short answer is using Captures
01:37 tann long answer is rewriting that portion of code then? :)
01:37 TimToady which S08 will theoretically be about
01:38 tann s08 isn't on perlcal, is it?
01:38 TimToady but basically you're talking about a list of one element, one way or another
01:39 TimToady some container that happens to hold only one element
01:40 TimToady you can do it with a Capture, but it's different from P5 in that it automatically derefs it for you
01:40 TimToady the most general container may end up being something called a Parcel though
01:40 TimToady hasn't hit the spec yet though
01:42 tann oh...this is nice....p6 has <-> !!! :)
01:43 TimToady and, of course, you can always define an object that contains a single attribute
01:47 TimToady you can blame the persistence of Juerd++ for <->
01:48 tann i'm thankful for it ! :)
01:49 tann rakudo: my @a = 1..5; for @a <-> $i { $i **= 2 }; say @a.perl;
01:49 p6eval rakudo dd5767: OUTPUT«[1, 4, 9, 16, 25]␤»
01:50 pmichaud_ aiiigh!
01:50 tann hola
01:50 pmichaud_ rakudo:  my @a = 1..5;   @a = @a >>**>> 2;   say @a.perl;   # I like this one
01:50 p6eval rakudo dd5767: OUTPUT«[1, 4, 9, 16, 25]␤»
01:50 Juerd_ No >>**>>= operator then? ;)
01:51 pmichaud_ NYI in rakudo, I suspect
01:51 pmichaud_ (I don't know that it's valid anyway)
01:51 pmichaud_ and it'd probably be   >>**=>>
01:51 pmichaud_ std:  (1,2) >>**=>> 2
01:51 Juerd_ I can't wrap my head around how and when to use >> and << anyway
01:51 p6eval std 27720: OUTPUT«ok 00:02 37m␤»
01:51 pmichaud_ the fat part of the arrows always point to the array
01:51 Juerd_ Why is there a second one?
01:52 TimToady in case there are two arrays
01:52 pmichaud_ to distinguish it from    @a >>**<< @b
01:52 Juerd_ What would @a >>* 2 do?
01:52 TimToady std: @a >>* 2
01:52 p6eval std 27720: OUTPUT«##### PARSE FAILED #####␤Preceding operator expects term, but found infix > instead at /tmp/qnwkpY6pf0 line 1:␤------> [32m@a >>*[33m⏏[31m 2[0m␤    expecting infix_circumfix_meta_operator__S_291LtLt_GtGt␤Other potential difficulties:␤  Variable @a is not predeclared at
01:52 p6eval ../tmp/qnw…
01:52 Juerd_ Be invalid. Okay :)
01:52 pmichaud_ that's not the most awesome error I can imagine for that... but it's workable :-)
01:52 Juerd_ "␤" is wonderful. Never knew it existed.
01:53 TimToady yeah, parsed it as @a > >
01:54 Juerd_ I'm off to bed (localtime = 3:53 am)
01:54 pmichaud_ actually, that's not what the error shows
01:54 Juerd_ Good night :)
01:54 pmichaud_ it parsed it as  @a >> * >
01:54 pmichaud_ I mean
01:54 pmichaud_ @a >> *
01:54 lambdabot Maybe you meant: activity activity-full admin all-dicts arr ask . ? @ v
01:54 pmichaud_ or
01:54 pmichaud_ hmmm.
01:54 tann rakudo: my @a = 1..5; say @a[@a.end +> 1 .. *].perl
01:54 pmichaud_ maybe the position is just off.  The marker came back as being after the *
01:55 p6eval rakudo dd5767: OUTPUT«[3, 4, 5, undef]␤»
01:55 TimToady std: @a >> 42
01:55 tann pmichaud: is there a rt for this ^^?
01:55 p6eval std 27720: OUTPUT«##### PARSE FAILED #####␤Obsolete use of >> to do right shift; in Perl 6 please use +> or ~> instead at /tmp/WeQIi9olBB line 1:␤------> [32m@a >> [33m⏏[31m42[0m␤Other potential difficulties:␤  Variable @a is not predeclared at /tmp/WeQIi9olBB line 1:␤------> [32m@a[33m⏏[31m
01:55 p6eval ..…
01:55 TimToady hmm
01:55 TimToady std: @a >>42
01:55 p6eval std 27720: OUTPUT«##### PARSE FAILED #####␤Preceding operator expects term, but found infix > instead at /tmp/XOR9BRZAMz line 1:␤------> [32m@a >>[33m⏏[31m42[0m␤    expecting any of:␤      infix or meta-infix␤      infix stopper␤    standard stopper␤ terminator␤Other potential difficulties:␤
01:55 p6eval ..Variable @a is …
01:55 pmichaud_ tann: you mean about [1..*]  going off the end of the array?  I think there's an rt for it, yes.
01:55 TimToady curious
01:56 pmichaud_ TimToady:  perhaps it parsed forward, then backtracked?
01:56 TimToady std: @a >>|| 42
01:56 p6eval std 27720: OUTPUT«##### PARSE FAILED #####␤Preceding operator expects term, but found infix > instead at /tmp/HWAt0rBMCW line 1:␤------> [32m@a >>||[33m⏏[31m 42[0m␤    expecting infix_circumfix_meta_operator__S_291LtLt_GtGt␤Other potential difficulties:␤  Variable @a is not predeclared at
01:56 p6eval ../tmp/H…
01:56 TimToady something like that
01:57 TimToady but it ought to have reset the high-water mark somewhere
01:57 pmichaud_ yup.
01:58 TimToady std: @a »* 42
01:58 p6eval std 27720: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/NbbJIXLbHW line 1:␤------> [32m@a »*[33m⏏[31m 42[0m␤    expecting infix_circumfix_meta_operator__S_290Fre_Nch␤Other potential difficulties:␤  Variable @a is not predeclared at /tmp/NbbJIXLbHW line 1:␤------>
01:58 p6eval ..[…
01:59 TimToady there are still times when it really ought to just say "I'm really confused here"
01:59 pmichaud_ "Oops."
02:00 pmichaud_ But yes, I'd like a compiler that says "I'm confused."
02:00 pmichaud_ That's so much nicer than "You're wrong."
02:02 dukeleto joined #perl6
02:03 dukeleto howdy
02:03 TimToady greetin's
02:03 dukeleto is there an equivalent to "use integer;" in perl 6/rakudo?
02:04 TimToady not currently
02:04 TimToady at the moment you'd declare your variables with 'int' type to do something similar
02:05 TimToady a little harder, but less likely to get you into accidental trouble
02:05 pmichaud_ (and rakudo doesn't support that yet)
02:05 pmichaud_ dukeleto: what effect would you expect "use integer" to have?
02:06 pmichaud_ i.e., what are you wanting to see from it?
02:06 dukeleto i wanted to speed up sqrt($n) when $n is an int, but I guess declaring my Int $n; does the trick, correct?
02:07 pmichaud_ if $n is an Int, then multidispatch should already go for the faster sqrt()
02:07 pmichaud_ (not that I know how/why it would be faster, though.)
02:08 dukeleto that is good. I have a small group of people working on the euler_bench project, which aims to write the Euler Project problems in various languages to benchmark them. We are starting with perl 5 and rakudo :)
02:08 pmichaud_ ah, yes.  Keep in mind that at the moment Rakudo doesn't offer a lot of optimization options.
02:09 pmichaud_ while it seems like having a typed variable would make things faster -- in Rakudo it actually will tend to slow things down slightly (because of the need to check the types)
02:09 pmichaud_ eventually when we have some type-based optimizations in place, that probably won't be the case.
02:09 dukeleto good to know
02:09 dukeleto euler bench lives at http://github.com/notbenh/euler_bench/tree/master
02:10 pmichaud_ it would be interesting to test both typed and untyped variables :-)
02:10 rbuels joined #perl6
02:11 tann substr no longer does replacement?
02:11 sjohnson Perl 5:  http://www.istockphoto.com/file_thumbview_approve/6412767/2/istockphoto_6412767-cartoon-camel.jpg
02:11 sjohnson Perl 6:  http://eppy7890.files.wordpress.com/2009/06/joe_camel.jpg
02:12 pmichaud_ tann:  nyi
02:12 dukeleto pmichaud: we will test both typed and untyped variables
02:12 dukeleto pmichaud: are there any other things that you would like to see benchmarked?
02:12 pmichaud_ I'm sure I'll think of them as I see more :-)
02:12 pmichaud_ jnthn++ undoubtedly has some ideas
02:17 pmichaud_ sjohnson: so, Perl 6 is harmful to your health and requires a surgeon general's warning?  1/2 :-)
02:18 sjohnson i was thinkin, Perl 6 is more badass
02:18 pmichaud_ It's definitely cool.  But I still think that Perl 5 is really cool too.
02:18 sjohnson the Perl 5 camel looks like a wimp compared to the smoking Camel
02:18 pmichaud_ Perl 5 ain't no wimp.
02:18 sjohnson yeah I use Perl 5 at work everyday
02:18 sjohnson i just meant the pictures
02:19 sjohnson not the language
02:19 pmichaud_ yes, I know.
02:19 sjohnson i just realized the truth of using split regex's in Perl 5
02:19 sjohnson today was a happy day for me
02:19 sjohnson can get stuff done so much quicker than PHP
02:19 sjohnson @lines = split / +/ => $str;
02:19 lambdabot Unknown command, try @list
02:20 sjohnson oopsies
02:20 sjohnson confused the bot
02:22 * sjohnson is going to perl jail
02:25 wayland76 sjohnson: Yes, that should've been @lines = split /\s+/, $str;
02:25 wayland76 :)
02:25 wayland76 Because that picks up tabs too
02:25 sjohnson right!
02:26 dukeleto pmichaud: does rakudo need things from parrot to implement type-based optimizations ?
02:26 wayland76 And if you had $_ = $str, you could do @lines = split;
02:26 pmichaud_ dukeleto: Don't know yet (more)
02:26 sjohnson wayland76: what will that split though, newlines?
02:26 pmichaud_ dukeleto: type-based optimizations aren't high on our priority list at the moment -- we're still more focused on feature completeness and removing "not yet implemented" failures
02:28 pmichaud_ wayland76: I just pushed some more build/install changes into the ins2 branch
02:28 dukeleto pmichaud: I understand that, but I am more interested in highlighting what needs to be optimized in Parrot by blatantly pointing it out with Rakudo code :)
02:28 pmichaud_ (including a couple of things you posted in your patch)
02:28 wayland76 sjohnson: Not sure, but I think p5 split defaults to /\s+/
02:28 pmichaud_ dukeleto: then benchmarks will help.  So will profiling.
02:29 wayland76 pmichaud_: Good to hear.  rurban seems to be keen on getting that sort of thing to work on Windows
02:29 pmichaud_ wayland76: I didn't add the *.spec files from your patch yet
02:29 pmichaud_ next time you send a patch -- can you do it against the ins2 branch instead of the trunk, though?
02:29 pmichaud_ It was hard to tease out your changes from the ones I had already made
02:30 wayland76 pmichaud_: That's fine (re spec file).  Hmm.  Sorry I wasn't around; I think git would've let me regenerate the patch against ins2 easily
02:30 sjohnson wayland76: ok
02:30 pmichaud_ no problem, I learned some git-fu as a result :-)
02:31 wayland76 pmichaud_: Actually, couldn't you just patch HEAD, and then do "git diff origin/ins2"?
02:31 pmichaud_ no, because HEAD is different from where ins2 branched
02:31 wayland76 Oh, ok :)
02:31 pmichaud_ so I had to go back and find the branch point, then apply the patch to that.
02:32 wayland76 Because I made a patch of your ins2 stuff, applied it to head, and then did my own code on top of that :)
02:32 pmichaud_ right.
02:32 pmichaud_ For install stuff I want to keep everything in the ins2 branch until we get it working (on multiple platforms), then I'll move it to head
02:32 pmichaud_ I don't want to put the install stuff in head until we've tested/confirmed it on multiple platforms
02:32 wayland76 I think it's fair to merge it as long as it works better that HEAD :)
02:33 pmichaud_ no ... (more)
02:33 wayland76 But I agree about multi-platform :)
02:33 pmichaud_ if someone has a platform that works now but doesn't work in the install branch, then by prematurely moving it to head we'd be cutting out those platforms
02:33 pmichaud_ (and we might not know how long until we get it fixed)
02:33 awwaiid joined #perl6
02:34 wayland76 Yeah, I pretty much agree; I think we were using different words to try to say the same thing
02:34 pmichaud_ okay.
02:35 pmichaud_ anyway, I don't plan to move the install stuff into head until after we've confirmed it runs on various platforms.
02:35 wayland76 Agreed
02:35 pmichaud_ (because at the moment there's not an easy way to do the install stuff *and* preserve the ability to work against the build copy of Parrot)
02:35 wayland76 Ah, ok.
02:36 pmichaud_ so when we switch to using an installed parrot for building rakudo, it'll have to be switched for everyone
02:36 wayland76 Sounds good to me :)
02:36 pmichaud_ (or we start maintaining separate Makefiles, or adding lots of conditionals, or doing all sorts of other ugly things I'd rather avoid)
02:37 pmichaud_ anyway, if you can re-send a new patch that has just the .spec files and whatever other changes you think are needed to the current ins2 branch, I can apply them.
02:38 wayland76 Did you come up with an alternative to the MANIFEST?
02:38 pmichaud_ yes.
02:39 wayland76 Great :)
02:39 jauaor joined #perl6
02:39 pmichaud_ http://github.com/rakudo/rakudo/blob/94417ae8ff6c9086a450af9d30bc5117ee4fab91/build/Makefile.in  lines 207 through 215
02:42 wayland76 Looks good.  I'll try it out, although it may have to wait until Monday.
02:42 pmichaud_ that's fine, I have a few more patches to review for it and then will ask others to try out the branch
02:43 wayland76 Oh, ok
02:43 ewilhelm joined #perl6
02:49 the_irrational_1 joined #perl6
02:55 Jedai joined #perl6
03:07 mkfort_ joined #perl6
03:08 pmichaud_ okay, done with my patches to ins2 (for now)
03:08 pmichaud_ Any test reports on the 'ins2' branch from various platforms would be greatly appreciated.
03:11 pmichaud_ (there's also a 'make install' target, if people would like to test that)
03:13 pmichaud_ time for some dinner
03:20 donaldh joined #perl6
03:23 wayland76 pmichaud_: Yay, thanks :)
03:25 colomon joined #perl6
03:27 cotto should 'git checkout ins2' get me working with the right branch?
03:36 wayland76 That's what I'd be guessing
03:36 wayland76 Wait,
03:36 wayland76 depends, I think
03:36 wayland76 Anyway, try it; if you mess it up, you can always try something else
03:37 wayland76 Hmm.  Anyway, I've found "git branch -a" to be useful in debugging these git branch things
03:37 wayland76 Food calls.  AFK &
03:42 cotto it doesn't work if I run make clean in Parrot's build dir
03:44 cotto make: *** No rule to make target `/usr/src/parrot/parrot-svn-clean/runtime/parrot/library/PGE/Perl6Grammar.pbc', needed by `src/gen_grammar.pir'.  Stop.
03:45 dukeleto cotto: git checkout -b ins2 upstream/ins2 (where upstream is the name of the remote)
03:45 skids joined #perl6
03:45 dukeleto pmichaud: do you want anything other than "make spectest" on ins2?
03:47 pugs_svn r27721 | lwall++ | [STD] correctly recognize missing << or >>, Juerd++
03:47 pugs_svn r27721 | lwall++ | [STD] remove some "daunt" and visual confusion from parsefail messages
03:49 dukeleto pmichaud: ins2 "make test" passes on OS X 10.5.7, gcc 4.0.1, running "make spectest" now
03:54 KyleHa joined #perl6
03:55 KyleHa Howdy folks.
03:55 KyleHa If, indeed, there are any folks.
03:55 * TimToady hides behind a sigil
03:55 skids_ joined #perl6
03:56 sjohnson our $toady;
03:56 KyleHa Aw, the finest of folks!
03:56 KyleHa I noticed someone else noticing this earlier today:
03:56 KyleHa rakudo: say Any ~~ Object; say Object ~~ Any;
03:56 p6eval rakudo dd5767: OUTPUT«1␤1␤»
03:57 KyleHa I'm wondering which of those is wrong and which is right and whether that's in the spec somewhere.
03:57 TimToady the second is wrong
03:58 sjohnson TimCodey always has the right answer
03:58 TimToady Wiley Codey
03:59 sjohnson TimToady: have you ever been to India?
04:00 TimToady not yet
04:03 lumi_ joined #perl6
04:04 KyleHa rakudo: say Int ~~ Num; say Num ~~ Int;
04:04 p6eval rakudo dd5767: OUTPUT«1␤0␤»
04:10 finanalyst joined #perl6
04:13 pugs_svn r27722 | kyle++ | [t/spec] Object-Any matching, jntn++ and TimToady++
04:13 KyleHa Bleah, I misspelled jnthn++
04:14 finanalyst @seen TimToady
04:14 lambdabot TimToady is in #perl6. I last heard TimToady speak 14m 31s ago.
04:15 finanalyst TimToady: which method should I use to determine what traits are associated with a variable?
04:16 finanalyst i tried searching the specs for WHAT and WHICH but could not find them with the Google tool on perlcabal
04:24 tann joined #perl6
04:29 dukeleto pmichaud: ins2 has some spectest failures: http://gist.github.com/154694
04:31 TimToady finanalyst: traits mix in methods to an object at compile time, so once the variable is declared, it's introspection is like the introspection of any other object, and "I came from a trait" is not known.
04:31 TimToady *its
04:31 TimToady std: @a »* 4
04:31 p6eval std 27722: OUTPUT«[31m===[0mSORRY![31m===[0m␤Missing « or » at /tmp/qZr1gnExRt line 1:␤------> [32m@a »*[33m⏏[31m 4[0m␤    expecting infix_circumfix_meta_operator__S_290Fre_Nch␤Other potential difficulties:␤  Variable @a is not predeclared at /tmp/qZr1gnExRt line 1:␤------>
04:31 p6eval ..[32m@a[33m⏏[31…
04:33 cotto how colorful
04:33 sjohnson 4color!
04:33 finanalyst TimToady: so how would i determine whether a variable is readonly ? @x.WHAT ?
04:34 finanalyst rakudo: my @x is ro; say @x.WHAT
04:34 p6eval rakudo dd5767: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:is'␤in Main (/tmp/PeL5wYr5R7:2)␤»
04:35 eternaleye joined #perl6
04:35 TimToady rakudo: my @x is readonly; say @x.readonly
04:35 p6eval rakudo dd5767: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:is'␤in Main (/tmp/qENGOqYNiZ:2)␤»
04:36 finanalyst is there a way to list the roles associated with a variable?
04:37 justatheory joined #perl6
04:40 finanalyst std: @a>>*4
04:40 p6eval std 27722: OUTPUT«[31m===[0mSORRY![31m===[0m␤Missing << or >> at /tmp/Ly40vIQhhZ line 1:␤------> [32m@a>>*[33m⏏[31m4[0m␤    expecting infix_circumfix_meta_operator__S_291LtLt_GtGt␤Other potential difficulties:␤  Variable @a is not predeclared at /tmp/Ly40vIQhhZ line 1:␤------>
04:40 p6eval ..[32m@a[33m⏏…
04:41 finanalyst std: my @a; @a>>*>>4
04:41 p6eval std 27722: OUTPUT«ok 00:02 37m␤»
04:48 pmichaud_ back again
04:49 pmichaud_ "make spectest" in the ins branch will undoubtedly have some fails
04:49 pmichaud_ "make test" is sufficient
04:49 lumi_ joined #perl6
04:49 finanalyst pmichaud_: is there a way to get a list of the traits/roles associated with a variable?
04:50 pmichaud_ finanalyst: I'm not aware of one, but that doesn't mean there isn't one
04:51 sjohnson Perl 6 Q: will there be a @array[] push syntax, much like PHP?
04:51 sjohnson @array .= 'another item'; # maybe?
04:51 lambdabot Avast!
04:51 finanalyst sjohnson: @array.push('some stuff')
04:52 sjohnson o
04:53 finanalyst rakudo: my @x=1,2,3; @x .= push: 5; @x.perl.say
04:53 p6eval rakudo dd5767: OUTPUT«Statement not terminated properly at line 2, near ": 5; @x.pe"␤in Main (src/gen_setting.pm:3343)␤»
04:53 sjohnson rakudo: my @x=1,2,3; @x .= push 5; @x.perl.say
04:53 p6eval rakudo dd5767: OUTPUT«[1, 2, 3, 5]␤»
04:53 sjohnson rakudo: my @x=1,2,3; @x .= 5; @x.perl.say
04:53 p6eval rakudo dd5767: OUTPUT«.= must have a call on the right hand side at line 2, near " .= 5; @x."␤in Main (src/gen_setting.pm:2602)␤»
04:54 finanalyst sjohnson: .= calls something. 5 is not callable
04:55 sjohnson finanalyst: how do you contatinate $strings?
04:55 Tene ~
04:55 Tene so use ~=
04:55 finanalyst rakudo: my $s='1234'; my $t='abcd'; say $s~$t
04:55 p6eval rakudo dd5767: OUTPUT«1234abcd␤»
04:56 sjohnson cool man
04:56 finanalyst rakudo: my $s='abcd'; $s ~= '43'; $s.say
04:56 p6eval rakudo dd5767: OUTPUT«abcd43␤»
04:57 sjohnson squiggle operator
04:57 tann rakudo: my $vals = [1,2]; printf "%d %d", $vals;
04:57 pmichaud_ "stitching operator"  :-)
04:57 p6eval rakudo dd5767: OUTPUT«Null PMC access in get_integer()␤in Main (/tmp/puBmccAa1H:2)␤»
04:57 jhelwig joined #perl6
04:57 tann pmichaud: ^^^ a bug?
04:57 pmichaud_ tann:  "
04:57 pmichaud_ "Null PMC is almost always a bug"
04:57 tann granted  $vals.list will work
04:58 finanalyst rakudo: my $vals = [1,2]; printf( "%d %d", $vals)
04:58 p6eval rakudo dd5767: OUTPUT«Null PMC access in get_integer()␤in Main (/tmp/pc8uyFEtfg:2)␤»
04:59 finanalyst rakudo: my @vals = [1,2]; printf "%d %d", @vals
04:59 p6eval rakudo dd5767: OUTPUT«Null PMC access in get_integer()␤in Main (/tmp/Xv0i0S5GUR:2)␤»
04:59 finanalyst rakudo: my @vals = [1,2]; printf("%d %d", @vals)
04:59 p6eval rakudo dd5767: OUTPUT«Null PMC access in get_integer()␤in Main (/tmp/15KpPPeVDa:2)␤»
04:59 finanalyst rakudo: my @vals = 1,2; printf("%d %d", @vals)
04:59 p6eval rakudo dd5767: OUTPUT«1 2»
05:00 tann maybe, printf should always faltten to list?
05:00 pmichaud_ it shouldn't auto-flatten a scalar I don't think.
05:00 finanalyst i thought printf was working in some form
05:00 tann it does
05:00 pmichaud_ printf is working.  It's having trouble with "%d %d" when there's only one argument following
05:00 tann it only chokes with objects
05:01 pmichaud_ rakudo:  my $vals = [4];  printf("%d %d", $vals);
05:01 Tene rakudo: my $vals = [1,2]; printf("%d %d", |$vals);
05:01 p6eval rakudo dd5767: OUTPUT«Null PMC access in get_integer()␤in Main (/tmp/EBSWVH71OI:2)␤»
05:01 p6eval rakudo dd5767: OUTPUT«1 2»
05:01 pmichaud_ rakudo:  my $vals = [4];  printf("%d", $vals);
05:01 p6eval rakudo dd5767: OUTPUT«1»
05:02 tann rakudo: printf "%d %d", [1, 2], 3;
05:02 p6eval rakudo dd5767: OUTPUT«2 3»
05:02 Tene that's the correct behavior.
05:03 pmichaud_ and come to think of it, the bug is in parrot's sprintf opcode.  I'm not sure how to fix that.
05:03 * pmichaud_ looks.
05:06 pmichaud_ looks like too much trouble to track tonight :-|
05:06 pmichaud_ anyway, it can be rakudobugged
05:19 tann any better *working* code does this in rakudo? $s = $s.substr(0,1) ~ '-' ~ $s.substr(1);
05:33 PerlJam tann: depends on how you define better :)
05:33 PerlJam my $s = "foo"; $s ~~ /^./;  $s.=subst($/,"$/-"); say $s;  # working, yes; better, ... maybe
05:34 tann PerlJam: less verbose == better :)
05:35 tann PerlJam: cool.... i was trying to find substitute for  substr($s, 1, 0) = '-'; :)
05:35 jauaor joined #perl6
05:35 PerlJam lvalue substr doesn't work AFAIL
05:35 PerlJam er, AFAIK
05:36 tann PerlJam: yup...that's why the workaround
05:36 tann the joy of making perl5 code works in rakudo :)
05:37 PerlJam Ideally, $s .= subst(/^./, "$/-"); should work too
05:38 tann PerlJam: $/ holds the match now (w/o the ^ $) ?
05:38 frew_ joined #perl6
05:39 PerlJam the stringy version of $/ is what was matched.
05:40 tann rakudo: my $s = "abc"; $s .= subst(/^./, "$/-");
05:40 p6eval rakudo dd5767: OUTPUT«Use of uninitialized value␤»
05:41 tann rakudo: my $s = "abc"; $s ~~ /^./; $s .= subst(/^./, "$/-");
05:41 p6eval rakudo dd5767:  ( no output )
05:43 tann oh man..too cryptic... i like the java-like verbose version   $s = $s1 ~ '-' ~ $s2; :(
05:44 PerlJam Hmm. I guess $s .= subst(/^./, "$/-"); can't work.
05:44 egypt yay! \o/
05:45 egypt when did rakudo get "The grammar has no TOP rule..." errmsg?
05:46 PerlJam rakudo:  my $s = "foo"; $s .= subst(/^./, { "$_-" }); say $s;
05:46 p6eval rakudo dd5767: OUTPUT«f-oo␤»
05:46 PerlJam ah, there we go.
05:46 PerlJam (guessing for magic)++
05:48 PerlJam egypt: it's been a while now I think.  according to git blame, May 6, 2008 was when that line was added.
05:49 egypt PerlJam: that's strange, I'm sure I didn't get that as recently as a month ago
05:51 PerlJam no offense, but I trust git more than your memory  :)
05:54 tann pugs: my $s = "foo"; substr($s, 1, 0) = '-'; say $s;
05:54 p6eval pugs: OUTPUT«f-oo␤»
05:54 PerlJam ah, lvalue substr *does* work.
05:54 PerlJam (for pugs :)
05:55 PerlJam so ... all you have to do is run pugs from within rakudo.
05:56 unitxt left #perl6
05:56 tann what about use v5? :P
06:33 asciiville joined #perl6
06:34 asciiville left #perl6
06:35 lumi_ joined #perl6
06:36 asciiville joined #perl6
06:39 asciiville asdf
06:59 TimToady std: asdf
06:59 p6eval std 27722: OUTPUT«Undeclared routine:␤   asdf used at 1 ␤ok 00:02 36m␤»
07:02 pmichaud_ asqew
07:02 tann std: :)
07:02 p6eval std 27722: OUTPUT«[31m===[0mSORRY![31m===[0m␤Illegal use of colon as invocant marker at /tmp/OCXdSL9brn line 1:␤------> [32m:[33m⏏[31m)[0m␤FAILED 00:02 36m␤»
07:02 tann std: :D
07:02 p6eval std 27722: OUTPUT«ok 00:02 36m␤»
07:03 tann std: :D :O
07:03 p6eval std 27722: OUTPUT«ok 00:02 36m␤»
07:04 tann now if there's an editor that can display smileys for p6 :D
07:13 cbk moritz_, pmichaud_ thanks but I have to go to work now.  THANKS rakudo.org for #19 went to sleep at 3am last night and woke up at 7am. now I'm going to be a zombie at work :)
07:19 TimToady zzz &
07:20 tann rakudo: multi sub f(%h)  { 'h' }; multi sub f(@a) { 'a' }; multi sub f { 'oops!' }; f(1);
07:20 p6eval rakudo dd5767: OUTPUT«No applicable candidates found to dispatch to for 'f'␤in Main (/tmp/W4BBIMfQ6j:2)␤»
07:20 donaldh joined #perl6
07:22 tann pugs: multi sub f(%h)  { 'h' }; multi sub f(@a) { 'a' }; multi sub f { 'oops!' }; f(1);
07:22 p6eval pugs:  ( no output )
07:22 tann multi sub f(%h)  { 'h' }; multi sub f(@a) { 'a' }; multi sub f { 'oops!' }; say f(1);
07:22 tann pugs: multi sub f(%h)  { 'h' }; multi sub f(@a) { 'a' }; multi sub f { 'oops!' }; say f(1);
07:22 p6eval pugs: OUTPUT«oops!␤»
07:30 Su-Shee joined #perl6
07:30 Su-Shee good morning future. :)
07:46 pmichaud_ The future is here?
07:46 egypt good morning Su-Shee :)
07:46 Su-Shee pmichaud: aren't you working like there is no tomorrow on the future? :)
07:47 pmichaud Su-Shee: that sounds about right, yes.  :-)
07:47 egypt wouldn't that be kinda contradictory?
07:48 pmichaud egypt: yes, but that's pretty much me in a nutshell.
07:48 Su-Shee egypt: it's all very zen with rakudo.. the future has no tomorrow, it's now. ;)
07:56 egypt Su-Shee: i am too tired for zen. my body clock needs to be defragged :(
07:57 egypt but that's neither here nor there; good morning too you; i'm off to bed :)
07:57 * Tene having fun with curses in rakudo. :)
07:57 * Tene annoyed by unicode fail in Parrot curses. :(
07:58 egypt Tene: rakudo can do curses? how?
07:58 Tene egypt: use Curses:from<parrot>;
07:59 * egypt might play with rakudo a little longger :)
07:59 lisppaste3 tene pasted "Curses example for egypt" at http://paste.lisp.org/display/84163
08:00 Tene This works against latest parrot.  Not against Parrot 1.4, though. There were a couple of missing curses functions.
08:01 Tene Bet you can't tell what I'm working on. ;)
08:03 tann rakudo: multi sub f(Sub $f) { 'sub' }; multi sub f(Int $n) { 'int' }; f(sub { 1 });
08:03 p6eval rakudo dd5767:  ( no output )
08:04 tann oh..interesting..i got a 'Bus error' on my mac
08:05 Tene nice!
08:06 tann it looks like my rakudo build is kinda hmm...jumpy
08:08 tann rakudo: multi sub f(Sub $f) { 'sub' }; multi sub f(Int $n) { 'int' }; say f(sub { 1 });
08:09 p6eval rakudo dd5767: OUTPUT«sub␤»
08:09 tann rakudo: multi sub f(Code $f) { 'sub' }; multi sub f(Int $n) { 'int' }; say f(sub { 1 });
08:09 p6eval rakudo dd5767: OUTPUT«sub␤»
08:09 tann rakudo: multi sub f(Code $f) { 'sub' }; multi sub f(Int $n) { 'int' }; say f(1);
08:09 p6eval rakudo dd5767: OUTPUT«int␤»
08:16 tann std: sub f(Str|Code $a) { say $a.WHAT }; f("p5");
08:17 p6eval std 27722: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unable to parse multisig; couldn't find final ')' at /tmp/Ugd7HChH6t line 1:␤------> [32msub f(Str[33m⏏[31m|Code $a) { say $a.WHAT }; f("p5");[0m␤    expecting any of:␤    param_sep␤        parameter␤       post_constraint␤   trait␤
08:17 p6eval ..type_constraint␤   whitespace␤FAIL…
08:17 redicaps1 joined #perl6
08:32 masak joined #perl6
08:33 dukeleto pmichaud: some failing tests in your ins2 branch: http://gist.github.com/154748 http://gist.github.com/154745
08:34 tann_ joined #perl6
08:34 moritz_ looks to me like ins2 isn't sufficiently up-to-date
08:36 Tene hai masak
08:36 masak y0 Tene
08:36 Tene got something for you to look at.  'sec.
08:37 * masak curious
08:39 Tene http://github.com/tene/cutegirls/tree/b23923504fe58eabb2ae695d9002d6d49127903f/p6
08:40 masak ooh, getch!
08:40 masak (but can we please also work at getting the corresponding call into core Rakudo?)
08:41 masak Tene: anyway, way cool!
08:42 Tene masak: what call?
08:42 masak getch.
08:42 masak don't remember what it's supposed to be in Perl 6.
08:42 * masak checks
08:42 Tene masak: That's a Curses getch.  Different from reading a keystroke without curses, I think... not quite sure.
08:43 masak ok.
08:43 masak I found some hints in S32/IO. getc reads a character from an IO object.
08:44 masak but there's also a "these are not the droids you're looking for" note there.
08:44 masak saying I really want 'readkey()', which hasn't been specced yet.
08:45 Tene there's always .read(1), but that's "read one byte" not "read one character".
08:45 Tene I discovered that Parrot's curses library is broken WRT unicode. :(
08:45 masak :(
08:45 Tene but maybe I will fix it!
08:46 Tene yay fixing!
08:46 Tene But not tonight.
08:48 masak I'm getting record amounts (for me) of comments to "Three things in Perl 6 that aren't so great", proving once again that the only thing more attention-grabbing than shiny graphics is a medium-sized rant.
08:49 moritz_ masak: there are also some comments on http://www.reddit.com/r/programming/comments/93ttm/three_things_in_perl_6_that_arent_so_great/
08:50 masak thank you.
08:50 masak I always miss when that kind of linkage happens.
08:50 masak there ought to be a mechanism for telling the original author (except for moritz_++, that is)
08:52 masak wow, comments so far exceed my expectations of a reddit thread.
08:53 Tene masak: fwiw, check out UI.pm on that github directory I linked.  I indented all the methods in those classes. :)
08:54 masak Tene: github is sad right now. they're deploying something, I think.
08:54 Tene :(
08:57 masak I can't clone the repo either.
08:57 Tene so sad. :(
08:57 masak bah, time to do some hacking instead. :)
08:57 masak still racing towards being able to blog later today about week 11 of Web.pm
08:58 Tene http://allalone.org/~tene/cg.tar.bz2
08:58 Tene has a copy of the repo
08:58 masak danke.
08:58 Tene masak: I've got most of the weekend free, so please let me know if there's anything you'd like me to do for Web.
08:59 Tene message on IRC on e-mail are both great.
08:59 masak Tene: I haven't really updated you on my recent thoughts about the feasibility of making a Parrot-based version of Hitomi.
08:59 masak at present, I think it's harder than I originally thought.
09:00 masak things are pretty dynamic on the inside of Genshi.
09:00 Tene I'm actually going to sleep right now, but I'd love to see e-mail from you when I wake up.
09:00 Tene 'night
09:00 masak I'll se what I can do.
09:00 masak good night.
09:01 masak Tene: hey, you indented your classes, but you have no Pod in there whatsoever!
09:02 masak that's no challenge. :)
09:02 finanalyst masak: re indenting POD is it possible to use unspace?
09:02 masak finanalyst: don't think so.
09:02 finanalyst eg. \     =begin
09:03 masak unspace is a feature of Perl 6, and Pod is basically a separate language.
09:03 masak not just a slang, but a separate language.
09:03 masak (AFAIU)
09:03 finanalyst but Pod is used in perl6
09:03 masak reason being, Pod translators shouldn't have to know Perl 6.
09:03 masak haven't seen unspace specced in Pod, ergo it's not in Pod.
09:03 finanalyst then perhaps, Pod implementors should use unspace
09:04 masak finanalyst: it would certainly solve the problem almost entirely.
09:04 masak finanalyst: I cannot say how intrusive it would be to the idea of Pod itself, though.
09:04 finanalyst ?(@pod-implementors == @perl6-implementors)
09:04 lambdabot Unknown command, try @list
09:05 masak lambdabot: hush.
09:05 finanalyst how much is Pod used outside of perl?
09:05 finanalyst realistically as opposed to idealistically?
09:05 masak finanalyst: @pod-spec-authors is basically TheDamian.
09:06 finanalyst thought so
09:06 * finanalyst sending Damian an email
09:06 masak finanalyst: and he hasn't made a sound about it in a couple of years.
09:06 finanalyst he has said he is making progress quietly
09:07 masak yes, but he said that in 2006.
09:07 masak meanwhile, back in 2009, I'm starting to want to mark up my document with Pod.
09:25 pmichaud for those playing with the 'ins2' branch -- it's known that spectests will fail
09:25 pmichaud I just need "make test"
09:25 pmurias joined #Perl6
09:27 masak rakudo: class A { has @!a; method foo { .say for @!a.elems, @!a.perl } }; sub bar(*%_) { A.new(|%_) }; my @b = 42,43,44; bar(:a(@b)).foo
09:27 p6eval rakudo dd5767: OUTPUT«1␤[[42, 43, 44]]␤»
09:28 masak this is related to flaws I experienced yesterday.
09:28 masak when arrays are passed through *%_, they get an extra layer of array around them.
09:28 * masak submits rakudobug
09:30 colomon joined #perl6
09:31 pmichaud that actually seems right to me
09:32 pmichaud because the value portion of a pair is a scalar
09:32 pmichaud and placing an array into a scalar creates a reference
09:35 pmichaud (modulo any new capture/parcel semantics)
09:36 masak pmichaud: ok. let's say I want to have an array in my @!a.
09:36 masak (and I need to use *%_ because I'm passing unknown things along)
09:36 masak how do I do it?
09:36 pmichaud I don't know.
09:37 pmichaud I'm not arguing in favor of the current semantics -- I'm just having trouble seeing how they ought to work
09:37 masak it works without the *%_ step. or without the class/attr.
09:37 pmichaud well, the %*  definitely converts pairs into a hash
09:38 masak and yet, this works:
09:38 masak rakudo: sub foo(:@a) { say @a.elems }; sub bar(*%_) { foo(|%_) }; my @b = 42,43,44; bar(:a(@b))
09:38 p6eval rakudo dd5767: OUTPUT«3␤»
09:39 pmichaud okay, it must be something in .new then
09:39 masak it's only when this is combined with storing the array into an attr in an object that the extra layer of array is added.
09:39 * masak adds this to the bug ticket
09:40 pmichaud my guess is going to be that  :a(@b)  builds a named argument with a capture
09:40 pmichaud interestingly, though, that would mean that changes to @b would affect the named argument
09:42 pmichaud anyway, it's fine to file it as a bug, but I think we'll have to wait for spec clarity on captures/flattening before it can be reliably fixed (or even reliably determined what "fixed" means)
09:42 masak yes, I understand.
09:44 masak I'll be logging off now. going to Stockholm to spend the day with nerdy people. will be back tonight for the massive Week 11/Web.pm-summary-so-far blog post.
09:44 masak see you then. o/
09:44 pmichaud class A { has @!a; method foo { say @!a.elems; } };  my @b = 42,43;  sub bar(*%_) { @b = 1..10; A.new(|%_) }; bar(:a(@b)).foo
09:44 pmichaud 2?  or 10?
09:45 pmichaud afk also
10:04 wknight8111 joined #perl6
10:34 meppl joined #perl6
10:36 jauaor joined #perl6
10:37 Front_slash joined #perl6
10:51 zamolxes joined #perl6
10:55 icwiener joined #perl6
10:59 fridim_ joined #perl6
11:07 yahooooo joined #perl6
11:17 jnthn o/
11:18 eiro hello
11:19 eiro in for @a { say $^a++ } , $a is read only ... cool !
11:20 payload joined #perl6
11:20 eiro for @a <-> $a { say $a } $a is side effect
11:20 eiro is there a way to write something like for @a -> temp $a { # here i can modify the temp value of $a
11:20 donaldh joined #perl6
11:22 eiro ( is rw works like <-> )
11:23 jnthn is copy
11:23 jnthn for @a -> $a is copy { ... }
11:23 eiro thx jnthn
11:23 eiro no short for it ?
11:24 payload rakudo: my @a = 1..5; for @a <-> $a { $a *= 2 }; say @a
11:24 p6eval rakudo dd5767: OUTPUT«246810␤»
11:25 eiro payload, that's side effect!
11:25 eiro i don't want side effect!
11:26 jnthn eiro: That isn't so long! :-P
11:26 payload rakudo: my @a = 1..5; for @a -> $a is copy { $a *= 2; print $a }; say " ", @a.perl
11:26 p6eval rakudo dd5767: OUTPUT«246810 [1, 2, 3, 4, 5]␤»
11:27 eiro jnthn, too long for perl programmer :)
11:28 eiro jnthn, it feel to me that for @a { say $^a } must be the default behavior
11:30 jnthn That's pretty much equivalent to  for @a -> $a { say $a }
11:30 jnthn rakudo: my $foo = { %^a }; say $foo.signature.perl;
11:30 p6eval rakudo dd5767: OUTPUT«:(%a)␤»
11:30 jnthn rakudo: my $foo = { $^a }; say $foo.signature.perl; # gah, meant this
11:30 p6eval rakudo dd5767: OUTPUT«:(Object $a)␤»
11:31 jnthn rakudo: my $foo = -> $a { $a }; say $foo.signature.perl; # same, I expect
11:31 p6eval rakudo dd5767: OUTPUT«:(Object $a)␤»
11:31 jnthn introspection++
11:33 eiro jnthn, no ... what i meant is: by default, $a is readonly ... not a copy
11:34 finanalyst rakudo: my @a; foo(@a);@a = 4,3,2;sub foo(@z) { bar(@z) }; sub bar(@x) { }
11:34 p6eval rakudo dd5767: OUTPUT«Cannot assign to readonly variable.␤in Main (/tmp/fO36SkkFpF:2)␤»
11:34 finanalyst problem is the assignment to @a after calling foo
11:35 finanalyst any help as to a workaround?
11:36 Su-Shee wow what do I read with my old eyes? :) "There will be the first major release of Rakudo in spring 2010" ?
11:39 finanalyst before christmas
11:39 jnthn finanalyst: That looks like a rakudo bug..
11:39 Su-Shee well andy lester of perl buzz posted it..
11:40 jnthn rakudo: my @a; @a = 4,3,2; sub foo(@z) { bar(@z) }; sub bar(@x) { }
11:40 p6eval rakudo dd5767:  ( no output )
11:40 jnthn rakudo: my @a; foo(@a);  @a = 4,3,2; sub foo(@z) { bar(@z) }; sub bar(@x) { }
11:40 eiro have a nice WE all
11:40 p6eval rakudo dd5767: OUTPUT«Cannot assign to readonly variable.␤in Main (/tmp/bYWrd085jV:2)␤»
11:40 jnthn rakudo: my @a; bar(@a);  @a = 4,3,2; sub foo(@z) { bar(@z) }; sub bar(@x) { }
11:40 p6eval rakudo dd5767:  ( no output )
11:40 jnthn ouch
11:40 jnthn Looks like bug. :-/
11:41 finanalyst jnthn: just posted a bug
11:42 jnthn Thanks.
11:42 finanalyst i spent over a week narrowing it down to this code
11:44 finanalyst just found a workaround
11:44 finanalyst rakudo: my @a; foo(@a);@a = 4,3,2;sub foo(@z) { my @xz = @z; bar(@xz) }; sub bar(@x) { }
11:44 p6eval rakudo dd5767:  ( no output )
11:45 finanalyst rakudo: my @a; foo(@a);@a = 4,3,2;sub foo(@z) { my @xz = @z; bar(@xz) }; sub bar(@x) { };say @a.perl
11:45 p6eval rakudo dd5767: OUTPUT«[4, 3, 2]␤»
11:48 molaf joined #perl6
11:49 payload1 joined #perl6
11:51 jauaor :P
12:17 icwiener_ joined #perl6
12:21 unitxt joined #perl6
12:21 unitxt left #perl6
12:36 fridim_ joined #perl6
12:54 pugs_svn r27723 | moritz++ | [t/spec] unfudge [//] and [||] tests for rakudo
13:20 icwiener_ joined #perl6
13:37 hoelzro good (morning), perl6!
13:38 sbp hey hoelzro
13:39 hoelzro so I wrote the following program running on Rakudo: http://pastebin.com/d65b49dc1
13:39 hoelzro but when I type a line, ex. "say 'hello'", I get this error:
13:40 hoelzro ResizablePMCArray: Can't pop from an empty array! in Main (src/gen_setting.pm:3340)
13:40 hoelzro wondering if anyone had any insight into that
13:40 hoelzro or if someone knows a way for me to get a better stack trace
13:41 hoelzro s/better//
13:48 jnthn ooh, I haven't seen anybody try that one before. ;-)
13:49 hoelzro per pmichaud's suggestion, I'm going to try to create an online REPL for Rakudo =)
13:49 hoelzro so I figured I'd rip apart HLLCompiler.interactive
13:49 jnthn :-)
13:51 jnthn I'm guessing it is some compiler state not being set up properly or something like that.
13:52 hoelzro that was my guess as well
13:53 hoelzro I just wish I knew which array it was trying to pop from
13:53 hoelzro I'll continue to play around with it
13:54 jnthn @?BLOCKS perhaps, but you'd expect it to have pushed onto there too. :-S
13:57 Chillance joined #perl6
14:01 jnthn hoelzro:
14:01 jnthn Got a stack trace for you that's a bit more helpful.
14:01 colomon joined #perl6
14:01 jnthn hoelzro: http://gist.github.com/154804
14:02 hoelzro jnthn: thanks!
14:02 jnthn hoelzro: Added patch to the gist to a line you can comment out to get these details
14:02 hoelzro that'll help a LOT, how'd you do that?
14:03 jnthn hoelzro: so if you apply that patch you can get it
14:03 hoelzro awesome
14:04 jnthn The mechanism getting in there way there is the one that only shows Routines in the backtrace, not just any Block (since all are Parrot-level subs)
14:04 hoelzro I'm a little inexperienced with PIR; I assume pop_eh != pop, and is special?
14:04 jnthn But it may be nice to print out also the Parrot-level subs when we're outside of Perl 6 code.
14:05 jnthn pop_eh = pop the top exception handler off the top of the exception handler stack
14:05 hoelzro ah
14:05 jnthn Opposite of push_eh
14:05 hoelzro ok, there's only one pop in parse, so this "should" be easy
14:06 jnthn afk for a little bit, back later
14:06 hoelzro ok, thanks again
14:06 jnthn np, look forward to seeing an online REPL! :-)
14:07 hoelzro I'll do what I can =)
14:17 nihiliad joined #perl6
14:18 pmichaud good morning, #perl6
14:18 pmichaud the biggest issue with the REPL is handling lexicals.
14:19 araujo morning
14:21 hoelzro pmichaud: I decided not to worry about that for now
14:21 hoelzro I'm just going to try to get a basic online, non-safe REPL working
14:21 hoelzro just something I can run at home
14:21 hoelzro then I'll add security
14:22 hoelzro I'm hoping to leverage HLLCompiler, so if we add lexicals to the standard REPL, they "should" work in the online version
14:24 pmichaud hoelzro: yes, I agree -- I want the standard REPL to be able to handle lexicals
14:24 pmichaud hoelzro: so you're just working on the online part, then?
14:24 hoelzro yup =)
14:24 pmichaud that sounds like an excellent plan
14:24 hoelzro I had some great help from jnthn
14:25 hoelzro I'm trying to get a simple script (seen in a message of mine above) working, and so I'm working on a bug
14:25 hoelzro then I'm thinking of subclassing Perl6::Compiler to create an online, interactive REPL
14:27 pmichaud hoelzro: yes, I just looked at the pastebin.
14:27 pmichaud I don't think you need/want ".new" on Perl6::Compiler
14:27 hoelzro oh?
14:28 pmichaud you might be able to do   Perl6::Compiler.interactive
14:28 * pmichaud tries it
14:28 hoelzro interesting
14:28 pmichaud works for me
14:28 hoelzro interesting
14:29 pmichaud (I think that it ought to work with .new on Perl6::Compiler, yes -- but I think the current Perl6::Compiler object doesn't know how to handle multiple instances of itself.
14:29 hoelzro then that's another issue for another time
14:30 hoelzro I'll dig through interactive then
14:30 hoelzro and attempt to replace the I/O with some sort of online version
14:30 pmichaud seems very reasonable.
14:33 hoelzro another thing I'd like to try to get working is multi-line input for blocks in the REPL
14:33 hoelzro ex. for (1..10) {\n<different prompt until final }>
14:34 hoelzro doing that bit with the online version could get annoying
14:36 firmicus joined #perl6
14:38 pmichaud hoelzro: well, the ultimate way that's currently designed to happen is via '.moreinput' in the grammar.
14:39 pmichaud the STD.pm grammar has a .moreinput subrule that says "I really need more input in order to get to something that is parseable"
14:39 hoelzro ok
14:39 pmichaud Rakudo hasn't adopted that yet, but we'll need to.  Actually, it really wants to go into PCT::Grammar at some point, so that all grammars can take advantage of it.
14:43 ZuLuuuuuu joined #perl6
14:54 jnthn hi pmichaud
14:54 jnthn .oO( did he fly already )
14:54 moritz_ he sais something 4 minutes ago in #parrot
14:54 moritz_ s/sais/said/
14:55 * jnthn didn't even parse sais as wrong English, but curious lolspeak
14:56 pmichaud I'm still here, but they're boarding now
14:56 pmichaud so I'm about to be not-here
14:57 moritz_ I just tested ins2 successfully on Debian Lenny/amd64
14:57 pmichaud \o/
14:57 pmichaud many thanks
14:57 pmichaud I'm primarily interested in Win32 next
14:57 jnthn uh-oh
14:57 jnthn pmichaud: p6object's isa did something horrid
14:58 jnthn pmichaud: Assumed that if we were matching against Any and it wasn't a Junction it was fine.
14:58 jnthn pmichaud: And thus Object ~~ Any.
14:58 pmichaud right
14:58 pmichaud I saw that.
14:58 jnthn Yeah
14:58 jnthn It's gotta die. I know it helps performance.
14:58 jnthn But it also ties the multi dispatcher's narrowness analysis in knots.
14:58 jnthn I was sure I'd got a bug...but no, garbage in, circularity error out.
14:59 pmichaud well, keep in mind that the shortcutting is also there to be able to handle non-Rakudo objects
14:59 jnthn Turns out making it give the correct answer breaks two spectests. Going to investigate. One looks trivial fix (case of incorrect signature) anyway.
14:59 jnthn Yeah, there is that too.
14:59 jnthn We need a better plan on that I guess.
15:00 pmichaud the other purpose for the shortcutting was so that non-native Rakudo objects still look like subclasses of Any
15:00 jnthn Right, I get that.
15:00 pmichaud since we have our own p6metaclass, does this mean we can have our own isa?
15:00 jnthn We need to find a different way to provide for that, which doesn't result in us giving wrong results.
15:00 pmichaud and move the rakudo-specific stuff out of the parrot p6metaclass?
15:01 jnthn Well, actually I'm talking bull. It's actually in ACCEPTS that we have the issue. :-)
15:01 jnthn But yes, we can have our own too.
15:01 jnthn Would you ratehr I did that and left p6o alone?
15:01 jnthn And we work out a good solution later?
15:01 pmichaud if we're willing to live with the performance issue, I don't mind if we simply say that Any is true for any object that isn't a Perl6Object
15:01 pmichaud (and Perl6Object also)
15:01 jnthn It's gonna break again as soon as somebody subclasses Object.
15:02 pmichaud I'd remove the test for Junction
15:02 jnthn oh, sorry
15:02 jnthn I mis-understood what you meant.
15:02 jnthn Yes, that's sane.
15:02 pmichaud okay, I gotta get in line to board
15:02 jnthn I can live with a small performance hit in order to gain correctness.
15:02 pmichaud feel free to experiment with it
15:02 jnthn OK, safe flight!
15:02 pmichaud hopefully it *is* a small performance hit
15:02 pmichaud later
15:20 donaldh joined #perl6
15:21 Whiteknight joined #perl6
15:24 KyleHa joined #perl6
15:29 Chillance_ joined #perl6
15:31 M_o_C joined #perl6
15:33 hoelzro|home joined #perl6
15:33 itz_ joined #perl6
15:41 payload joined #perl6
15:46 cognominal joined #perl6
15:57 hoelzro|home is there a good way to print to STDERR in PIR?
15:58 hoelzro|home ah, I think I found it
16:11 jaldhar joined #perl6
16:12 jaldhar Hello. Question: in the construct for < 1 2 3 > -> $number { do_something($number) }
16:13 jaldhar is do_something executed in "parallel" or consecutively?
16:13 jaldhar (hope that made sense)
16:13 TimToady consecutively
16:13 TimToady you can tell it to operate in parallel however, if the 'for' is in hyper context
16:14 TimToady my @result = hyper for < 1 2 3 > -> $number { do_something($number) }
16:14 TimToady that tells the for it can run them in parallel
16:14 TimToady currently specced, but I'm sure not implemented
16:15 jaldhar I wonder if that is what is happening?  My actual do_something function assigns a game piece to an empty space on the board.  But sometimes two are ending up in the same space
16:15 jaldhar latest rakudo btw
16:15 TimToady is do_something not idempotent?
16:15 jaldhar not using hyper afaict
16:15 TimToady should be doing them sequentially
16:16 TimToady possibly a scoping problem?
16:16 TimToady so you're starting over somehow?
16:16 kane___ joined #perl6
16:16 jaldhar what I do is pick a random space in a repeat ... until (space is empty)
16:16 TimToady how does the second iteration learn of the first iteration's results?
16:17 TimToady what is your board stored in?
16:17 jaldhar an array of spaces
16:17 jaldhar each space has a slot for a piece and an adjacency table
16:17 TimToady declared where and how?
16:18 jaldhar a space is a class and the board has an array of spaces
16:18 jaldhar board is also a class
16:18 TimToady how is the board declared, in in what scope?
16:19 TimToady which declarator are you using?
16:21 TimToady you might print out .WHICH on the two iterations to see if you're really modifying the same object
16:21 asciiville joined #perl6
16:21 jaldhar ok.  In reference to your previous question, it is class Space{...} and class Board{...} if that's what you're asking.  Board includes @!grid of Space
16:22 jaldhar oh sorry thats %!grid of Space
16:23 TimToady with 'has', I presume
16:24 jaldhar yes
16:24 TimToady if you're sure you're dealing with the same Board each time through, then the problem would be on the setting and sticking end, I suppose
16:25 asciiville is there any notion of "forward declaration" in Rakudo/Perl 6? I get invoke() errors unless I change the order of the classes/subclasses in DBDI/Driver/SQLite3.pm
16:25 TimToady I doubt that rakudo would be trying to do any concurrency
16:26 jaldhar TimToady: Yes I get the feeling that my logic of assigning to an empty space is wrong somehow.  It is definitely the same Board according to .WHICH
16:26 TimToady asciiville: a class name has to be predeclared before you can use it, but you can put class Foo {...} with the ... stub
16:27 TimToady that would serve as a forward declaration
16:27 asciiville ah! much obliged
16:27 TimToady alternately, you can say ::Foo for a not-yet-defined ref
16:27 TimToady (though not in a declarative context, alas)
16:28 TimToady we should probably separate those concepts...
16:29 TimToady but currently, if you need sub foo (::Foo $bar) you have to use class Foo {...} instead
16:29 TimToady since the ::Foo would mean to capture the type of the $bar parameter en passant
16:29 asciiville the stub sounds good. :) i've been dealing with C, PIR, and Perl 6 to get the SQLite3 working in latest Parrot/Rakudo
16:30 TimToady rakudo probably needs "is also" on the real definition to suppress warnings
16:30 TimToady and "is also" will change to "augment" in rakudo someday
16:30 TimToady but you shouldn't need either if the original was a stub
16:30 jaldhar aargh I think I figured it out.  I have
16:31 jaldhar repeat { $rand = ( 20.rand.int ) + 1; } until %!grid{$rand}.occupant == '';
16:31 asciiville i'm guessing the stub is much easier than reorganizing classes
16:31 jaldhar but == is numeric isn't it.
16:31 TimToady == is numeric
16:31 jaldhar doh
16:31 jaldhar the occupant slot holds a string
16:31 TimToady jaldhar++ for making progress
16:32 TimToady @karma jaldhar
16:32 lambdabot jaldhar has a karma of 1
16:32 TimToady jaldhar++ for having the courage to ask questions too
16:32 TimToady @karma jaldhar
16:32 lambdabot jaldhar has a karma of 2
16:33 jaldhar its so helpful to just talk it out sometimes.  I must have stared at that code 100 times before and glossed over the ==
16:33 TimToady the == ought to have been giving you warnings, I think
16:34 TimToady but perhaps not, depending on if we think '' is a valid representation of 0
16:35 TimToady maybe it's something the compiler could notice
16:37 jaldhar I think it would be a good idea
16:43 hoelzro|home how can I test if a pmc is null in PIR?  is it just unless null mypmc goto some_label?
16:44 TimToady ENOKLOO # not a PIR expert
16:44 * TimToady is not even a PIR amateur...
16:45 hoelzro|home ugh
16:45 hoelzro|home I just realized my stupid mistake
16:46 hoelzro|home s/unless/if/
16:50 pmichaud greetings from San Diego :-)
16:51 Whiteknight joined #perl6
16:53 Psyche^ joined #perl6
16:54 TimToady ah yes, one of the many SWA "hubs" :)
16:54 pmichaud it's quite a contrast from SJC
16:54 pmichaud SJC has a new terminal open, which is a very long hallway and tons of space between the gates
16:54 TimToady always fun landing over the hill in SD
16:55 TimToady oh, were you in the new terminal B?
16:55 pmichaud San Diego has 12 gates crowded into a small circle, with no room for everyone here :-)
16:55 pmichaud TimToady: apparently.  Someone next to me remarked that he flew out every week and this was "all new to him"
16:55 pmichaud okay, time to board
16:55 TimToady peddle hard
16:55 pmichaud see you later/tomorrow
17:03 dalek rakudo: 240b984 | (Kyle Hasselbacher)++ | Test.pm:
17:03 dalek rakudo: report expected and actual results after "is" test failure
17:03 dalek rakudo: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
17:03 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/240b9847f901971756be969951f8940b371cf166
17:10 pmurias joined #perl6
17:13 FurnaceBoy joined #perl6
17:13 kane___ joined #perl6
17:17 pugs_svn r27724 | moritz++ | [t/spec] test for RT #67876
17:18 pugs_svn r27725 | lwall++ | [STD] hide "multisig" from user
17:24 frew_ joined #perl6
17:26 cbk joined #perl6
17:27 sri_kraih joined #perl6
18:05 sri_kraih joined #perl6
18:09 pugs_svn r27726 | lwall++ | [S05] permanently reserve ; within regex as indicating missing terminator
18:10 pmurias TimToady: why do we reserve the semicolon?
18:12 pugs_svn r27727 | lwall++ | [STD] more humanization of error messages
18:12 TimToady as a statement separator, it's a very good spot to figure out that someone didn't terminate their regex properly
18:13 TimToady and it was already an "unrecognized metacharacter"
18:13 TimToady this just let's us give a more useful message in the case that they actually did leave off the terminator
18:13 TimToady *lets
18:19 TimToady I can probably give a better message for /;/ though
18:28 fridim_ joined #perl6
18:29 sri_kraih_ joined #perl6
18:33 edpratomo joined #perl6
18:36 arejay joined #perl6
18:43 pugs_svn r27728 | kyle++ | [t/spec] Check semicolon in rx
18:47 tann joined #perl6
18:49 pmurias TimToady: does reserving something as none existent actually mean anything (rather than a hint how a good error message should be implemented)
19:03 colomon Hi all.  Any idea why     when /^(\d+)\-(\d+)/     { @entities_needed.push: $0..$1; }
19:04 colomon would get an error message of Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I' in method Range::true (src/gen_setting.pm:1650)   ?
19:04 hoelzro|home pmichaud: I got the REPL working with a Perl6::Compiler instance, not just Perl6::Compiler =)
19:06 jnthn colomon: Maybe rakudobug...does +$0..+$1 work any better?
19:08 * jnthn bbs - dinner
19:11 masak joined #perl6
19:12 masak ahoj, adventurers!
19:12 masak 你们好马?
19:12 masak er, wrong 'ma3'. should've been 吗.
19:13 Su-Shee thank, very well. ;) learning chinese?
19:13 masak Su-Shee: constantly.
19:13 colomon jnthn: Yes, that does indeed make it work.  rakduobug?
19:13 hoelzro|home masak: I only saw hao3, and judging from your statement about ma, I assume you asked 'ni men hao ma?'  I'm quite well, thanks =)
19:14 masak hoelzro|home: bad fonts, eh? :)
19:17 masak I think that if Perl 6 is to be inspired by something in Python, it should be something like this: http://docs.python.org/library/itertools.html
19:17 masak providing this in a module is fine by me.
19:19 mberends joined #perl6
19:20 donaldh joined #perl6
19:20 masak moritz_: what's that shrieking yellow arrow thing in the STD.pm parse error output? the idea is sound, I think, but could you make it another colour?
19:21 jnthn colomon: Yes, rakudobug
19:22 KyleHa Is that a given/when bug or a matching bug or what (i.e., where should the test go)?
19:22 jnthn KyleHa: range
19:22 KyleHa Thanks!
19:23 jnthn masak: I think the point is to aid people who are red/green colorblind.
19:23 masak jnthn: by blinding the rest of us? :)
19:24 jnthn Right. It's parse error socialism in action!
19:24 masak I'm happy with any variant of yellow with less brightness in it.
19:24 colomon KyleHa: Are you planning on adding a test case for it?
19:24 masak it shrieks less against the light grey brackground, but it still shrieks.
19:25 mberends joined #perl6
19:25 masak @array .= 'say something, lambdabot'
19:25 lambdabot Swab the deck!
19:25 masak :)
19:25 KyleHa colomon: Yeah, probably.
19:27 masak KyleHa: did you submit an RT ticket?
19:27 colomon KyleHa: Can you walk me through how, so I can do it myself in the future?  :)
19:27 KyleHa I have not submitted a ticket.
19:27 KyleHa I was expecting colomon to submit the ticket.
19:28 KyleHa colomon: You have a pugs commit bit?
19:28 masak ah. colomon: go for it. :)
19:28 colomon I do, from the pre-history of pugs.
19:28 colomon Not sure I still remember the password.
19:29 KyleHa OK, so, I have my repo checkout, and I'm editing t/spec/S03-operators/range.t
19:30 colomon Have the file up in my editor to follow along.
19:30 KyleHa I go to the end, and I usually operate in a new block with a comment before it that says what ticket number I'm testing.
19:31 KyleHa # RT #1234 \n { \n }
19:31 KyleHa At this point, I'm hoping you know how to write tests.  8-)
19:31 masak (and the comment causes a 'new tests' mail to be automatically sent, right?)
19:31 colomon Actually, I was in the process of learning how to do that when I stumbled on the bug.
19:32 KyleHa masak: Actually it's the commit message that triggers the email.
19:32 masak aha.
19:32 masak I love those mails.
19:32 colomon (In the Perl 5 / Perl 6 context, I mean.)
19:32 KyleHa OK, in the briefest terms...
19:33 KyleHa You set up some condition and then the actual "test" is written with ok() and friends.
19:33 KyleHa ok( $true_condition, 'description of the test' )
19:33 KyleHa ok( 1 == 1, 'the == operator works' );
19:33 colomon Or nok ($false_condition, 'desc'), right?
19:33 KyleHa Yes.
19:34 KyleHa There are lots of variants, but you can do everything with ok() if that's all you know.  8-)
19:35 szabgab joined #perl6
19:35 KyleHa Another good one: is( $got, $expected, 'got what i expected);
19:35 KyleHa So, I write my tests in the file...
19:37 KyleHa When I'm done, I count the number of tests I've added and adjust the 'plan' line at the top of the file.
19:37 olaf225 joined #perl6
19:37 KyleHa I added two, and it says "plan 80" right now, so I change it to "plan 82".
19:38 KyleHa Then I try running the test file with my tests added, and it's time to debug.  8-)
19:38 masak KyleHa: so you haven't tested the new plan-less feature? no more counting tests!
19:38 KyleHa in my rakudo dir, I do:
19:38 colomon So something like my $a = 1; my $b = 3; ok($a..$b == 1..3, "range limits are variables"); ?
19:39 jnthn Don't think == is quite what you want there.
19:39 colomon Thought it might not be.
19:39 masak colomon: better to build the range object and examine .from, .to etc.
19:39 KyleHa That's the right idea, but I don't think you can use == to compare two ranges.
19:39 jnthn is($a..$b, 1..3, 'comment') may be fine
19:39 masak though it does string comparison, methinks.
19:39 KyleHa masak: I think plans are a good idea whenever possible, but I'm glad I can go without now when I need to.  8-)
19:40 jnthn rakudo: say 1..3
19:40 p6eval rakudo 240b98: OUTPUT«123␤»
19:40 jnthn Should work out OK
19:40 colomon Also, I'm not sure if the bug is triggered just by the use of variables, or if it was specifically the pattern match variables that were the problem.
19:40 jnthn It'll be the pattern match vars, surely.
19:40 jnthn rakudo: my $a = 1; my $b = 2; say $a..$b;
19:40 p6eval rakudo 240b98: OUTPUT«12␤»
19:40 masak KyleHa: de gustibus non disputandum est. :) I don't think I'll write a plan ever again now that I don't have to.
19:40 KyleHa colomon: Usually I start with what I know triggers the bug and then try to eliminate extra stuff.
19:41 colomon Fair enough.  Though I don't see any tests for ranges with normal variables.
19:41 jnthn rakudo: "1 3" ~~ /(\d) \s (\d)/; say $0..$1;
19:41 p6eval rakudo 240b98: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in method Range::true (src/gen_setting.pm:1674)␤called from Main (/tmp/mb9wc22e4L:2)␤»
19:41 jnthn There she is.
19:41 colomon yup.
19:42 lumi_ joined #perl6
19:42 masak interesting error.
19:43 masak guess there's no way for a range to know whether to numify or stringify.
19:45 colomon masak: Maybe not a bug, then?
19:45 KyleHa rakudo: '1 3' ~~ /(\d)\s(\d)/; say 'alive';
19:45 p6eval rakudo 240b98: OUTPUT«alive␤»
19:46 KyleHa rakudo: '1 3' ~~ /(\d)\s(\d)/; my $range = $0..$1; say 'alive';
19:46 p6eval rakudo 240b98: OUTPUT«alive␤»
19:46 KyleHa akudo: '1 3' ~~ /(\d)\s(\d)/; my $range = $0..$1; say $range; say 'alive';
19:46 KyleHa Oops.
19:47 KyleHa rakudo: '1 3' ~~ /(\d)\s(\d)/; my $range = $0..$1; say $range; say 'alive';
19:47 p6eval rakudo 240b98: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in method Range::true (src/gen_setting.pm:1674)␤called from Main (/tmp/sffH2b5C27:2)␤»
19:47 masak colomon: I think at least the error could be more awesome.
19:53 pugs_svn r27729 | kyle++ | [t/spec] Test bug from colomon++
19:55 jnthn rakudo: my $a = '1'; my $b = '3'; $a..$b
19:55 p6eval rakudo 240b98:  ( no output )
19:56 jnthn rakudo: '1 3' ~~ /(\d)\s(\d)/; say $0.WHAT;
19:56 p6eval rakudo 240b98: OUTPUT«Match()␤»
19:56 jnthn Ah
19:56 colomon KyleHa: Interesting patch.  Will ask more questions about it in a sec (ordering dinner with wife now).
19:56 jnthn Range dunno what to do with a match object.
19:57 masak exactly.
19:57 masak more exactly, range dunno how to cmp it when printing.
19:58 KyleHa rakudo: '1 3' ~~ /(\d)\s(\d)/; my $range = $0..$1; "$range";
19:58 p6eval rakudo 240b98: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤in method Range::true (src/gen_setting.pm:1674)␤called from method Range::Str (src/gen_setting.pm:1678)␤called from Main (/tmp/rKyRRxqGbs:2)␤»
19:59 jnthn masak: well, when ranging I guess
19:59 jnthn erm
20:00 jnthn when looking for the next value I mean
20:00 masak right.
20:00 masak or it might be for checking whether the range is empty or not.
20:00 masak rakudo: say 1..3
20:00 p6eval rakudo 240b98: OUTPUT«123␤»
20:00 masak jnthn: or it might be what you said.
20:00 jnthn Well
20:00 masak :)
20:00 jnthn When it gets the next element it needs to know if there is one ;-)
20:01 masak aye.
20:01 jnthn I think we're both saying different levels of specificity of the same thing. :-)
20:01 masak or I'm just wrong. :)
20:04 colomon KyleHa: (Wife is being slow making up her mind.)  I think I understand everything from the tests except the #?rakudo bits.   Special code to indicate todos and skips?  Does it modify the next line / test / ok ?
20:04 KyleHa Yes.
20:04 KyleHa Those are called fudges.
20:05 KyleHa The spec tests are supposed to be run by any implementation.
20:05 KyleHa Fudging is how we indicate that a particular Perl 6 needs to regard a particular test differently than how it's written.
20:05 masak KyleHa++
20:07 KyleHa If you look around enough, you'll see fudges for Pugs too.  (#?pugs todo 'feature')
20:07 masak and mildew, nowadays!
20:07 colomon KyleHa++ indeed.
20:07 pmurias The motivation for fudging is that an implementation can run a part of the test file withought being able to handle the whole of it
20:08 colomon Sure, makes great sense.
20:08 KyleHa We 'todo' the ones that fail and 'skip' the ones that crash.  8-)
20:09 masak why is 'say' both an Any-method and a sub, while 'warn' is just a sub?
20:09 colomon Got to place the dinner order now, then should I send the bug to RT and stick the RT number in range.t?
20:09 KyleHa Feel free!
20:10 jnthn masak: Maybe argumentless warn is valid?
20:10 jnthn rakudo: warn
20:10 p6eval rakudo 240b98: OUTPUT«Warning! Something's wrong.␤␤»
20:10 jnthn rakudo++
20:11 masak jnthn: I don't see why that should prevent warn from also being a method.
20:11 jnthn You could have it as a method too
20:11 jnthn Not sure I see the usecase.
20:11 masak today I found myself saying something like '.perl.warn for @things'
20:11 jnthn I mean, warn "oh noes it's a brussel sprout" reads much more naturally than the method form.
20:12 jnthn Ah, OK.
20:12 jnthn Hmm
20:12 masak it felt natural.
20:12 jnthn Yeah, you're right, I do concede it looks natural there.
20:12 masak I think of warn as a say to STDERR.
20:12 jnthn It's a bit more than that.
20:12 jnthn But aj, I see where you're coming from.
20:12 masak dobrze.
20:13 jnthn Well, guess it's permission or forgiveness. ;-)
20:14 * masak loves forgiveness
20:15 masak YAY! I got the first significant test in Hitomi to pass! \o/
20:16 masak Hang on, I'll make y'all a gist.
20:18 masak http://gist.github.com/154937
20:18 * jnthn can reacall what hitomi = beautiful, but has already forgotten what it does :-)
20:18 masak not just 'beautiful', but doubly beautiful.
20:19 masak peek at the test to see what it does! :)
20:19 jnthn Ah, templating engine.
20:19 masak yes, SAX-based, and with full Perl 6 expression evaluation.
20:19 masak er, eventually.
20:19 jnthn ${$var} and $var are basically the same thing?
20:19 masak yes.
20:19 masak but the former allows for whole expressions.
20:19 jnthn eh, OK
20:20 jnthn Full Perl 6 expressions?
20:20 masak aye.
20:20 jnthn Interesting.
20:20 jnthn Though can lead to an impure view.
20:20 masak there's always that problem, I guess.
20:20 * jnthn has a homegrown web framework that just doesn't allow embedded code in the view
20:21 jnthn Sometimes I wish for it, but usually I find it's (a) a sign I'm putting the logic int he wrong place or (b) a sign that the template language is lacking something.
20:22 masak well, it's not meant for putting logic in the wrong place.
20:22 masak actually, I haven't fully grokked the Genshi evaluation engine yet, so I don't know how far the power extends.
20:22 masak but I think it's pretty complete.
20:22 jnthn *nod*
20:23 jnthn Oh, sure, it's never the intention it'll be used that way, just a risk.
20:23 jnthn Just 'cus something can be mis-used doesn't make it bad, though.
20:23 masak I believe more in admonishing people in the usage instructions than in reducing the power for everybody.
20:23 jnthn Aye, and that's probably a more Perl-ish way of looking at things.
20:23 masak but hooray, the test passes!
20:23 jnthn Yes! :-)
20:24 * jnthn would be curious to see the implementation at some point
20:24 TimToady I take it the ${$var} is done by something else, because it's certainly no legal Perl 6
20:24 TimToady *not
20:25 masak TimToady: only the thing inside the {} is Perl 6 code. the rest is ordinary text in an XML document.
20:26 masak jnthn: the implementation is online, in the Web.pm repo. it weighs 10k right now, most of which I've written in the past few days.
20:26 jnthn found it
20:26 masak I think it's the most involved Perl 6 I've written so far, not due to any advanced tricks, but due to its size and complexity.
20:26 masak jnthn: hold on, I'll push the latest changes.
20:27 masak pushed.
20:28 masak now, time to blog.
20:28 jnthn yaymasakblogpost!
20:29 jnthn Hitomi/Markup.pm has a BUILD that looks like it'll get a lot shorter once $!foo parameters are implemented...
20:29 masak TimToady: I elected ${} rather than just {}, because I think the risk is too high for false positives with the latter.
20:29 masak jnthn: aye.
20:29 masak I miss those sometimes.
20:29 jnthn Clean, neat code though. :-)
20:29 masak thank you. :)
20:30 masak Genshi++, that code is often a joy to read.
20:30 masak I don't know Python nearly well enough, but that doesn't seem to matter much.
20:33 masak moritz_: Rakudo still isn't announced on use.perl.org.
20:34 moritz_ masak: that's unfortunate.
20:34 masak moritz_: 'unfortunate' is a good description for a lot of things on use.perl.org.
20:36 moritz_ http://use.perl.org/submit.pl?op=list
20:37 moritz_ was it wrong to submit it for "News" and not for "Mainpage"?
20:37 masak oh. it was accepted, but not onto the main page.
20:37 masak moritz_: well, I have no idea where it ended up now. :/
20:37 moritz_ no, it's still "Pending"
20:38 masak maybe that means 'rejected' in some language. a newer one was accepted.
20:39 moritz_ well, maybe I should then submit it at least to my journal.
20:42 moritz_ http://use.perl.org/~moritz/journal/39350 it is now.
20:43 jnthn Writing a blog post was one of the many things I planned to do today. :-/
20:43 jnthn Dealing with my twisting pile of Rakudo diffs was another.
20:55 wolverian joined #perl6
21:04 pugs_svn r27730 | moritz++ | [t/spec] avoid segfault at test end by fudging a previously TODOed test for Rakudo
21:05 moritz_ KyleHa: it might be worthwile to think about how to create a list of tickets that don't have tests associated yet
21:06 kane___ joined #perl6
21:06 tann rakudo: say caller(0).perl;
21:06 p6eval rakudo 240b98: OUTPUT«Could not find non-existent sub caller␤»
21:07 moritz_ the right thing to do would probably be a tag test_available in RT
21:08 Tene Where are the specs for caller() ?
21:08 moritz_ I'd guess S04
21:09 moritz_ no, it's S06
21:09 moritz_ =head2 The C<context> and C<caller> functions
21:10 moritz_ pmichaud: as RT admin for Perl 6, can you create a new tag? (Tests_available would be very useful)
21:11 moritz_ (the other tags seem to be CamelCased, so TestAvail or so might be tter)
21:11 moritz_ better even
21:12 masak whoa. this is going to be a longish post.
21:13 tann rakudo: class C { }; my C $o;
21:13 p6eval rakudo 240b98:  ( no output )
21:14 * jnthn cheers on masak
21:14 szabgab joined #perl6
21:17 tann std: class C { method new(Int $i) { $i } }; new C 1;
21:17 p6eval std 27729: OUTPUT«[31m===[0mSORRY![31m===[0m␤Obsolete use of C++ constructor syntax; in Perl 6 please use method call syntax instead at /tmp/UcoqydMSDr line 1:␤------> [32m C { method new(Int $i) { $i } }; new C [33m⏏[31m1;[0m␤FAILED 00:03 40m␤»
21:17 tann std: class C { method new(Int $i) { $i } }; new C: 1;
21:17 p6eval std 27729: OUTPUT«ok 00:03 42m␤»
21:18 jnthn It even knows to blame C++. ;-)
21:18 * jnthn wonders if the "SORRY!" will become annoying over time.
21:19 jnthn It's nicer than ERROR though. :-)
21:19 meppl joined #perl6
21:19 the_irrational_1 joined #perl6
21:20 tann rakudo: class C { method new(Int $i) { $i } }; my $o = new C: 1;  say $o.perl;
21:21 p6eval rakudo 240b98: OUTPUT«Statement not terminated properly at line 2, near ": 1;  say "␤in Main (src/gen_setting.pm:3343)␤»
21:21 jnthn Don't think Rakudo knows that syntax yet.
21:22 pugs_svn r27731 | colomon++ | Tag test with RT number.
21:23 moritz_ "new C" is wrong.
21:23 tann rakudo: class C { }; say C.perl;
21:23 p6eval rakudo 240b98: OUTPUT«C␤»
21:24 r0bby joined #perl6
21:24 tann rakudo: class C { }; say C.WHAT;
21:24 p6eval rakudo 240b98: OUTPUT«C()␤»
21:25 jnthn Ah, yes.
21:25 jnthn Though say $a: "oh hai" probably should work and doesn't.
21:25 jnthn std: say $a: "oh hai"
21:25 jnthn rakudo: say $a: "oh hai"
21:25 p6eval std 27730: OUTPUT«Potential difficulties:␤  Variable $a is not predeclared at /tmp/hS3m394wVt line 1:␤------> [32msay $a[33m⏏[31m: "oh hai"[0m␤ok 00:04 39m␤»
21:25 p6eval rakudo 240b98: OUTPUT«Statement not terminated properly at line 2, near ": \"oh hai\""␤in Main (src/gen_setting.pm:3343)␤»
21:25 jnthn Aye
21:27 mkelly32 so, i'm curious... is there anything about perl6 that people would consider a "killer" feature? some single thing that'll make people wnat to switch to it from perl5?
21:27 mkelly32 i've only started digesting some docs on perl6
21:27 tann rakudo: class C { }; multi sub f(C $x) { 'C' }; multi sub f(Int $x) { 'Int' }; multi sub f { 'nada' }; say f(Int); say f(C); say f(Num);
21:27 p6eval rakudo 240b98: OUTPUT«Int␤C␤No applicable candidates found to dispatch to for 'f'␤in Main (/tmp/Fbc3UGTy2d:2)␤»
21:28 moritz_ mkelly32: the regular expressions/grammars
21:28 tann pugs: class C { }; multi sub f(C $x) { 'C' }; multi sub f(Int $x) { 'Int' }; multi sub f { 'nada' }; say f(Int); say f(C); say f(Num);
21:28 p6eval pugs: OUTPUT«nada␤C␤nada␤»
21:29 mkelly32 and, if i wanted to test those sort of things out right now... would rakudo be the implementation to try it with?
21:29 moritz_ mkelly32: yes
21:29 mkelly32 moritz_: ok, thanks
21:30 moritz_ mkelly32: http://rakudo.org/how-to-get-rakudo is a good start for obtaining it
21:30 mkelly32 yeah, i've got it building
21:30 mkelly32 i think it was failinga  spec test for me
21:30 mkelly32 forget which one right now, not at that machine
21:30 mkelly32 i also was trying out the heredoc syntax i saw mentioned on the wikibook... something like q:to/END/... but it wasn't liking that.
21:31 moritz_ there are two files of which we expect "Non-zero wait status"
21:31 moritz_ yes, heredocs are not yet implemented
21:31 mkelly32 ok
21:31 mkelly32 what's the reason for the change from the <<END syntax?
21:32 TimToady to allow << a b c >> as a synonym for « a b c »
21:32 TimToady and to switch to a syntax where you could add modifiers easily
21:33 mkelly32 what sort of other modifiers would there be?
21:33 TimToady such as to determine what will or will not interpolate
21:33 mkelly32 ah, interesting.
21:34 mkelly32 so, say, not interpolating "foo@example.net" into something like "foobar baz bam.net"
21:34 TimToady that's already handled by default in p6
21:34 TimToady since @example won't interpolate without a [] afte rit
21:34 TimToady after it
21:34 mkelly32 ah, ok.
21:34 mkelly32 good.
21:35 mkelly32 if it werent' for syntax hilighting, that would've bit me many times
21:35 TimToady it's really the sum total of lots of little killer features that adds up
21:35 mkelly32 i'm also guessing that optimization isn't coming until it's feature-complete, correct?
21:35 payload joined #perl6
21:35 Su-Shee left #perl6
21:36 TimToady it's becoming more of a priority as time goes on
21:36 TimToady but hasn't been till now
21:36 moritz_ parrot (the virtual machine on which Rakudo runs) wants to focus more on speed in the coming year
21:36 moritz_ and Rakudo will benefit from that, of course
21:37 mkelly32 yeah.
21:37 mkelly32 well. i guess i'll keep an eye on things, then.
21:37 mkelly32 would there be any use in me doing regular smoke tests of rakudo? or do you have enough of that already?
21:39 moritz_ we tend to have enough testers on linux, and not enough on any other platform
21:39 mkelly32 hrm, want some fbsd testing then?
21:39 moritz_ yes.
21:40 mkelly32 k. do you have any sorta suggested smoking script/setup somewhere?
21:40 moritz_ the parrot folks have a cool automated smoke collection system named "smolder"
21:40 moritz_ you automatically submit a report when you run 'make smolder_test' in parrot
21:41 moritz_ it would be great to have that (or something similar) set up for rakudo too
21:41 mkelly32 well, that'd require me to actually do more than a 5 minute cronjob :p
21:41 mkelly32 and my plate is kinda full right now.
21:42 TimToady you'll have to be very careful then, because hacking on this stuff is highly addictive
21:42 maja_ joined #perl6
21:43 snearch_ joined #perl6
21:47 mkelly32 so. git pull && perl Configure.pl --gen-parrot && make && make test && make spectest should be sufficient, right?
21:48 mkelly32 (need to send it somewhere w/ a pass/fail subject i guess)
21:49 moritz_ right
21:50 moritz_ currently we have no list for these kind of reports
21:50 moritz_ bed&
21:50 mkelly32 well. i could probably just throw some simple webpage together w/ them. but, that'll just have to go on my TODO for sometime
21:51 TimToady you could use the webpage apparatus that was built for pugs
21:52 mkelly32 haven't seen that. was thinking something like cpantesters, only less shiny
21:52 TimToady see the smoke target in pugs/Makefile
21:52 TimToady assuming you have the pugs repo handy
21:52 mkelly32 not right now.
21:53 mkelly32 http://svn.pugscode.org/pugs/ ?
21:53 TimToady that's also where we store all the spec tests
21:53 TimToady so if you want to whack on those, a commit bit is very easy to acquire
21:53 mkelly32 yeah, but make spectest checks that out for me
21:55 TimToady all the specs are in the pugs repo as well
21:55 TimToady if you want a pugs commit bit, we can get you one in about a minute
21:56 mkelly32 i'll wait on that till i have a useful something to commit
21:56 TimToady oh, where's your sense of adventure :P
21:57 jnthn TimToady: You're meant to give out the commit bit before warning about the addictiveness. ;-)
21:57 TimToady oops
21:58 hoelzro joined #perl6
21:58 jnthn TimToady: Are you not making YAPC::Asia this year?
21:59 masak TimToady: oh hai, did you see the discussion on :$!bar ? I can haz this syntax? kthxbai.
21:59 TimToady as far as I know, I don't have an invite yet
21:59 jnthn Ah, ok
21:59 TimToady you already have it
21:59 masak \o/
21:59 masak .jump for @joy
21:59 TimToady std: :$^bar
21:59 p6eval std 27731: OUTPUT«ok 00:02 36m␤»
22:00 TimToady std: :$*bar
22:00 snearch joined #perl6
22:00 p6eval std 27731: OUTPUT«ok 00:02 36m␤»
22:00 jnthn "torment the implementors" ;-)
22:00 jnthn (akshually, shouldn't be so hard...)
22:00 * masak was just going to say that
22:01 jnthn masak: Feel free to file it as a todo ticket if you didn't already.
22:02 masak jnthn: filed a ticket the other day.
22:02 jnthn If I need some light relief from beating traits, the metamodel and the multi-dispatcher into shape, I may just do it.
22:02 masak not sure it was TODO, though, but it touches on exactly this.
22:02 jnthn That's fine.
22:03 * jnthn is at an annoying point of discovering a couple of things that were broken, and in their brokenness making other things Just Work.
22:03 jnthn So I either need to fix the lot, or we regeress for a short while on something.
22:05 masak or work in a branch for a while.
22:06 to_char joined #perl6
22:07 jnthn True, true...
22:08 jnthn Either way, it's a bit to untangle.
22:08 jnthn Plus I'm seeing more and more stuff that I want to clean up as I go.
22:08 jnthn Probably a good sign that things are somehow starting to fall into place in my head.
22:12 icwiener-_- joined #perl6
22:12 hoelzro BUILD *is* the construction initialization submethod, right?
22:13 jnthn Yes.
22:13 hoelzro I can't seem to get it to work
22:14 masak works fine here.
22:14 hoelzro I'll play around for a bit
22:14 hoelzro if I still can't get it working, I'll ask again
22:15 jnthn rakudo: class Foo { submethod BUILD { say "called" } }; Foo.new
22:15 p6eval rakudo 240b98: OUTPUT«called␤»
22:16 hoelzro jnthn: that's what I'm doing
22:16 hoelzro well, something like that
22:17 hoelzro also, do I have to do submethod BUILD(self:) { ... } to get access to $self?
22:18 jnthn hoelzro: Well, if you want it in $self
22:18 jnthn hoelzro: But you can use the self keyword
22:18 hoelzro ah, just self, not $self?
22:18 the_irrational_1 joined #perl6
22:18 jnthn Right.
22:18 hoelzro ah ok =)
22:19 TimToady unless you declare ($self:)
22:19 jnthn Sure. You can declare ($worreva:)
22:19 jnthn Or ($p6l_argued_for_weeks:)
22:19 hoelzro ah, ok
22:19 hoelzro haha
22:20 TimToady or ($私:)
22:20 hoelzro ok, so BUILD worked in one example...
22:22 hoelzro ok
22:22 masak http://use.perl.org/~masak/journal/39351
22:23 jnthn \o/
22:23 masak that was a lot to write in one go.
22:24 masak but I also feel it's the greatest Web.pm post so far.
22:24 hoelzro this doesn't work: class OnlineRepl is Perl6::Compiler { submethod BUILD { say 'hello'; } } OnlineRepl.new;
22:24 hoelzro other than that, BUILD works fine
22:24 masak hoelzro: :)
22:25 * jnthn groans
22:25 jnthn I can guess why too
22:25 hoelzro jnthn: why's that?
22:25 masak answer contains "Parrot" somehow...
22:25 KyleHa Regarding RT tags, I had been thinking 'tested' and 'testable' for "has a test" and "could have a test but doesn't".
22:25 jnthn rakudo: Perl6::Compiler.^parents>>.say
22:25 p6eval rakudo 240b98: OUTPUT«Method '!.^' not found for invocant of class ''␤»
22:25 jnthn ...yeah ouch.
22:25 masak o_O
22:26 jnthn rakudo: Perl6::Compiler.HOW.parents(Perl6::Compiler)>>.say
22:26 p6eval rakudo 240b98: OUTPUT«Method 'say' not found for invocant of class ''␤»
22:26 masak rakudo: say Perl6::Compiler.WHAT
22:26 jnthn rakudo: say Perl6::Compiler.HOW.parents(Perl6::Compiler)
22:26 p6eval rakudo 240b98: OUTPUT«Perl6::Compiler()␤»
22:26 p6eval rakudo 240b98: OUTPUT«PCT::HLLCompiler()␤»
22:26 masak rakudo: say Perl6::Compiler.PARROT
22:26 p6eval rakudo 240b98: OUTPUT«Method 'PARROT' not found for invocant of class ''␤»
22:26 hoelzro so...what should I do?
22:26 hoelzro write a bug report? new test for that?
22:26 masak hoelzro: yay!
22:27 jnthn rakudo: class OnlineRepl is Perl6::Compiler { submethod BUILD { say 'hello'; } } OnlineRepl.new;
22:27 p6eval rakudo 240b98: OUTPUT«Statement not terminated properly at line 2, near "OnlineRepl"␤in Main (src/gen_setting.pm:3343)␤»
22:27 jnthn rakudo: class OnlineRepl is Perl6::Compiler { submethod BUILD { say 'hello'; } }; OnlineRepl.new;
22:27 p6eval rakudo 240b98:  ( no output )
22:27 hoelzro masak: yay for what?
22:27 masak hoelzro: bugs and tests. keep'em coming!
22:27 jnthn rakudo: class OnlineRepl is Perl6::Compiler is Any { submethod BUILD { say 'hello'; } }; OnlineRepl.new;
22:27 p6eval rakudo 240b98: OUTPUT«hello␤»
22:27 hoelzro masak: you got it!
22:27 masak hoelzro: oh, and jnthn just found a workaround for ya. :)
22:27 hoelzro jnthn: thanks
22:27 jnthn hoelzro: See above workaround, but also plz we can haz ticket kplzthnxbai.
22:27 hoelzro jnthn: coming in right now
22:28 * jnthn still hasn't got past the bible quote in masak++'s post yet
22:28 masak *lol*
22:30 hoelzro setting up a bug reporting account right now
22:31 jnthn masak: "Also, the thing doing the serialization is called XHTMLSerializer, but there are a number of those, including HTMLSerializer which takes the same event stream but produces impeccable HTML 4.01."
22:31 hoelzro and the tests are in SVN, right?
22:31 jnthn masak: Will it also be able to automatically html-encode stuff, or some similar mechanism?
22:31 masak jnthn: html-encode?
22:31 masak you mean escape stuff?
22:32 hoelzro also, do I need certain privileges to create a bug report?  I'm logged in, but I don't see any way to create a ticket...
22:32 masak hoelzro: rakudobug@perl.org
22:33 masak hoelzro: the only way to report is by email.
22:33 hoelzro ah ok
22:33 jnthn masak: Yeah
22:34 jnthn masak: Or rather, how much has security stuff - in this case against XSS - been thought about when doing Web.pm related things?
22:34 masak jnthn: yes, escaping will done by default. there's a way to pass in things, saying "I know this is already markup, so no need to escape this". it's quite nice.
22:34 jnthn OK. Secure *by default* is what I was hoping to hear.
22:34 jnthn Excellent.
22:34 masak jnthn: there are XSS filters in Genshi. all part of this filtering mechanism I mention in the post.
22:35 * masak really, really likes the example Genshi sets
22:35 pugs_svn r27732 | lwall++ | [STD] make perl6-projects more welcoming to all civil people
22:36 * jnthn is glad there'll be more lolbible
22:36 * jnthn doesn't even know what "various molecular aspects of metabolism" means ;-)
22:36 hoelzro bug report away!
22:37 jnthn hoelzro++ # thanks.
22:37 hoelzro =)
22:37 hoelzro test coming up
22:37 hoelzro um...where should I put the test?
22:37 masak jnthn: that's one reason I decided not to switch. :)
22:38 masak jnthn: here's one example :) http://en.wikipedia.org/wiki/Citric_acid_cycle
22:39 masak (maybe I should like to that for extra effect)
22:39 jnthn hoelzro: moaybe in S12-class/inheritnce.t
22:39 hoelzro mkay
22:39 TimToady hoelzro: do you have a pugs commit bit?
22:39 KyleHa Maybe S12-construction/BUILD.t
22:39 hoelzro are the tests in the Rakudo repo, or somewhere else?
22:39 hoelzro TimToady: I do
22:39 hoelzro at least, I should
22:39 jnthn masak: That diagram is liek omfg
22:40 hoelzro last time I worked on Pugs was like 2 years ago =(
22:40 masak hoelzro: in the Pugs repo, in t/spec
22:40 hoelzro mkay
22:40 TimToady do you still have a repo image?
22:40 TimToady I can resend the commit bit if you've forgotten your password
22:40 masak jnthn: your body does that billions of times every day. :)
22:40 jnthn KyleHa: Yes, better.
22:41 hoelzro TimToady: I'll try to remember, I'll let you know if I need it =)
22:41 jnthn masak: meh, no wonder it gets tired by evening ;-)
22:41 masak :)
22:43 jnthn Eurgh.
22:43 * jnthn hates having a cold
22:43 hoelzro if I add a new file, will it automatically get run?
22:43 jnthn Hopefully I have vaguely more motivation to do something useful tomorrow...
22:44 jnthn hoelzro: For Rakudo to run it, it needs to go into t/spectest.data in the Rakudo repo
22:44 hoelzro mkay
22:44 jnthn hoelzro: Are you thinking of adding a new file?
22:44 jnthn For this particular test?
22:44 hoelzro jnthn: per KyleHa's suggestion
22:44 hoelzro I could put it somewhere else
22:44 jnthn No no, that file already exists, I think?
22:45 KyleHa If the file I specified doesn't exist, I typoed.
22:45 jnthn KyleHa: It's something *like* that. :-)
22:45 KyleHa Pasted:  t/spec/S12-construction/BUILD.t
22:45 hoelzro mkay
22:45 jnthn http://svn.pugscode.org/pugs/t/spec/S12-construction/BUILD.t
22:45 jnthn That one.
22:45 jnthn Ah, KyleHa++ beat me to it. :-)
22:46 bpetering joined #perl6
22:48 masak time to sleep.
22:49 bpetering night masak :)
22:49 masak good night, futuristic Perl people! see y'all tomorrow!
22:49 pugs_svn r27733 | hoelzro++ | Added a test for RT #67888 (Perl6::Compiler subclassing and BUILD)
22:49 hoelzro mkay, I remembered my password =)(
22:49 * bpetering quits to figgur out this yoonicode stuff in his term
22:50 hoelzro please feel free to review my test
22:50 hoelzro be back in a bit; grabbing dinner
22:55 pugs_svn r27734 | lwall++ | [p6-proj] tweak "bluespace" a bit
22:57 jnthn http://www.perl6-projects.org/ on Firefox at 1024x768 has some layout issues.
22:57 pugs_svn r27735 | kyle++ | [t/spec] label and adjust RT #67888 test
22:58 jnthn Going to sleep now, but mentioning it if anyone has time and html-fu to investigate... :-)
22:58 jnthn night all!
23:02 arthur-_ joined #perl6
23:06 pugs_svn r27736 | lwall++ | [p6-proj] how 'bout I tweak the correct parameters this time...
23:10 justatheory joined #perl6
23:12 pugs_svn r27737 | lwall++ | [p6-proj] and move boxes down a bit
23:19 pmichaud back home!
23:20 donaldh joined #perl6
23:24 hoelzro joined #perl6
23:25 pmichaud (and now going out for dinner)
23:26 hoelzro did anyone look over my test?
23:27 hoelzro also, if I defined BUILD in PIR, would it be .sub 'BUILD' :submethod ... .end?
23:29 pugs_svn r27738 | lwall++ | [p6-proj] put Community *first*, not as part of miscellaneous
23:29 * hoelzro does a grep
23:30 TimToady looks like KyleHa++ tweaked it some
23:32 hoelzro TimToady: my test?
23:32 TimToady do svn up and you'll find out :)
23:33 hoelzro ah ha =)
23:41 sjohnson how's TimToady today
23:44 pugs_svn r27739 | lwall++ | [p6-proj] delete 'and Interpreters' as meaningless precision
23:45 * TimToady is recovering from OSCON and cooking dinner while tweaking perl6-projects to be Human-Compliant™
23:51 lumi__ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo