Camelia, the Perl 6 bug

IRC log for #perl6, 2011-08-30

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 jaldhar joined #perl6
00:04 whiteknight joined #perl6
00:12 lichtkind joined #perl6
00:13 lichtkind nom: say 1..5
00:13 p6eval nom ebd495: OUTPUT«1..5␤»
00:14 djanatyn :)
00:14 lichtkind nom: say (1..5)
00:14 p6eval nom ebd495: OUTPUT«1..5␤»
00:14 lichtkind nom: say list(1..5)
00:14 p6eval nom ebd495: OUTPUT«1 2 3 4 5␤»
00:14 lichtkind nom: say list(1,2...5)
00:14 p6eval nom ebd495: OUTPUT«1 2 3 4 5␤»
00:14 lichtkind nom: say list(0,1, $^a + $^b ...13)
00:15 p6eval nom ebd495: OUTPUT«Nominal type check failed for parameter '$a'; expected Any but got Mu instead␤  in sub infix:<+> at src/gen/CORE.setting:1821␤  in <anon> at /tmp/6PUPDFS8t9:1␤  in <anon> at /tmp/6PUPDFS8t9:1␤␤»
00:15 lichtkind nom: say list(0,1, * + * ...13)
00:15 p6eval nom ebd495: OUTPUT«0 1 1 2 3 5 8 13␤»
00:15 lichtkind nom: say list(1,2, * * * ... 32)
00:15 p6eval nom ebd495: OUTPUT«1 2 2 4 8 32␤»
00:16 lichtkind too weird
00:17 lichtkind nom: say list(1,2, $^a * * ... 32)
00:17 p6eval nom ebd495: OUTPUT«Nominal type check failed for parameter '$a'; expected Any but got Mu instead␤  in sub infix:<*> at src/gen/CORE.setting:1829␤  in whatevercode <anon> at /tmp/Hab2M6oaq0:1␤  in sub generate at src/gen/CORE.setting:6897␤  in sub coro at src/gen/CORE.setting:3728␤  in m…
00:17 lichtkind autogenerated positional should work here
00:18 lichtkind niecza: say list(1,2, * * * ... 32)
00:18 p6eval niecza v8-65-g4e8d22a: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤      'list' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 685 (CORE die @ 2) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1136 (STD P6.comp_unit @ 36) â�¤  â€¦
00:18 lichtkind niecza: say list(1.. 32)
00:18 p6eval niecza v8-65-g4e8d22a: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤      'list' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 685 (CORE die @ 2) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1136 (STD P6.comp_unit @ 36) â�¤  â€¦
00:19 lichtkind good night
00:23 ruz std: grammar G { <?.boo> }
00:23 p6eval std e3c970e: OUTPUT«ok 00:01 118m␤»
00:23 ruz std: grammar G { <.?boo> }
00:23 p6eval std e3c970e: OUTPUT«ok 00:01 118m␤»
00:29 frhodes joined #perl6
00:29 TimToady std: / <????????????????????????????????.boo> /
00:29 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0m�Unable to parse metachar at /tmp/HRCr2dzk1Z line 1:�------> [32m/ [33m�[31m<????????????????????????????????.boo> /[0m�Couldn't find final '>'; gave up at /tmp/HRCr2dzk1Z line 1:�------> [32m/ <???[33m�[31m???????????????????????…
00:30 TimToady std: / <!!!!!!!!!.boo> /
00:30 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0m�Unable to parse metachar at /tmp/EQIJXwf3Pl line 1:�------> [32m/ [33m�[31m<!!!!!!!!!.boo> /[0m�Couldn't find final '>'; gave up at /tmp/EQIJXwf3Pl line 1:�------> [32m/ <!!![33m�[31m!!!!!!.boo> /[0m�Parse failed�FAILED 00:01 11…
00:30 TimToady std: / <!!.boo> /
00:30 p6eval std e3c970e: OUTPUT«ok 00:01 120m␤»
00:30 TimToady std: / <!!!.boo> /
00:30 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0m�Unable to parse metachar at /tmp/oH9ajkwWs6 line 1:�------> [32m/ [33m�[31m<!!!.boo> /[0m�Couldn't find final '>'; gave up at /tmp/oH9ajkwWs6 line 1:�------> [32m/ <!!![33m�[31m.boo> /[0m�Parse failed�FAILED 00:01 119m�»…
00:30 TimToady std: / <!!!> /
00:30 p6eval std e3c970e: OUTPUT«ok 00:01 119m␤»
00:33 ruz TimToady: <.?boo> is incorrect syntax, right?
00:33 TimToady std: say $_.?foo
00:33 p6eval std e3c970e: OUTPUT«ok 00:01 119m␤»
00:34 TimToady looks like an optional method call
00:34 TimToady not sure what its semantics should be, probably fail the match if the .? doesn't find a method
00:35 TimToady this is unspecced though
00:35 ruz TimToady: but it's not a code block
00:35 TimToady it's just a method call to a grammar method/rule
00:35 ruz then <?boo> should be optional function/code call
00:35 TimToady <? means something else
00:35 ruz yes
00:35 TimToady <. means method call
00:36 ruz <foo> can call sub/method, right?
00:36 TimToady yes, but it also captures
00:36 TimToady <.foo> doesn't capture
00:37 ruz all this kinda inconsistent even if it has some background
00:37 TimToady we've had it many other inconsistent ways, and this seems to work pretty well :)
00:38 ruz std: /<.foo=.bar>/
00:38 p6eval std e3c970e: OUTPUT«ok 00:01 120m␤»
00:38 TimToady that's probably not doing what you think
00:39 TimToady std: /<.foo = .bar>/
00:39 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0m�Unrecognized regex metacharacter (must be quoted to match literally) at /tmp/44tpUUQHa6 line 1:�------> [32m/<.foo =[33m�[31m .bar>/[0m�Can't call method "from" on unblessed reference at /usr/local/share/perl/5.10.1/STD.pm line 5378…
00:39 TimToady either that, or it's not doing what I think :)
00:39 wolfman2000 joined #perl6
00:39 ruz just trying a few bits from weekend spec/nqp code reading
00:46 envi joined #perl6
00:47 TimToady yeah, that parse is probably a bit infelicitous...
00:51 TimToady method should not be delegating to assertion
00:57 ruz std: / <?.?foo> /
00:57 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unable to parse metachar at /tmp/ZT20RhddDu line 1:â�¤------> [32m/ [33mâ��[31m<?.?foo> /[0mâ�¤Couldn't find final '>'; gave up at /tmp/ZT20RhddDu line 1:â�¤------> [32m/ <?.[33mâ��[31m?foo> /[0mâ�¤    expecting any of:â�¤     assertionâ�¤      dotty me…
00:58 TimToady so <.?foo> is not being parsed like .?foo
00:58 ruz yep
00:58 TimToady if assertion:method parsed its own method, it would, and would also disallow <.foo=.bar>
00:58 TimToady so that's probably what oughta happen
00:59 TimToady niecza: / <.foo=.bar> /
00:59 p6eval niecza v8-65-g4e8d22a:  ( no output )
01:06 ruz std: /<before>/
01:06 p6eval std e3c970e: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤before requires an argument at /tmp/HfQLJwiFpw line 1:â�¤------> [32m/<before[33mâ��[31m>/[0mâ�¤    expecting assertionâ�¤Parse failedâ�¤FAILED 00:01 119mâ�¤Â»
01:07 woosley joined #perl6
01:08 silug joined #perl6
01:15 dalek niecza: 6c0c55a | sorear++ | docs/announce.v9:
01:15 dalek niecza: Add v9 announce
01:15 dalek niecza: review: https://github.com/sorear/niecza/commit/6c0c55a27a
01:16 sorear request for comments
01:17 abercrombie joined #perl6
01:28 awwaiid joined #perl6
01:30 TimToady looks pretty good
01:39 agentzh joined #perl6
01:39 agentzh joined #perl6
01:44 yarp joined #perl6
01:49 colomon so, slightly random point... I'm trying to run the ABC module in nom, and I'm getting an error.  Okay, that's totally expected.  What I hadn't expected is that the fatal error is getting printed to STDOUT, not STDERR.
01:54 uasi joined #perl6
01:54 araujo joined #perl6
02:17 tokuhirom joined #perl6
02:21 lateau_ left #perl6
02:27 soh_cah_toa joined #perl6
02:33 drbean joined #perl6
02:50 Sarten-X joined #perl6
02:54 tokuhirom joined #perl6
02:58 djanatyn Is it currently possible to generate a windows executable for a perl6 program?
02:59 djanatyn Or am I going to have to wait a few years for that?
03:02 plobsing djanatyn: how "real" does the executable need to be?
03:03 plobsing it should be fairly simple to make a stub executable that unpacks a perl6 implementation and your sourcecode and then executes it inplace
03:04 plobsing fwiw, that's how parrot generates rakudo's perl6 executable
03:04 plobsing more or less
03:04 djanatyn plobsing: How trivial would that be, and how large would the resulting executable (and any other files required) be, at minimum?
03:06 jferrero joined #perl6
03:07 eiro joined #perl6
03:08 tadzik hello #perl6
03:09 plobsing djanatyn: there would be no other files (it self-extracts everything it needs)
03:09 plobsing as a result, probably very large
03:10 djanatyn Any estimates, in terms of megabytes? :)
03:11 djanatyn I know py2exe, which turns python programs into windows executables, does something similar.
03:11 plobsing well, rakudo clocks in at 10M right off the bat
03:12 plobsing djanatyn: I was thinking of PAR
03:12 djanatyn It includes a tiny python distribution with the file.
03:12 djanatyn Ah, I played with that for a bit.
03:12 djanatyn I could never get it to work >_>
03:12 djanatyn eventually, I had a friend help me out.
03:13 sili joined #perl6
03:13 djanatyn Hmm.
03:16 plobsing how important is it to generate a true executable? you could always change the filetype association appropriately.
03:23 tokuhirom joined #perl6
03:31 djanatyn So, when you're using string interpolation and put a statement inside a bracket in perl6, it executes the code inside and replaces it with the return value?
03:32 PerlJam djanatyn: aye
03:32 djanatyn I was playing around with it, and if you put a statement inside with side effects that alter other variables, the return value is what is represented inside the string, but the other variables persist with whatever effect the statement had on them.
03:32 djanatyn THat's cool.
03:32 djanatyn I'm starting to think Perl 6 has the coolest string interpolation, like TimToady said :D
03:32 PerlJam Perl 6 is cool in many respects.
03:39 djanatyn Indeed.
03:41 sorear yeah, we almost don't need (s)printf
03:41 PerlJam almost
03:42 sorear Does Windows have a good solution for third-party shared libraries yet?
03:43 * sorear wants to see an 8kb stub-executor that can be attached to Perl 6 programs and functions by downloading parrot.dll and perl6.pbc from the Internet
03:44 sorear iff they are not already cached on the user's machine somewhere
03:44 sorear without OS support it would have to be bigger, and less correctly working
03:50 mberends many Windows applications begin with a setup.exe sized 1~3MB on your machine, which then phones home and pulls in the full product.
03:50 sorear djanatyn: incidentally, niecza v8 can create Windows .exe files
03:50 djanatyn :o
03:51 djanatyn that's awesome.
03:51 djanatyn One of the biggest difficulties I've had with programming is porting quickly and cleanly.
03:51 sorear not strictly standalone as they require at least 3 of the Niecza .dlls
03:51 sorear note, this feature is not in v9
03:51 djanatyn I write code that works great and fine on my computer, but I can't get it working anywhere else.
03:51 sorear djanatyn: the technical term for that is "deployment"
03:52 sorear porting is when you modify your program so that it will run on different *kinds* of computer
03:53 rlpowell joined #perl6
03:53 rlpowell p6eval: "hello { my $foo = 'world' }";
03:53 rlpowell perl6: say "hello { my $foo = 'world' }";
03:53 p6eval pugs, rakudo a55346: OUTPUT«hello world␤»
03:53 p6eval ..niecza v8-66-g6c0c55a: OUTPUT«Potential difficulties:â�¤  $foo is declared but not used at /tmp/gGonNc_5tQ line 1:â�¤------> [32msay "hello { my [33mâ��[31m$foo = 'world' }";[0mâ�¤â�¤hello worldâ�¤Â»
03:53 PerlJam it's really weird to me that pugs gets that one right.
03:54 sorear hello and welcome, rlpowell
03:54 djanatyn Yep, that's the way it works, rlpowell.
03:54 djanatyn He didn't believe me about string interpolation in perl 6 :D
03:54 rlpowell wow.  My respect for p6 has just dropped through the floor.
03:54 djanatyn ...interesting.
03:54 rlpowell Sorry, I don't mean to be offensive, but without context that's really awful.
03:54 PerlJam rlpowell: why is that?
03:55 rlpowell Can someoen explain to me why that interpolation occurs, and how that doesn't boil down to "You can't ever have any special characters in any string ever because all strings interpolate theentire language?
03:55 rlpowell I have no p6 context *at all*, so this is kind of drive-by dickery on my part; blame djanatyn  :)
03:55 djanatyn I'm just spreading the perl 6 gospel! ^_^;
03:55 PerlJam rlpowell: the interpolation occurs because that's how it's designed.
03:56 tokuhirom joined #perl6
03:56 sorear Perl historically has had magic characters in "" strings
03:56 rlpowell Well, yes, I caught that.  But is it just "any P6 in your strings gets evaluated"?, or is there more to it?
03:56 sorear Perl 6 has more of them
03:56 PerlJam rlpowell: and not ll strings interpolate the entire language.   I'm not even sure what you mean by that.
03:56 sorear rlpowell: only the left brace introduces statements
03:56 djanatyn rlpowell: The P6 has to be within brackets.
03:56 djanatyn ermm
03:56 rlpowell OK.
03:56 djanatyn curly braces
03:56 PerlJam rlpowell: and P6 inside of {} inside of double quoted strings gets evaled
03:57 rlpowell How do you avoid that?
03:57 PerlJam avoid what?
03:57 djanatyn rlpowell: I imagine there's an escape character
03:57 soh_cah_toa use single quotes?
03:57 sorear rlpowell: \{, or use single quotes
03:57 djanatyn or, you could just use regular strings.
03:57 djanatyn single quotes, I mean. non-interpolating.
03:57 rlpowell What if I want variable interpolation, but also a literal { ?
03:57 sorear \{
03:57 PerlJam rlpowell: \{
03:57 rlpowell Got it.  Thanks.
03:57 djanatyn Yeah, that seems very reasonable to me.
03:58 rlpowell I'd prefer a 2-character intro, but enh.
03:58 djanatyn there are sigils that have to be escaped - the curly braces isn't exactly a common thing you would put in a string.
03:58 PerlJam rlpowell: Ruby is very similar except they use #{...} in double quoted strings.
03:58 sorear it's also possible to pick and choose what kinds of interpolation you want, but I've only wanted to use that once.
03:59 sorear niecza: my $var = 5; say q:s"$var { 2 + 2 }"
03:59 p6eval niecza v8-66-g6c0c55a: OUTPUT«5 { 2 + 2 }␤»
03:59 djanatyn Ah, cool.
03:59 sorear niecza: my $var = 5; say qs"$var { 2 + 2 }" # I wonder
03:59 rlpowell PerlJam: Yes, I rather prefer the second character there; having the { by itself be your metacharacter just seems to be asking to have to quote a lot.
03:59 p6eval niecza v8-66-g6c0c55a: OUTPUT«5 { 2 + 2 }␤»
03:59 djanatyn niecza: my $var = 5; say q:y"$var y 2 + 2 y"
04:00 rlpowell But that's a fairly minor issue; what I thought was happening originally was a lot worse.  :)
04:00 p6eval niecza v8-66-g6c0c55a: OUTPUT«[31m===[0mSORRY![3​1m===[0mâ�¤â�¤Unrecognized quote modifier: y at /tmp/5yqmsuj8Lt line 1:â�¤------> [32mmy $var = 5; say q[33mâ��[31m:y"$var y 2 + 2 y"[0mâ�¤â�¤Potential difficulties:â�¤  $var is declared but not used at /tmp/5yqmsuj8Lt line 1:â�¤------> [32mmy […
04:00 PerlJam rlpowell: well ... so far it hasn't been a problem.  :-)
04:00 djanatyn ...I suppose that's not how it works. ^_^;
04:00 PerlJam djanatyn: no.
04:00 PerlJam djanatyn: the adverb describes what things can/can't be interpolated.
04:00 djanatyn rlpowell: Did you think that any text that perl 6 recognized as a statement inside an interpolating string would be evaluated and substited with the return value?
04:01 rlpowell djanatyn: I thought it was evalling all strings, yes.
04:01 djanatyn PerlJam: So, in the case of q:s, what can and cannot be interpolated?
04:01 djanatyn rlpowell: Oof. That would be...just wrong.
04:01 sorear djanatyn: scalars
04:02 djanatyn ah
04:02 sorear djanatyn: like in Perl 5, q"" is the same as ''
04:02 rlpowell < djanatyn> rlpowell: Oof. That would be...just wrong. -- You understand my horror now?
04:02 sorear q:s or qs is '', with $foo interpolation
04:02 djanatyn rlpowell: Yep.
04:02 djanatyn rlpowell: Do you still think Ruby's string interpolation is better?
04:03 sorear djanatyn: there's also qa (arrays), qh(hashes), qc (closures i.e. brace groups), qf (functions), qb (backslash escapes), maybe more
04:03 PerlJam sorear: does niecza grok the full set of adverbs?
04:04 PerlJam oh, I'm guessing not :)
04:04 rlpowell Yes. I strongly prefer 2-char intros.  Because for any singlee special character, sooner or later I've had to write text that has a bunch of them, and quoting them all has driven me nuts.  IMO you shuold never have single-charter interp in a general languages general string syntax, ever.
04:04 sorear djanatyn: you can combine them: q:s:c[ $foo { bar } but not @baz ]
04:04 PerlJam For the full list see S02:3740
04:04 rlpowell Erm, that was all to djanatyn ^^ ; the rest of you can ignore it.
04:04 sorear PerlJam: niecza doesn't grok :x
04:05 sorear I can't remember if it does :p
04:05 * djanatyn should get a niecza setup to play with
04:05 birdwindupbird joined #perl6
04:05 sorear niecza: say qp|/etc/passwd|.perl
04:05 p6eval niecza v8-66-g6c0c55a: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class CallMethod␤  at /home/p6eval/niecza/src/NieczaActions.pm6 line 970 (NieczaActions C392_ANON @ 5) ␤  at /home/p6eval/niecza/src/NieczaActions.pm6 line 979 (NieczaActions NieczaActions…
04:05 sorear well, that's an interesting error
04:06 sorear rlpowell: mm.  Not a fan of \n are you?
04:07 PerlJam rlpowell: as I've said ... so far it hasn't been a problem.  And several of us have been writing Perl 6 for a few years now.
04:07 sorear niecza: say '$x $y $z \qq[{2 + 2}] $a $b $c'
04:07 p6eval niecza v8-66-g6c0c55a: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Action method backslash:qq not yet implemented at /tmp/DAvvOsOyqP line 1:â�¤------> [32msay '$x $y $z \qq[{2 + 2}][33mâ��[31m $a $b $c'[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting lin…
04:07 sorear bah
04:08 sorear rlpowell: according to spec, in a '' context you can still use general interpolation but it requires the \qq intro
04:08 PerlJam rlpowell: also, there's a strong correspondence between {} and "block of executable code" in Perl 6.
04:09 sorear nom: say '$x $y $z \qq[{2 + 2}] $a $b $c'
04:09 p6eval nom ebd495: OUTPUT«$x $y $z \qq[{2 + 2}] $a $b $c␤»
04:09 sorear perl6: say '$x $y $z \qq[{2 + 2}] $a $b $c'
04:09 p6eval niecza v8-66-g6c0c55a: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Action method backslash:qq not yet implemented at /tmp/ydX4EhljGp line 1:â�¤------> [32msay '$x $y $z \qq[{2 + 2}][33mâ��[31m $a $b $c'[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting lin…
04:09 p6eval ..rakudo a55346: OUTPUT«$x $y $z \qq[{2 + 2}] $a $b $c␤»
04:09 p6eval ..pugs: OUTPUT«$x $y $z 4 $a $b $c␤»
04:09 sorear heh, looks like pugs alone gets it right.
04:09 sorear pugs++
04:09 PerlJam pugs++ indeed.
04:10 sorear btw, v9 announced.
04:10 kaare_ joined #perl6
04:11 PerlJam All we need now is audrey  :)
04:12 molaf joined #perl6
04:12 sorear yeah, well
04:12 sorear Rakudo is the only Perl 6 implementation that will survive past 2016 since Rakudo alone has attracted a second developer
04:13 PerlJam sorear: Are you already getting burnt out on Niecza?
04:14 sorear PerlJam: I wouldn't go so far as to say burnt out, but the enthusiasm is certainly fading.
04:14 satyavvd joined #perl6
04:17 PerlJam I doubt if I'll ever be a developer for niecza, but I'm certainly starting to use it more often.
04:18 mberends sorear: that would be very sad. Please do $whatever-works-for-you to avoid burnout, many people are just beginning to become interested in Niecza.
04:18 PerlJam sorear: what mberends said!
04:18 tadzik Niecza v9 no longer supports .NET. That's interesting
04:18 Tene orly?  what's niecza running on instead?
04:19 mkramer joined #perl6
04:20 mberends mono, but I saw some Visual Studio files from diakopter++ in Niecza very recently
04:24 frhodes joined #perl6
04:26 mberends sorear: imho gaining file access tests versus losing .NET compatibility is a poor trade, especially in the context of wanting to attract more users and contributors. I'd buy a regression on that any time.
04:26 sorear that's what I wanted to hear
04:27 rlpowell left #perl6
04:33 djanatyn hmm
04:34 mberends sorear: regarding startup speed, would it be feasible to make a small loader daemonize a full Niecza process at first execution, and then connect to it as a client in subsequent executions? I could imagine doing it in C, not sure about CLR.
04:34 djanatyn well, I've been using mostly ghci and python for odd jobs around the desktop - just figuring out random questions and such.
04:34 djanatyn I'm going to try to actively use rakudo for those now.
04:37 tadzik cool
04:37 tadzik mberends: I could imagine mono itself having that feature, maybe
04:40 mberends it would be a bit like mod_perl. You'd have to be thorough about cleaning up data after each execution, and be very careful to avoid memory leaks.
04:41 sorear mberends: that could work, but it's far too inelegant for my tastes
04:41 mberends :) there is that
04:42 sorear the major problem is that compiled-niecza is too big; the largest part of startup cost is spent loading assemblies
04:42 wamba joined #perl6
04:42 Tene I notice in S02, there's a few comments on macros for quote-like operations, but none discuss how to add a quoting adverb.
04:42 sorear I think it might be reasonable to have some kind of high-level bytecode for regexes
04:43 sorear Tene: you need to augment the Q slang and add a multi candidate to tweak
04:54 Tene ahh, Q adverbs are roles applied to to the quoter there, in STD
04:55 Tene so, augment slang Q { role A0 { token escape:sym<...> { ... } } }
04:56 Tene oh, no, tweak
04:56 TimToady well, STD does the mixin using Moose internally
04:57 Tene tweak just mixes in those roles
04:58 Tene TimToady: one thing that's not clear to me at all is, given a grammar modification like that, how do I indicate how it should be compiled?  I assume I'd use a quasi somewhere, but where do I add that?
05:00 frhodes joined #perl6
05:01 Tene or, should I be defining that with a macro instead?
05:02 sorear Tene: I would think that if you are modifying the grammar, you need to specify how it is compiled by modifying the actions.  *handwave*
05:02 TimToady I don't really know what you're trying t odo
05:02 sorear or, inline the &make call within a {} block
05:06 tadzik nqp: say("=begin END" ~~ /'=begin' [ <!before \h* \n> || { say "noez!" }]/) # huh?
05:06 p6eval nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1␤»
05:06 tadzik oh, ok
05:08 sorear TimToady: I'd like to see a complete example of a grammar modification that, say, makes "\ux" eq "X", "\uyy" eq "Yy"
05:09 sorear TimToady: obviously part of the solution is augment slang Q { token backslash:u { <sym> . } }
05:09 sorear TimToady: but where do I put the code that generates the uc call?
05:12 Tene that's approximately the question I was asking, yes
05:14 dalek niecza: 00ca678 | sorear++ | src/ (6 files):
05:14 dalek niecza: mergeback
05:14 dalek niecza: review: https://github.com/sorear/niecza/commit/00ca678594
05:14 dalek niecza: 5c9b8fd | sorear++ | src/niecza:
05:14 dalek niecza: Implement \qq[] escape syntax
05:14 dalek niecza: review: https://github.com/sorear/niecza/commit/5c9b8fd9f2
05:14 sorear 1 insertions(+), 0 deletions(-)
05:14 sorear I love these commits
05:15 tadzik (:
05:19 wamba joined #perl6
05:23 mberends sorear: is niecza/docs/compiler.pod out of date?  'Perl 5 pipeline', 'viv-generated parser'?  I'll edit it if you give me just a few hints what to say.
05:28 sorear mberends: yow!  almost none of what's there is useful
05:29 mberends we could simply delete most of it and start afresh
05:29 sorear probably for the best
05:29 sorear it's so embarrasing to forget a doc even exists
05:30 mberends ok, I'll write something under the forgiveness license
05:30 sorear "forgiveness > permission"?
05:30 mberends yes
05:31 mberends I know you'll correct whatever is wrong
05:33 mberends breakfast &
05:35 dalek rakudo/nom: 53b1d8f | tadzik++ | src/Perl6/Grammar.pm:
05:35 dalek rakudo/nom: Fix S02-whitespace_and_comments/begin_end_pod.t
05:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/53b1d8f27f
05:39 SHODAN joined #perl6
05:50 REPLeffect joined #perl6
05:53 wamba joined #perl6
06:05 wtw joined #perl6
06:14 dalek niecza: 1b855f7 | sorear++ | src/niecza:
06:14 dalek niecza: Fix qp|| syntax
06:14 dalek niecza: review: https://github.com/sorear/niecza/commit/1b855f78a6
06:20 * sorear out
06:20 koban` joined #perl6
06:20 koban` left #perl6
07:02 wk joined #perl6
07:07 dalek niecza: ce20cf8 | (Martin Berends)++ | docs/compiler.pod:
07:07 dalek niecza: [docs/compiler.pod] begin refresh of content
07:07 dalek niecza: review: https://github.com/sorear/niecza/commit/ce20cf86b0
07:17 TiMBuS joined #perl6
07:22 sorear mberends: sleep is not cooperating - consider me available
07:23 * sorear is now attempting to make sense of nom's native types implementation
07:25 mj41 joined #perl6
07:44 sorear nom: my int $x; my $y := $x; $y = 5; say $x
07:44 p6eval nom 53b1d8: OUTPUT«Cannot assign to a non-container␤  in <anon> at /tmp/M07XTKmea6:1␤  in <anon> at /tmp/M07XTKmea6:1␤␤»
07:45 sorear nom: my int $x = 42; sub foo($y is rw) { $y++ }; foo($x); say $x;
07:45 p6eval nom 53b1d8: OUTPUT«Cannot assign to a non-container␤  in sub postfix:<++> at src/gen/CORE.setting:2127␤  in sub foo at /tmp/EamQxNR_8R:1␤  in <anon> at /tmp/EamQxNR_8R:1␤  in <anon> at /tmp/EamQxNR_8R:1␤␤»
07:45 sorear Correct?
07:45 daxim joined #perl6
07:46 mberends surely wrong, it looks NYI
07:47 sorear making that work would involve a lot of performance-sapping complications
07:48 sorear r/w autoboxing requires extending the life of the lexpad indefinitely
07:49 sorear and it will expose inlining behavior
07:49 sorear loop (my $x = 0; $x < 10; $x++) { my int $y = $x; secretly_saves_a_reference($y); }
07:50 sorear how many distinct references are saved?
07:50 sorear where "distinct" is taken in the sense of operational distinguishability
07:50 mberends 10
07:52 sorear grats, you've just broken the single largest optimization in niecza
07:52 mberends native type are not going to perform faster than builtin types because of all this. The reason to use them has more to do with native code interop (structs etc).
07:52 sorear reusing lexical slots around loops is *huge*
07:54 mberends I cannot imagine how the code to reuse then would work
07:55 mberends *them
07:55 sorear mberends: them=?
07:55 mberends lexical slots
07:59 sorear I think I understand now
08:02 mberends in !compile, where do the stages in @$.stages come from?
08:03 sorear the constructor
08:03 sorear src/niecza line 168
08:03 * moritz doesn't see how one can take a reference to a native int at all
08:04 sorear that code is slightly vestigal; I have an eye to removing the stage system
08:04 moritz good morning btw
08:04 sorear moritz: (CallFrame,Int) pair
08:04 mberends gm moritz
08:04 sorear o/ moritz
08:05 moritz huh.
08:05 moritz you can't bind to a nativly-typed lexical, afaict
08:05 moritz and natives are passed by value
08:06 moritz so all you get out of callframe.my<$y> is an int
08:06 sorear *currently* natives are passed by value
08:06 moritz not a reference to an int
08:06 sorear I think mberends wants natives to be passed by reference
08:06 mberends certainly when we get to structs
08:07 sorear we want has int $.foo is rw to DWIM
08:08 moritz oh.
08:09 moritz I think that'd come at too high a price.
08:10 im2ee joined #perl6
08:13 sorear moritz, mberends: I'd like the two of you to come to a consensus before I implement anything :D
08:14 moritz :-)
08:14 moritz I can see how  has int $.thing is rw  is desirable for NCI
08:14 moritz but maybe we need some cheating magic for that
08:15 wamba joined #perl6
08:16 mberends I think native types are not here for performance reasons. We have no use cases yet, but NCI will be the kind of application. Maybe Buf containing bytes has some overlap as well.
08:17 moritz I do think that performance is a major reason for native types.
08:17 mberends we should consider example usage first, then consider the spec, then implement.
08:17 moritz maybe we can cheat ourselves a way out
08:18 moritz we could have a kind of Int rw-proxy
08:18 sorear moritz: in particular I want your thoughts on mberends' reply to http://irclog.perlgeek.de/​perl6/2011-08-30#i_4344732
08:18 moritz that stores a reference to the object which has the int slot, and the slot offset
08:19 sorear moritz: that's what I meant by a (CallFrame,Int) pair
08:19 moritz sorear: ah.
08:20 moritz sorear: if we all that just for user-space objects with int slots, and not for lexpads, we can still get lots of optimizations
08:21 sorear the most important thing we can't get, is loop optimization
08:21 moritz IMHO it's OK to forbid 'is rw' on native routine parameters -- if you want that kind of magic, you use a boxed type instead
08:21 sorear but on reflection that isn't necessarily a big loss
08:22 sorear since you can always hoist variables out of loops, C89-style
08:22 sorear a loop body with no native variables doesn't suffer the unique storage penalty
08:22 sorear even if it closes over native variables
08:22 sorear did that make any sense
08:23 mberends only if you can *always* hoist, I'm not sure how that works
08:23 sorear mberends: I mean manual hoisting
08:23 mberends ok, I get it
08:25 * moritz doesn't
08:25 moritz but that's probably OK
08:27 mberends I think it means the "my int $y" is repositioned before the loop and "$y = $x" remains inside the loop.
08:28 wk joined #perl6
08:28 baest joined #perl6
08:40 dakkar joined #perl6
08:59 im2ee joined #perl6
09:10 im2ee joined #perl6
09:11 im2ee joined #perl6
09:15 orafu joined #perl6
09:17 Mowah_ joined #perl6
09:31 lue [looking at old euler problems in mu] what's Benchmark, and why am I expected to have it?
09:31 moritz lue: it's probably one of the old pugs-based modules that is also included in mu
09:32 lue that'd make sense, considering the plethora of /usr/bin/env pugs shebangs in those problems :)
09:33 Sarten-X joined #perl6
09:33 renormalist joined #perl6
09:35 moritz (they are probably in ext/ )
09:35 lue is the inability to accept the line  module Benchmark-0.1;  nom's fault? [I have a feeling it is]
09:35 moritz lue: no, the naming spec has changed
09:35 moritz iirc
09:36 lue ah, one would do well to s/-0.1/:ver<0.1>/, correct? :)
09:36 * moritz thinks so
09:38 lue I'm glad I got bored and decided to peruse mu [specifically the euler problems] . It's like an archaeological dig! :)
09:41 lue [I have the urge to upgrade the Pod in Benchmark to Pod6. I think I shall do so]
09:41 moritz lue: feel free to go wild in mu
09:42 mberends :)
09:42 lue .oO(just not "decimate entire subdirectories" wild, I would imagine ...)
09:43 moritz lue: well, it would make sense to leave misc/dalek-* in tact
09:43 cexsum joined #perl6
09:43 moritz lue: and camelia should be preserved
09:44 moritz lue: otherwise much of mu is wasteland
09:44 woosley left #perl6
09:44 lue I'd only do it if the subdirectory were named something like "remove-after-Jan-13-2001" . Other than that, I'd reach for Community Consensus™ first
09:45 lue .oO(then again, f>p)
09:45 moritz and it's version-controlled after all.
09:46 mberends Citizen Lue is a Good Citizen indeed
09:53 am0c joined #perl6
09:56 wamba joined #perl6
09:56 lue [S26.html] somehow, I don't think the original header was titled "The FormattingCode<121451920> block"
09:59 lue Benchmark coughs on this line: my @s = (time, times);  I wonder what 'times' once meant [I know what 'time' means]
10:05 lue At least the module can be loaded, and it doesn't choke on the Pod (AFAICT). I think I should commit, and worry about the *code* working later :)
10:05 mberends lue: perldoc -f times
10:06 koban` joined #perl6
10:06 lue let me guess, it's one of those things that's "the same as it was in P5", so it wasn't mentioned in the synopses (from what I could grep, at least)
10:06 koban` left #perl6
10:06 mberends good guess
10:08 lue .oO(I'm compelled to give 'times' a more descriptive name, but can't think of one. So I'll drop the compellation(?))
10:09 mberends yes, definitely drop it. that name is set in stone by decades of tradition.
10:14 lue Yeah, it was a gut "that isn't very descriptive" reaction. But it's not worth the electricity used for the last thought bubble (nor is it worth the electricity for this message)
10:17 dalek mu: 74d2344 | lue++ | ext/Benchmark/lib/Benchmark.pm:
10:17 dalek mu: Modernized name of module Benchmark and turned POD in it to Pod6
10:17 dalek mu:
10:17 dalek mu: Specifically I changed the name Benchmark-0.1 to Benchmark:ver<0.1>,
10:17 dalek mu: which allows it load properly. Also I changed all the POD in the
10:17 dalek mu: module to Pod6, getting rid of all those C<=cut>s and
10:17 dalek mu: semanticizing most of it in the process.
10:17 dalek mu: review: https://github.com/perl6/mu/commit/74d2344ce7
10:17 mberends lue++
10:17 lue whoops, s/it load/it to load/ [ah well, too late and doesn't matter all that much]
10:18 lue Of course, if you want Benchmark to *work*, you'll have to wait until nom supports C<times>.
10:21 mberends yeah, that's kind of the point of Benchmark, you can't really comment it out. I'll have a look later today at whether it's easily doable, I've been programming time functions quite a lot recently.
10:23 mberends just getting my head around Niecza's internal architecture atm, can't easily put this down to resume later.
10:23 lue I have a feeling I'm going to get a kick out of spelunking in mu . Alas, it's almost 03:30 in the morning, so I need to go to bed in a minute
10:23 lue [wouldn't want to go to bed at dawn...]
10:33 wamba joined #perl6
10:47 cexsum joined #perl6
10:49 lue goodnight all o/
10:49 mberends o/
10:52 MayDaniel joined #perl6
11:00 dalek niecza: ec4c616 | (Martin Berends)++ | docs/compiler.pod:
11:00 dalek niecza: [docs/compiler/pod] rewrite up to the beginning of CLRBackend
11:00 dalek niecza: review: https://github.com/sorear/niecza/commit/ec4c6164f0
11:00 mberends lunch &
11:16 sftp joined #perl6
11:21 Trashlord joined #perl6
11:22 mls moring perl6!
11:22 daxim lies!
11:23 mls ok, afternoon then...
11:23 mishin_ joined #perl6
11:29 gfldex cant we flattening earth? would solve quite a few problems
11:40 daxim http://www.cubicearth.com/
11:42 gfldex that would be a start
11:43 * sjn remembers alt.pave.the.earth
11:45 colomon but a cubic earth would have eight corners -- and everyone knows the earth has only four!
11:46 mberends do you mean the north, south, east and west poles?
11:49 colomon mberends: not at all.
11:49 mberends it figures, a compass has four points
11:49 colomon One corner of the earth is Fogo Island, Newfoundland.  I don't know where the others are off the top of my head.
11:51 colomon Specifically Brimstone Head.
11:51 colomon http://www.newfoundlandlabrador​.com/PlanYourTrip/Detail/210426
11:53 mberends I learn something new every day
11:56 colomon actually, google searches is not providing any verification from that other than Newfoundland tourism promotions...
12:00 donri joined #perl6
12:08 [Coke] /waay
12:12 woosley joined #perl6
12:27 mkramer joined #perl6
12:48 cexsum joined #perl6
12:49 JimmyZ joined #perl6
13:05 JimmyZ joined #perl6
13:09 Sarten-X joined #perl6
13:15 cexsum joined #perl6
13:22 baest joined #perl6
13:22 [Coke] joined #perl6
13:30 bluescreen10 joined #perl6
13:43 [Coke] nom: say "forgiveness" > "permission"
13:43 p6eval nom 53b1d8: OUTPUT«Bool::False␤»
13:44 [Coke] aha!
13:45 Holy_Cow joined #perl6
13:53 sftp joined #perl6
13:57 cosimo joined #perl6
13:59 JimmyZ nom: say "True" > "False"
13:59 p6eval nom 53b1d8: OUTPUT«Bool::False␤»
14:08 plobsing nom: say "up" == "down"
14:08 p6eval nom 53b1d8: OUTPUT«Bool::True␤»
14:08 Holy_Cow left #perl6
14:10 * tadzik humms the Pirates of the Carribean "Up is Down" theme
14:11 abercrombie joined #perl6
14:13 tadzik lue: you're aware of the perlpilot/benchmark module?
14:36 thou joined #perl6
14:42 Su-Shee joined #perl6
14:45 colomon hi all nomsters.  any idea why
14:45 colomon my $match = ABC::Grammar.parse($*IN.slurp, :rule<tune_file>, :actions(ABC::Actions.new));
14:45 colomon would get the error "too many named arguments: 1 passed, 0 used"
14:45 colomon ?
14:47 moritz colomon: :actions NYI
14:47 colomon ah
14:47 colomon so the ABC module is a lost cause at the moment, then
14:47 moritz aye :(
14:47 moritz as is JSON::Tiny
14:53 colomon :(
14:54 JimmyZ_ joined #perl6
14:57 donri wtf @ "up" == "down"; lemme guess it's a numeric compare and both evalulate to zero?
14:58 JimmyZ nom: say "up" eq "down'
14:58 p6eval nom 53b1d8: OUTPUT«===SORRY!===␤Confused at line 1, near "say \"up\" e"␤»
14:58 JimmyZ nom: say "up" eq "down"
14:58 p6eval nom 53b1d8: OUTPUT«Bool::False␤»
14:58 donri ya I know :)
14:59 tadzik nom: say +"up", +"down"
14:59 p6eval nom 53b1d8: OUTPUT«00␤»
14:59 donri nom: say 42 == "42 things I dare say!"
14:59 p6eval nom 53b1d8: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are:␤:(Mu, Mu %_)␤␤  in method Numeric at src/gen/CORE.setting:515␤  in sub infix:<==> at src/gen/CORE.setting:1873␤  in sub infix:<==> at src/gen/CORE.setting:1873␤  in <anon> at /tmp/2…
15:00 JimmyZ nom: say "42" == "42 things I dare say!"
15:00 p6eval nom 53b1d8: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are:␤:(Mu, Mu %_)␤␤  in method Numeric at src/gen/CORE.setting:515␤  in sub infix:<==> at src/gen/CORE.setting:1873␤  in sub infix:<==> at src/gen/CORE.setting:1873␤  in <anon> at /tmp/w…
15:00 moritz nom: say "42 things".Numeric.WHAT
15:00 p6eval nom 53b1d8: OUTPUT«Failure()␤»
15:00 JimmyZ rakudo: say "42" == "42 things I dare say!"
15:00 p6eval rakudo a55346: OUTPUT«Bool::True␤»
15:00 colomon nom: say "42".Numeric.WHAT
15:00 p6eval nom 53b1d8: OUTPUT«Int()␤»
15:03 JimmyZ LHF, me thinks
15:04 moritz well, according to latest #perl6 think, "foo".Numeric should also fail()
15:04 moritz but we don't have good dFailure handling in place
15:05 JimmyZ so "42" == "42" will fail?
15:05 moritz no
15:06 JimmyZ "foo".Int won't fail, I guess
15:06 moritz just strings that don't contain numbers should fail on .Numeric
15:06 JimmyZ o
15:06 JimmyZ I don't like that
15:07 JimmyZ does it meant "up' == "down" will fail?
15:07 JimmyZ s/'/"/
15:08 zostay joined #perl6
15:13 JimmyZ I don't expect "Whatever user input strings".Numeric makes my programs fails
15:14 daxim JUST LIKE JAVA
15:14 JimmyZ JAVA fails?
15:17 mkramer left #perl6
15:17 daxim http://download.oracle.com/javase/7/docs/​api/java/lang/NumberFormatException.html
15:17 daxim for most beginning programmers, it's the first annoyance in a long long series.
15:19 JimmyZ does it mean java fails too?
15:20 moritz it dies
15:21 JimmyZ throw a Exception doesn't mean die, I think
15:23 wamba joined #perl6
15:26 JimmyZ Is there a Exception class in core setting?
15:27 moritz nom: say Exception
15:27 p6eval nom 53b1d8: OUTPUT«Exception()␤»
15:28 JimmyZ oh I don't see it  in  http://perlcabal.org/syn/S32/Exception.html
15:28 moritz yes, there's some mismatch between rakudo and spec
15:28 JimmyZ aye
15:28 moritz which I plan to resolve one way or another soonish
15:29 moritz either Exception becomes X::Base in rakudo, or the other way round in the spec
15:29 bbkr_ rakudo: Exception.new("e").throw
15:29 p6eval rakudo a55346: OUTPUT«Not a throwable object␤  in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp␤»
15:29 JimmyZ will there be a plan throw a Exception other than fails in the core setting ?
15:30 moritz JimmyZ: I can't parse that question
15:30 JimmyZ will there be a plan throw a Exception instead of fails in the core setting ?
15:30 moritz JimmyZ: repeating it doesn't make it easier to understand
15:31 JimmyZ hmm
15:31 moritz sorry, wasn't repeated verbatimly
15:31 moritz but I still don't know what it means :(
15:31 JimmyZ sorry, my poor english
15:32 moritz what bbkr_ tried should work
15:32 bbkr_ should I report a bug?
15:32 JimmyZ will strings that don't contain numbers should throw a Exception instead of fail on .Numeric?
15:32 mberends I think JimmyZ meant, will there be a plan to use 'throw' instead of 'fail'?
15:33 moritz JimmyZ: no
15:33 moritz bbkr_: not necessary
15:33 moritz bbkr_: it's on my agned
15:33 moritz *agenda
15:33 * moritz can't type
15:33 bbkr_ moritz++
15:34 JimmyZ I just realized core-setting won't use Exception class
15:35 TimToady I don't see that; a failure is just a lazily thrown exception
15:35 JimmyZ which is in flood in java
15:36 TimToady throwing exceptions eagerly is bad for parallel processing
15:36 JimmyZ agreed
15:37 TimToady see for example S03:3366
15:38 TimToady there is no exact definition for "mass production" yet, but certainly hyper is one of them
15:39 jnthn evening, #perl6
15:39 * jnthn is back from disappearing :)
15:39 mberends o/ jnthn, welcome back!
15:39 jnthn o/ mberends
15:39 colomon \o
15:43 TimToady you should throw an exception only when the program is defective, not when the data is defective; (not handling defective data is one way of making the program defective, of course)
15:46 TimToady and languages that throw exceptions at the end of a list are nuts, since having an end does not make a list defective
15:48 * bbkr_ agree, pythonisms like StopIteration exception are weird
15:48 mberends TimToady++ # throw or fail should not be a structured programmer's goto
15:53 bbkr_ mberends: sorry about server downtime yesterday, some modifications on power grid were made here. it should be fine from now on.
15:53 mberends :) no probs, thanks
16:00 TimToady that's not to say that control exceptions don't exist, but it's more like a fatal exception is just a specific subclass of control exception that CATCH knows how to deal with
16:01 * jnthn wonders how the new categorize fits in with classify
16:01 jnthn oh, I see it...
16:01 jnthn :)
16:07 jevin joined #perl6
16:08 bonifatio joined #perl6
16:15 pelmenntm joined #perl6
16:29 jevin joined #perl6
16:34 wolfman2000 joined #perl6
16:35 jevin joined #perl6
16:57 lakatos joined #perl6
16:57 moritz jnthn: http://irclog.perlgeek.de/​perl6/2011-08-29#i_4341153 might interest you
16:57 lakatos Hey guys
16:57 lakatos I'm thinking of learning Perl
16:57 lakatos Is Perl 6 a safe bet?
16:57 lakatos :D
16:58 mberends I wouldn't bet *against* it
16:59 lakatos So how should I go about learning this language then?
17:00 mberends try using it to write what you like anyway, get guidance here or from references on perl.org
17:00 bbkr_ lakatos: a lot of languages copied Perl in past 20 years, and a lot of languages will copy Perl6 in next 20 years :) go for it!
17:00 * sjn thinks there's a good chance most people might become better programmers in general by learning Perl 6
17:01 jnthn moritz: Thanks for the pointer.
17:02 bbkr_ lakatos: the best way to learn is to write some perl6 modules. learning without target is hard. take a look at http://modules.perl6.org/ , check what is missint and try to implement it.
17:02 lakatos What I'm asking is where can I find a book or something :P
17:02 mberends lakatos: the biggest collection of little Perl 6 examples, and how they compare to other languages http://rosettacode.org/wiki/Category:Perl_6
17:02 mberends lakatos: explore http://perl6.org
17:03 lakatos Does Perl 6 have macros yet?
17:03 bbkr_ lakatos: book is here -  https://github.com/perl6/book/downloads
17:04 bbkr_ Please define "macro"
17:04 mberends Rakudo might get macros soon, masak++ is planning to implement some (or all) of the spec
17:05 lakatos bbkr_: Let's just say programs that write programs
17:06 Su-Shee lakatos: I think you want to read higher order perl and learn perl 5 first. ;)
17:06 lakatos bbkr_: Basically lisp-style macros
17:07 wolfman2_ joined #perl6
17:07 lakatos Su-Shee: I'm still not sure yet. Still weighing my options for now
17:07 mberends lakatos: that's what masak++ will be producing
17:08 Su-Shee lakatos: it'll make learning perl 6 much easier.
17:10 lakatos Well, seeing how all I really want is to, well, learn regular expressions, I guess I'll give Perl 5 a quick run
17:10 lakatos left #perl6
17:10 benabik joined #perl6
17:13 abercrombie joined #perl6
17:19 flussence joined #perl6
17:21 masak joined #perl6
17:22 masak hi, #perl6.
17:22 colomon o/
17:22 masak sorear++ # v9
17:22 colomon is phasers in 98, or did it get rescheduled?
17:22 masak yes :)
17:23 colomon errrr.....
17:23 mberends still in 98, sorear++ needs his schedule irl to stabilize
17:24 masak oh, right. that's what we decided.
17:30 masak mberends: yes. I'm going to implement macros in Rakudo. I'm pretty excited about it.
17:32 arnsholt I think any sane person should be excited about your macro work
17:32 arnsholt ++masak
17:35 masak who knows, being insane might even heighten the excitement!
17:36 colomon masak++
17:49 jnthn oh, #phasers...
17:49 jnthn I guess my report will be short this week. :/
17:53 Trashlord joined #perl6
17:56 wolfman2000 joined #perl6
17:57 abercrombie joined #perl6
18:01 colomon ack, sure seems like roles would make my current $work task 90% easier.  (and just for masak, I'm working on writing tests...)
18:01 masak \o/
18:01 masak did you mean "macros"?
18:02 colomon no, I meant roles.  I'm programming in C++
18:04 masak ah.
18:04 masak anyway, good that you're writing tests.
18:05 colomon it just sucks they are such a pain in the neck to write here.
18:06 colomon one of those situations where I'm staring at screens of code going "That one be three lines of p6...."
18:07 masak or three characters of APL :P
18:07 colomon doubt it, it's a text processing issue
18:08 masak (only three characters, but they *say so much*)
18:08 colomon read through the log being generated and make sure the info I just added to the log file is present
18:10 colomon It means overriding the logging class for the test
18:11 colomon whereas in p6, I believe I could pretty easily just mixin the one method that needs to change.
18:14 colomon and naturally the text searching involved would be an order of magnitude simpler
18:18 masak naturally.
18:18 pmichaud good afternoon, #perl6
18:18 phenny pmichaud: 29 Aug 12:46Z <[Coke]> ask pmichaud if that grant thing is still ongoing and if I should poke him about it.
18:19 masak pmichaud! \o/
18:19 colomon o/
18:19 mberends hello pmichaud
18:19 pmichaud phenny tell Coke yes, it's still ongoing, and consider me poked.
18:19 pmichaud phenny: tell Coke yes, it's still ongoing, and consider me poked.
18:19 phenny pmichaud: I'll pass that on when Coke is around.
18:30 Kivutarrr joined #perl6
18:30 masak Kivutarrr: \o
18:30 Kivutarrr Hi all :)
18:30 ccc_ joined #perl6
18:30 Kivutarrr how is perl6 going?
18:31 moritz it runs slowly, but it is developed fast :-)
18:32 masak I was going to answer "we don't know, we're in the echo chamber!"
18:32 masak moritz: if we magically had a Perl 6.0.0 implementation around, I bet work would proceed real fast. ;)
18:33 Kivutarrr :)
18:35 birdwindupbird joined #perl6
18:38 moritz in unrelated news I'm working on a generic backend API for a blog engine (currently in perl 5 though)
18:38 moritz for testing, I'm implementing an "each blog post is stored in a separate file" backend
18:39 moritz want to a SQL backend later
18:39 masak sounds interesting.
18:39 masak except for the Perl 5 part, which was a letdown :P
18:39 moritz I'm also consider writing a proof of concept frontend
18:40 moritz masak: consider it the "plant to throw one away" :-)
18:40 colomon masak: oooo, my test is only about 75% written, and it's already found a bug in my new code
18:40 masak moritz: remind me never to let you take care of my plants. :P
18:41 * moritz reminds masak to never let him take care of masak's plants
18:41 * masak saw that one coming
18:42 masak it was all planted ahead.
18:42 plobsing I'm trying to understand how Perl 6 exceptions are supposed to work. I tried http://nopaste.snit.ch/76050 with rakudo, but it didn't work.
18:42 plobsing is this my fault or rakudo's?
18:43 masak plobsing: your bug report lacks the field "expected". please try again.
18:43 plobsing heh. I'm expecting it to print *something*
18:43 plobsing it doesn't
18:43 masak come to think of it, it also lacks the field "observed".
18:44 plobsing there is no output
18:44 masak does the program terminate?
18:44 plobsing yes
18:44 plobsing but with no output and 0 exit status
18:45 masak rakudo: die 2; CATCH { when $_ %% 2 { say "Even" } }; say "alive"
18:45 p6eval rakudo a55346: OUTPUT«(timeout)»
18:45 Kivutarrr left #perl6
18:45 masak doesn't terminate here.
18:45 masak or not soon enough anyway.
18:46 plobsing rakudo: subset Even of Int where *%%2; die 2; CATCH { when Even { say "catch match"; } }
18:46 p6eval rakudo a55346:  ( no output )
18:46 plobsing I expect the catch to match or rethrow
18:47 moritz rakudo never implemented that part.
18:47 masak rakudo master certainly won't... right.
18:47 moritz niecza: subset Even of Int where *%%2; die 2; CATCH { when Even { say "catch match"; } }
18:47 p6eval niecza v9-5-gec4c616: OUTPUT«catch match␤»
18:47 plobsing therefore, I expect either the text in the handler, or a backtrace
18:47 masak optimist :P
18:48 plobsing masak: silent failure is the worst kind
18:48 masak oh, I agree.
18:48 plobsing niecza: subset Even of Int where *%%2; die 1; CATCH { when Even { say "catch match"; } }
18:48 masak I'd use the exception system in Rakudo a lot more if it actually worked.
18:48 p6eval niecza v9-5-gec4c616: OUTPUT«Unhandled exception: 1␤  at /home/p6eval/niecza/lib/CORE.setting line 741 (CORE die @ 2) ␤  at /tmp/_tLRxx50I4 line 1 (MAIN mainline @ 1) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2045 (CORE C954_ANON @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setting lin…
18:48 masak for now, I rely quite heavily on try and booleans.
18:50 pmichaud niecza: die 2;  CATCH { say .WHAT }
18:50 p6eval niecza v9-5-gec4c616: OUTPUT«Int()␤Unhandled exception: 2␤  at /home/p6eval/niecza/lib/CORE.setting line 741 (CORE die @ 2) ␤  at /tmp/yFwtGJyzBj line 1 (MAIN mainline @ 1) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2045 (CORE C954_ANON @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setti…
18:50 plobsing I find it odd that the subset test terminates, but the direct %% test (in the handler) doesn't appear to do so
18:51 pmichaud that feels weird.  The 2 is put into $!?
18:52 pmichaud rakudo:  die 2;  CATCH { say .WHAT };
18:52 p6eval rakudo a55346: OUTPUT«Exception()␤»
18:52 pmichaud yeah, that's the difference.
18:52 plobsing ah yes, parrot exception system sucks and can't throw arbitrary objects
18:52 pmichaud rakudo (master)   creates an Exception that has the 2 as a payload
18:54 plobsing pmichaud: why doesn't rakudo unbox the payload?
18:54 moritz is it supposed to?
18:54 plobsing that's the expected semantic
18:55 plobsing perl expects arbitrary objects to be throwable. the parrot exception system supports that by providing a payload slot.
18:55 [Coke] so, by "sucks" you mean "is different than perl"
18:55 [Coke] ?
18:56 plobsing [Coke]: I also mean "is different from javascript, and other common languages"
18:56 moritz plobsing: I'm currently thinking hard about the exception system (at least some aspects of it), and it's not clear to me that it must be unboxed
18:56 pmichaud plobsing: I'm not certain that rakudo should be unboxing the payload.  It's not clear to me that the argument to "die" should be what ends up in $!
18:57 moritz plobsing: I mean, how could you obtain the backtrace then, for example?
18:58 plobsing moritz: that is a tradeoff. I'm just looking at some of the spec and noting how it works.
18:58 moritz maybe if the argument to die isn't something throwable, $_ in the catch block becomes that argument, and $! the full exception
18:58 dual joined #perl6
18:59 pmichaud that's definitely *not* what the spec currently says.
18:59 pmichaud the spec says that $_ is bound to the exception itself
18:59 moritz pmichaud: I know
18:59 * moritz was SPECulating
18:59 plobsing spectacular
19:00 moritz #phasers time!
19:02 pmichaud certainly the spec implies that it's possible to .resume an exception.
19:02 pmichaud so, whatever ends up in $_ either has to be an Exception, or an object with an exception mixed in
19:02 moritz .oO( put .resume in Mu... NOOO!)
19:05 plobsing where are exceptions covered in-depth in the spec. I found a little in s04, but I feel I'm missing somethign
19:06 plobsing nm, found the draft spec, stupid question
19:07 masak moritz: after that thought bubble, I'm a bit on edge having you in charge of exceptions :P
19:09 pmichaud plobsing: exceptions haven't been covered in-depth in the spec, which is a big reason why rakudo's behavior seems wonky at times.  it's building to a handwavy spec
19:09 moritz masak: I'm not in charge, I'm just being paid to do it
19:09 masak "I just work here"
19:10 masak anyway, moritz++ so far.
19:10 masak hope Mu doesn't end up with .resume :P
19:10 plobsing pmichaud: I'm looking to make some additions/improvements to parrot's exception system and was trying to determine what rakudo needs from it (which I suspect it doesn't provide ATM)
19:10 plobsing specifically wrt exceptions uncaught by the first encountered handler
19:13 pmichaud plobsing: yeah, that's been tricky.  (more)
19:13 pmichaud to me "first encountered handler" isn't really what we want to be keying on
19:14 pmichaud what I really want to be able to do is to mask a handler for a given scope or block or something like that
19:14 plobsing I'm sorry, I didn't understand that. Can you dumb that down a little?
19:14 plobsing or provide an example?
19:14 pmichaud our biggest challenge at the moment is something like:    CATCH { die $! }
19:15 pmichaud we need to make sure the CATCH block doesn't catch any exceptions thrown from within it
19:16 pmichaud but it's not enough to say "ignore the first handler", because of something like:
19:16 plobsing my reading of s04 is that the CATCH block *should* catch that, but defer it
19:16 pmichaud plobsing: that's possible... s04 changed relatively recently and I haven't updated my mental model yet
19:16 pmichaud (the SIMPLECATCH stuff is relatively new)
19:17 plobsing i'm not exactly sure how that is supposed to work. I mean, the exception handler hit an exception handling the exception. How is it supposed to *continue* handling the first exception?
19:17 plobsing but that's how I read it
19:17 pmichaud well, think of something like
19:18 pmichaud foo() { CATCH { ... };  die $something };    CATCH { foo(); }
19:18 pmichaud sub foo() { CATCH { ... };  die $something };    CATCH { foo(); }
19:19 pmichaud if foo's CATCH handles the exception, then the outer CATCH simply continues on when foo() returns
19:19 pmichaud if foo's CATCH doesn't handle the exception, then the outer CATCH needs to either ignore it or arrange for it to be rethrown
19:20 ashleydev I didn't understand what Perl 6 macros were going to be, but I found this: http://lists.warhead.org.uk/pipe​rmail/iwe/2005-July/000130.html -- that helped clear up a lot for me (note I know C and perl well)...
19:20 plobsing yes, but to defer the rethrow... where do we continue in the handlng of the original exception?
19:21 plobsing is it like 'on error resume next'?
19:21 pmichaud plobsing: I don't know.  I haven't explored it fully myself yet; exceptions have been relatively low on the "needs to be done" list for rakudo.
19:22 pmichaud they're important, but they haven't been critical in the way that regexes and lists and lexicals and stuff have been critical
19:23 masak ashleydev: interesting.
19:23 masak ashleydev: yes, Perl 6 macros will be AST-based, and hygienic, just as Lisp's.
19:23 ashleydev masak: makes me think that Perl 6 is going to be lisp with more syntax
19:23 ashleydev + some regex
19:24 masak ashleydev: you're not the first to think so.
19:24 masak ashleydev: if doing macros right makes your language a Lisp, then fair enough, it's a Lisp :)
19:24 ashleydev heh
19:24 plobsing pmichaud: the change/addition I'd like to make first is in how parrot manages rethrows. I want to add functionality that ignores rethrow points and only reports the original throw point (Ωη wants this).
19:25 plobsing I suspect the way perl6 exceptions work, rakudo wants that as well.
19:25 pmichaud "ignore rethrow points" sounds non-perl6ish to me, though.
19:25 pmichaud in general perl 6 doesn't ever want to throw information away.
19:26 plobsing if you don't ignore rethrow points, you'll get a backtrace for every handler that *didn't* catch
19:26 plobsing which is a lot of noise
19:26 pmichaud well, a backtrace could be selective in what it displays.  indeed, it already is.
19:27 birdwindupbird joined #perl6
19:27 pmichaud and my mental model of perl 6 is that only handlers that catch would do a rethrow.
19:27 pmichaud i.e., a handler that doesn't catch doesn't do anything to the exception.
19:28 * ashleydev wonders if perl 6 will spark a DSL hell 2.0 after the rubyists beat that to death.
19:28 plobsing pmichaud: from a perl6 perspective yes, but from parrot's perspective, the handler needs to catch to do the testing for code such as 'CATCH { when pred1 { ... } when pred2 {...} }'
19:29 plobsing even though from perl6, we'd say that exceptions not satisfying the predicates were not caught
19:29 sjn "DSL hell"? What's that? </ignorant>
19:29 pmichaud plobsing: that doesn't fit my understanding.
19:29 pmichaud in the case of   CATCH { when pred1 { ... } when pred2 { ... } }     there *is* a catch
19:30 plobsing what if the object thrown doesn't match the predicates?
19:30 pmichaud then it gets rethrown
19:30 pmichaud (let me double-check this with latest s04)
19:30 plobsing so then how can a catch block *not* catch?
19:30 pmichaud there's more than one type of exception
19:30 pmichaud we also have CONTROL exceptions
19:30 pmichaud those handlers don't catch
19:30 pmichaud those handlers don't catch "die" exceptions.
19:31 pmichaud I also don't know yet to what extent the NEXT, LAST, and REDO phasers are exception-handler based.
19:31 benabik joined #perl6
19:31 pmichaud I do know that "next", "last", and "redo" are exception-based.
19:31 plobsing so there is no way to selectively catch die exceptions based on arbitrary predicates?
19:32 pmichaud I think the predicates are handled inside the CATCH block
19:32 pmichaud (which, yes, is after it has been caught)
19:32 plobsing I either always catch them (and sometimes rethrow them, at the cost of potentially low signal/noise backtraces) or I don't
19:34 pmichaud the backtrace code can always choose to ignore handlers when displaying the backtrace
19:34 pmichaud as I said, we already have to selectively ignore frames in the backtrace
19:35 pmichaud so that's not really anything new.
19:36 plobsing but we're not talking about frames. this makes the backtrace information 2-dimensional, only one dimension is the frames. the other dimension being the different throw/rethrow points.
19:38 pmichaud well, if it's a newly thrown exception, it has its own backtrace.  if it's a rethrown exception, then I suspect knowing the original exception location and the point of the last rethrow might be enough (more)
19:38 lue hello world o/
19:40 masak lue! \o/
19:41 lue perl6: say times;
19:41 p6eval niecza v9-5-gec4c616: OUTPUT«2.440152 0.048003 2.440152 0.048003␤»
19:41 p6eval ..pugs: OUTPUT«0.000010.00000100␤»
19:41 p6eval ..rakudo a55346: OUTPUT«Could not find sub &times␤  in main program body at line 22:/tmp/xPDJ8iG3d5␤»
19:59 lichtkind joined #perl6
20:01 mberends hello lichtkind, for your history I looked up when classify was first mentioned here http://irclog.perlgeek.de/​perl6/2006-09-20#i_-138392 and categorize http://irclog.perlgeek.de/​perl6/2011-01-14#i_3186628
20:02 masak mberends++
20:02 mberends lichtkind: and someone asked about classify 2 years ago ;) http://irclog.perlgeek.de/​perl6/2009-06-21#i_1254858
20:03 masak mberends: fwiw, "classify" is mentioned a lot in E06 as "part", a horrible name :)
20:03 masak and E06 is from 2003.
20:03 plobsing pmichaud: there was more?
20:04 mberends masak: oh, well remembered!
20:04 masak signed, your friendly Perl 6 historian :)
20:07 jevin joined #perl6
20:09 * lue sets out for another dig in the mu repository
20:09 masak 'night, #perl6
20:15 zby_home_ joined #perl6
20:23 lichtkind mberends: i tend to be persistent :)
20:23 lichtkind good night masak
20:23 mberends lichtkind: :)
20:41 pmichaud plobsing: oh, sorry, I got called afk at home
20:41 pmichaud no, there's not more
20:41 pmichaud or if there was (and there likely was), I've forgotten it now.  again, my apologies.
20:42 plobsing ah, ENOMEM
20:42 pmichaud yeah
20:48 plobsing pmichaud: I've been looking over the spec a bit more, and it appears exceptions were as you said
20:49 plobsing thrown objects that aren't exceptions probably get wrapped in X::AdHoc
20:51 plobsing in terms of keeping track of rethrow points, is 'class Backtrace does Positional[Backtrace::Frame]' suitable for handling the 2D nature of backtraces?
20:52 bluescreen10 joined #perl6
21:03 thou joined #perl6
21:12 dorlamm joined #perl6
21:17 lichtkind unbelievable, after 20some net  hours im still tweaking on http://kepher.kilo028.server4yo​u.de/nightly/datastructures.pdf
21:19 felher ashleydev++: Thanks for that link 'bout the macro-system of lisp. Seems to be very interesting indeed. I find it kind of funny though, that the author didn't fall into the hard-to-spot trap of macro-expansion in C (2/10*10 != 2/(10*10)) but into the trap of integer vs. float arithmetic (2/10*10 != 2) :)
21:29 Sarten-X joined #perl6
21:34 felher yeah, really interesting. especially if one - like me - never played with lisp.
21:34 ashleydev felher: /o
21:35 ashleydev me too, I'm not fluent in lisp
21:36 ashleydev felher: but he did mention the (2/10*10 != 2/(10*10)) issue I think
21:36 tokuhirom joined #perl6
21:37 wallberg joined #perl6
21:38 felher ashleydev: yeah, he mentioned it. As i said: the author didn't fall into the macro-expansion trap. :)
21:40 felher ashleydev: maybe i should have written (2/10*10 != 2/10*10) as (2/square(10) == 2/10*10 != 2/(10*10) to make sure i'm talking about the macro expansion, not the float/integer arithmetic at that point.
21:41 felher anyway, going to sleep. good night #perl6
21:46 ashleydev can an AST based macro system not be hygenic?
21:47 REPLeffect joined #perl6
21:50 dalek specs: 0e7e19c | larry++ | S04-control.pod:
21:50 dalek specs: refinement of SIMPLECATCH semantics
21:50 dalek specs:
21:50 dalek specs: needs to go inside the loop to be able to give up on current exception
21:50 dalek specs: review: https://github.com/perl6/specs/commit/0e7e19cc19
22:04 soh_cah_toa joined #perl6
22:05 slavik2 joined #perl6
22:08 REPLeffect joined #perl6
22:29 lichtkind is the cakture creating  op "/" gone?
22:29 lichtkind capture
22:54 y3llow joined #perl6
22:54 dukeleto joined #perl6
22:54 jedai joined #perl6
22:54 odoacre joined #perl6
22:54 DarthGandalf joined #perl6
22:54 huf joined #perl6
22:54 jlaire joined #perl6
22:54 xinming joined #perl6
22:54 f00li5h joined #perl6
22:54 breinbaas joined #perl6
22:54 jnthn joined #perl6
22:54 sbp joined #perl6
22:54 snarkyboojum joined #perl6
22:54 imarcusthis joined #perl6
22:54 gabiruh joined #perl6
22:54 broquaint joined #perl6
22:54 Grimnir_ joined #perl6
22:54 athomason joined #perl6
22:54 mikemol joined #perl6
22:54 Gothmog_ joined #perl6
22:54 bs338 joined #perl6
22:54 felipe joined #perl6
22:54 phenny joined #perl6
22:54 nsh- joined #perl6
22:54 TimToady joined #perl6
22:54 Grrrr joined #perl6
22:54 jjore joined #perl6
22:54 tylercurtis joined #perl6
22:54 zb joined #perl6
22:54 \patch joined #perl6
22:54 donri joined #perl6
22:54 donri joined #perl6
22:55 thou joined #perl6
22:57 donri joined #perl6
23:00 * ruz upgraded memory 2G->4G, finally can compile rakudo w/o affecting whole system perf
23:01 tadzik ;)
23:03 ruz pull requests kinda suck for small patches, can I use nopaste?
23:04 tadzik sure
23:05 donri joined #perl6
23:05 y3llow joined #perl6
23:05 dukeleto joined #perl6
23:05 jedai joined #perl6
23:05 odoacre joined #perl6
23:05 DarthGandalf joined #perl6
23:05 huf joined #perl6
23:05 jlaire joined #perl6
23:05 xinming joined #perl6
23:05 f00li5h joined #perl6
23:05 breinbaas joined #perl6
23:05 jnthn joined #perl6
23:05 sbp joined #perl6
23:05 snarkyboojum joined #perl6
23:05 imarcusthis joined #perl6
23:05 gabiruh joined #perl6
23:05 broquaint joined #perl6
23:05 Grimnir_ joined #perl6
23:05 athomason joined #perl6
23:05 mikemol joined #perl6
23:05 Gothmog_ joined #perl6
23:05 bs338 joined #perl6
23:05 felipe joined #perl6
23:05 phenny joined #perl6
23:05 nsh- joined #perl6
23:05 TimToady joined #perl6
23:05 Grrrr joined #perl6
23:05 jjore joined #perl6
23:05 tylercurtis joined #perl6
23:05 zb joined #perl6
23:05 \patch joined #perl6
23:06 donri joined #perl6
23:07 donri joined #perl6
23:10 lichtkind good night
23:17 [Coke] joined #perl6
23:24 [Coke] joined #perl6
23:31 [Coke] joined #perl6
23:34 Psyche^ joined #perl6
23:34 whiteknight joined #perl6
23:38 jferrero joined #perl6
23:38 [Coke] joined #perl6
23:44 [Coke] joined #perl6
23:48 envi joined #perl6
23:50 [Coke] joined #perl6
23:50 ZaphrodZenovka joined #perl6
23:55 plobsing joined #perl6
23:55 [Coke] joined #perl6
23:57 ruz http://pastie.org/2457199
23:58 molaf_ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs