Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-06-21

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:00 PerlJam diakopter: well, don't take my word for it, wait for TimToady to wake up and tell you definitively  :)
00:01 diakopter PerlJam: or I guess I could take 30 min to find it in STD.pm
00:01 diakopter if it's there
00:01 PerlJam yeah, STD.pm is still unfleshed in a few places
00:05 cognominal_ PerlJam: that would make sense, but the examples in S05 don't support that thesis
00:06 PerlJam cognominal_: well, <? and <! guarantee zero-width, there's nothing that says a rule that starts with an alpha can't be.
00:07 wknight8111 joined #perl6
00:07 cognominal_ zero width but capturing. An interesting beast indeed. But that would desserve some explicite syntax.
00:07 diakopter cognominal_: http://perlcabal.org/syn/S05.html#line_1537
00:07 lambdabot Title: S05
00:13 cognominal_ bed time.
00:18 japhb joined #perl6
00:39 scrottie Tene, re: why get pugs running, at the risk of having an opinion (smelly), all of my experience with virtual machines tells me that Parrot is a foul beast. The idea with pugs was to rewrite perl 6 in pugs and make it self hosting; Larry actually started that. In the interest of not having parrot be a central building block (it's okay if it's a part... eggs in oen basket and all that), I wanted to see if I could help with that.
00:39 scrottie alright, with irssi, long lines just don't go through at all?
00:39 scrottie or am I lagged?  blargh.  not used to this beast.  used to irc-II, but mine has been coredumping lately.  i'm guessing that means it's out of date.
00:41 diakopter scrottie: we got the long msg
00:41 PerlJam scrottie: pugs fell down a bit in that in order to write a language in perl 6, you need a parser that parses perl 6; pugs punted on the parser.
00:42 diakopter PerlJam: I wasn't aware of that... i'm curious; explain more?
00:43 pbuetow joined #perl6
00:43 scrottie ooops.  typing doesn't knock irssi out of backscroll mode, apparently, and backscroll mode looks like regular mode.  hehe, I'm so stupid.
00:44 diakopter so very :P
00:44 zaphar_ps joined #perl6
00:45 allbery_b that's tjhe second person I've seen today who did that
00:45 diakopter scrottie: there are actually other attempts... smop/sm0p promises to reignite in early July when ruoso finishes his $project...  also there's the measly parser/interpreter I built and am actively working on
00:46 scrottie herding frickin' cats.  not only does every developer insist on a different version control system, no two people will commit on the same project.
00:46 diakopter well, there's also elf, which is a very fast implementation on Perl 5
00:47 scrottie really!
00:47 diakopter mncharity runs elf
00:47 scrottie what state is that in, and whose project is that?  (I'm guessing their name is more unique and more easily googled than the project name.)
00:47 allbery_b @larry wants multiple implementations
00:47 lambdabot Maybe you meant: arr yarr
00:48 diakopter elf is fairly complete, actually... I just can't read the code for the life of me or else I'd help out :)
00:48 scrottie allbery_b:  one person projects are okay; multiple people doing the same work in one person projects is okay; people being unrealistic about the scope of work and trying to do everything rather than a reusable piece is problematic.  not to judge ya'll.  just sayin'.
00:48 PerlJam diakopter: The idea for pugs (as I understood it), was to turn Parsec into Perl 6 parser, but no one ever quite got around to it.  But in the mean time, pugs ended up being a decent adhoc parser for parsing most of the "easy" perl 6 syntax
00:49 diakopter PerlJam: thx; I'll read up on Parsec
00:49 wknight8111 joined #perl6
00:49 diakopter scrottie: pmurias and moritz_ help out with elf
00:50 allbery_b scrottie: everyone has to redo the easy stuff in order to get to the hard stuff which everyone keeps running around on
00:50 scrottie hits for mncharity+elf are primarily on irc logs.  does anyone know that homepage, offhand?
00:50 diakopter dare I ask on which things rakudo will run around
00:50 diakopter scrottie: the homepage is the irc logs :)
00:50 scrottie allbery_b:  makes sense.
00:51 scrottie diakopter:  and the source code is in a shar archive that people email around?
00:51 diakopter scrottie: it doesn't have a homepage, I don't think... the source is in the pugscode svn, like every implementation but rakudo
00:51 scrottie neato!  so I already have it!
00:52 diakopter scrottie: there is also MP6/KP6, which is a (bootstrapped!) implementation in Perl 5... but apparently (I can't substantiate) it turned out to be quite slow... (probably not nearly as slow as yap6 will be).... fglock built that.
00:53 diakopter yap6 is my little toy bitbox
00:54 diakopter all it does is syntax check and tokenize at the moment.
00:55 simcop2387 joined #perl6
00:58 diakopter so anyway, in order of activity, it goes rakudo, STD5 (Larry's parser), elf, yap6, smop, kp6, pugs.... but smop will shortly be 2nd/3rd again, I'm sure.  in order of completeness, it goes  pugs, elf/rakudo (not sure on that order), kp6, smop, yap6 (probably shouldn't be on this list yet)... I'm sure I've left out something somewhere...
00:59 scrottie diakopter++
01:00 scrottie diakopter:  mind if I quote you extensively to use.perl.org?
01:00 diakopter scrottie: hrm
01:00 PerlJam diakopter: how exactly are you defining "completeness"?
01:00 diakopter PerlJam: in the usual hand-wavey way
01:00 PerlJam As Larry says,  each implementation has different areas of focus.
01:01 diakopter PerlJam: probably approximately to amount of work put in to-date...?
01:02 scrottie diakopter:  "I'd prefer not" is valid and acceptable.  But, imo, this is very good info.
01:02 diakopter scrottie: I don't mind, no... just let me know the url so I can post comments/clarifications if necessary :P
01:03 diakopter or retractions
01:03 diakopter :D
01:03 pasteling "scrottie" at 130.13.73.133 pasted "quoting" (24 lines, 1.7K) at http://sial.org/pbot/31366
01:03 scrottie that's my draft
01:04 scrottie not going to do too much with it... just log it as a personal blog.
01:04 scrottie feel free to edit and nopaste again.
01:04 pmichaud I thought that larry's tokenizer is in P5...?
01:05 diakopter Larry's program is more than a tokenizer.. it produces nested Match objects.. it's a full-fledged parser.. and yeah it runs on P5, and it's not in v6/ ; it's in src/perl6
01:05 diakopter scrottie: here's some more history on STD5
01:06 diakopter at one point TimToady had a program that would convert STD.pm to a dialect pugs could understand... but nowadays his script takes it all the way to Perl 5
01:06 scrottie diakopter:  this is the program he presented at YAPC::NA this year?  looked pretty p6 to me, with :stuff and whatnot.
01:06 diakopter STD.pm is in Perl 6
01:06 pmichaud what it parses is P6, yes.
01:06 pmichaud but the program itself is P5.
01:06 PerlJam uses Moose even
01:07 pmichaud by that reckoning, what rakudo and the parrot compiler tools parse is P6.  :-)
01:07 diakopter scrottie: what you saw on the screen was STD.pm, I'm pretty sure.
01:08 diakopter the Perl 6 standard grammar (slash parser generation instructions)
01:08 scrottie first line of Perl-6.0.0-STD.pm is: grammar Perl:ver<6.0.0.alpha>:auth<http://perl.org>;
01:09 scrottie I think he said something about this being marked .alpha, but in the p6 it parses, that's not legal.
01:09 pmichaud afaik, nothing actually runs STD.pm yet.
01:09 PerlJam not an unmodified STD.pm
01:09 diakopter scrottie: there shouldn't be a Perl-6.0.0-STD.pm
01:09 Auzon joined #perl6
01:09 scrottie I'm looking at pugs/src/perl6/Perl-6.0.0-STD.pm ... worng thing?
01:10 scrottie it looks awfully familiar...
01:10 pmichaud I don't see a Perl-6.0.0-STD.pm in the repo.  Just STD.pm .
01:10 pmichaud however, STD.pm does start with  grammar Perl:ver<6.0.0.alpha>:auth<http://perl.org>;
01:10 scrottie alright, I might have gotten something old by mistake.  where do I need to pull from?
01:11 diakopter http://www.perlcabal.org/svn/pugs/browse/src/perl6
01:11 lambdabot Title: browse: /pugs/src/perl6 (Rev: HEAD, via SVN::Web)
01:11 diakopter svn export/checkout http://svn.pugscode.org/pugs
01:11 lambdabot Title: Revision 20922: /
01:11 PerlJam http://svn.pugscode.org/pugs works as well
01:11 lambdabot Title: Revision 20922: /
01:11 pmichaud (I tend to browse through the url PerlJam just gave, fwiw.)
01:12 diakopter that's the one I gave too :P
01:12 pmichaud I'm not familiar with the "/browse/" component, though.
01:12 diakopter I sent two urls
01:13 diakopter the first is SVN::Web; second was the svn repo itself
01:13 pmichaud right.
01:13 pmichaud bbl.
01:15 * scrottie co's
01:15 scrottie diakopter, http://use.perl.org/~scrottie/journal/36739 ... I can make corrections directly too.
01:15 lambdabot Title: Journal of scrottie (4167)
01:16 rindolf Hi scrottie
01:16 rindolf scrottie: hi.
01:16 scrottie hi rindolf
01:16 rindolf scrottie: have you seen the fuss on use.perl.org about my "Closed books" essay?
01:16 scrottie rindolf, how do you fit into this neat little puzzle these people have created?
01:16 rindolf chromatic++
01:16 scrottie rindofl:  no, sounds boring.
01:16 rindolf scrottie: which one?
01:16 rindolf scrottie: which puzzle?
01:16 diakopter scrottie: the first two sentences are incorrect
01:18 scrottie alright, I'm still confused on that point.  why did he track down a working pugs to run it?
01:18 diakopter scrottie: also, another correction, STD.pm is *the* Perl 6 grammar; Larry's effort is separate from that - his effort is comprised of gimme5/Cursor5, which together produce STD5.pm from STD.pm
01:18 scrottie and I think I'm getting conflicting opinions on that here
01:19 diakopter scrottie: he didn't track down a working pugs to run it; he tracked down a working pugs to demo a Perl 6 feature
01:19 diakopter scrottie: re: conflicting opinions; no, no one's disagreed on these points
01:21 scrottie svn: REPORT request failed on '/pugs/!svn/vcc/default' ... svn: REPORT of '/pugs/!svn/vcc/default': Chunk delimiter was invalid (http://svn.pugscode.org)
01:21 lambdabot Title: Revision 20922: /
01:21 scrottie dammit.  this stuff is so confusing, svn can't even check it out =P
01:21 diakopter "Larry Wall, at YAPC, demo'd his Perl 6 tokenizer written in the perl 6 dialect spoken by pugs. That's v6/ in the pugs source code."  --> "Larry Wall, at YAPC, demo'd his Perl 6 parser (generated into Perl 5 from STD.pm (Perl 6) by gimme5/Cursor5). That's src/perl6/*5.* in the pugs source code."
01:23 diakopter src/perl6/metholate was the converter from Perl 6 to pugs-P6, but not updated in 4 months b/c that's not what Larry uses anymore
01:23 diakopter all I can suggest about the svn checkout problem is to try again, or to export instead of checkout
01:24 scrottie edited (thanks for corrections).
01:24 PerlJam scrottie: what version of svn are you using?
01:24 Auzon Note that elf, like many P6 implementations, is partially written in Perl 6.
01:24 scrottie 1.3.2 (r19776)
01:25 PerlJam you might want to try a newer svn
01:25 PerlJam (I was all set to give fitz and sussman grief about svn 1.5 at yapc but apparently it's actually out now :)
01:28 rindolf PerlJam: were they present there?
01:28 scrottie rindolf, re: puzzle, the puzzle formed by all of these projects.  how do you fit in to that?  in other words, what are you working on?
01:28 diakopter scrottie: to clarify further, Larry's programs require perl 5.10
01:28 rindolf scrottie: lots of stuff.
01:28 rindolf scrottie: CPAN modules.
01:28 rindolf scrottie: and some stuff in the perl5-core.
01:28 rindolf scrottie: and a bit on Parrot. (Very little).
01:28 scrottie rindof, neat, didn't know that about you.  I thought you just wrote essays that annoyed people ;)
01:29 rindolf scrottie: I'm here because of the discussion.
01:29 rindolf scrottie: nah.
01:29 rindolf scrottie: http://www.shlomifish.org/open-source/ - knock yourself out.
01:29 lambdabot Title: Open Source Software I wrote
01:30 scrottie okay, but you're not working on the perl 6 "puzzle" (my words)?  you're just here for the discussion?  everyone has CPAN modules.  only every other person has a perl 6 parser.
01:30 scrottie bleah
01:31 scrottie afk a bit, heading to the laundramat
01:31 scrottie laundromat
01:35 diakopter heh
01:36 scrottie but when I get there I'll get back online >=)
02:21 diakopter TimToady: typo at S03:175
02:24 diakopter TimToady: S03:220 has a trailing semicolon whereas the other examples don't
02:25 diakopter TimToady: inconsistent spacing at S05:1502
02:25 diakopter TimToady: spello at S05:2069
02:37 pugs_svnbot r20923 | pmichaud++ | S02-literals/autoref.t:  Fix rakudo skip message.
02:50 alester joined #perl6
02:52 diakopter TimToady: I assume postfix !meth has the same precedence as the other postfix method calls...?
02:52 diakopter pmichaud: or you.. ^^
02:55 rakudo_svn r28588 | pmichaud++ | [rakudo]:
02:55 rakudo_svn r28588 | pmichaud++ | * Update tools/test_summary.pl to summarize skipped tests.
02:55 pugs_svnbot r20924 | pmichaud++ | S04-statements/try.t:  Fix skip messages.
02:56 speckbot r14553 | pmichaud++ | typo fixes by diakopter++
02:57 speckbot r14554 | pmichaud++ | typo fixes by diakopter++
03:02 elmex_ joined #perl6
03:05 diakopter pmichaud: I don't know if you saw; I created this parametric regex/token/rule (template) function; I think it could actually be a neat language feature that could benefit Perl 6, too.
03:06 diakopter it's a pretty simple concept, but its implementation in Perl 5 was kindof heinous.
03:06 scrottie rindolf, you never send me a link to the page you're talking about, but instead a page that links to the page, and that page always serves to convince me that I don't want to go to that page after all.
03:07 pmichaud diakopter: hadn't seen it yet, no.  May take a look tomorrow.  :-)
03:07 pugs_svnbot r20925 | pmichaud++ | Fix typo in <radint>:  <?before :> should be <?before ':'> .
03:11 spinclad (ftr, larry didn't start pugs; autrijus ==> audreyt did.)
03:11 spinclad scrottie: ^
03:16 diakopter pmichaud: I'm just about done with the top-down portion of the Perl6in5::Grammar engine... now I'm working on the operator precedence engine/generators... I'm going to try to approach the capability of pge (but not the syntax, obviously) in those regards...
03:22 Auzon elf: say ''
03:22 p6eval OUTPUT[␤]
03:24 bacek joined #perl6
03:24 bacek rakudo: my ($a, $b); $a=42; say $a
03:24 p6eval rakudo r28589 OUTPUT[Scope  not found for PAST::Var '$a'␤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)␤
03:36 * diakopter adds 'use B::Generate;' to yap6; lol
03:38 pbuetow_ joined #perl6
03:44 s1n so is rakudo supposed to now be the main perl6 implementation?
03:45 diakopter s1n: it's the most active currently, by far...
03:46 diakopter s1n: here are some recent comments... http://use.perl.org/~scrottie/journal/36739
03:46 lambdabot Title: Journal of scrottie (4167)
03:49 s1n i was reading about the recent grant for the smop implementation
03:49 s1n i'd like to start playing with/on perl6, but i don't want to waste time on an implementation that gets neglected (pugs)
03:50 diakopter I'd look into rakudo if I were you, then
03:50 scrottie spinclad, yeah, I was just under the impression that his current work was based on top of it, and that people were still hacking on it (it = pugs)
03:51 diakopter it certainly has the most funding/cheerleaders/potential
03:51 s1n i was thinking of helping with getting some of the spectests working again in rakudo, but i'd be pissed if that went the way of pugs
03:52 diakopter s1n: the only way that would happen is if major design/implementation flaws/limitations were discovered in parrot that weren't reasonably insurmountable...
03:52 scrottie pugs at least had numerous backends, parrot being just one of them.  with pugs translated to perl6 to be made self-hosting (as was the.. er, a.. plan), it would be independant of VM.
03:53 diakopter s1n: but I sincerely doubt that's the case...
03:54 s1n what exactly was wrong with pugs that caused people to stop working on it?
03:54 diakopter nothing; its primary author/maintainer became otherwise occupied
03:55 diakopter but there is a multitude of people familiar with parrot/pge/pct/rakudo internals... plenty to survive such buses
03:55 s1n does rakudo have a similar structure (primary-developer-gets-hit-​by-bus-and-project-dies-too syndrome)?
03:56 s1n heh ok
03:56 diakopter s1n: no; there are lots... see #parrot on irc.perl.org
03:56 s1n what about the mention of elf?
03:56 alester joined #perl6
03:56 s1n it sounds complete, if it's complete, why has it not gotten any attention?
03:56 Auzon It's not complete.
03:57 Auzon elf: say 1 ~~ Int
03:57 p6eval OUTPUT[Can't call method "Str" on an undefined value at ./elf_f line 649.␤ at ./elf_f line 3854␤]
03:57 diakopter it's not complete..
03:57 Auzon elf: say [*] 1 .. 5
03:57 p6eval OUTPUT[Parse error in: /tmp/Da3FHqReLH␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say [*] 1 .. 5␤WHERE:/\<-- HERE␤  STD_red/prelude.rb:98:in `panic'␤  STD_red/std.rb:76:in `scan_unitstopper'␤  STD_red/std.rb:224:in `comp_unit'␤  STD_red/std.rb:210:in...
03:57 diakopter s1n: but it hasn't gotten much attention because no one has written/talked about it anywhere but on this irc channel
03:58 s1n does that make it inferior?
03:58 diakopter in terms of publicity, yeah... but not otherwise, of course.
03:59 diakopter a Perl 6 implementation is measured/defined by its handling of the official test suite
03:59 s1n the pugs suite?
04:00 Tene The pugs suite is gradually being organized better.  It's going to grow into the official test suite.
04:00 diakopter and, I suppose, also its cross-platform-ness.  and also, I suppose, the availability/free-ness of its dependencies.  and also, I suppose, which open-source license it's available under
04:01 s1n okay, we're making progress here. i now have a definition of a metric of an implementation and what will ultimately be the test suite.
04:01 Auzon s1n: From what I hear, the test suite is roughly 18000 tests.
04:01 s1n is rakudo more complete than elf? should i even spend time on any other implementation?
04:02 diakopter I can't make that explicit recommendation; after all, I have my own infantile implementation (that's primarily for my own amusement/education)... but if I weren't me, I'd recommend diving into rakudo/parrot
04:03 s1n okay, does the current test suite in pugs still need any work or is it pretty complete?
04:03 diakopter Auzon?
04:04 Auzon It'll always need work :)
04:04 Auzon I'm hoping to add 1000 tests by the end of the summer
04:04 Auzon A few tests are outdated.
04:05 Auzon More recent things are lacking, such as sameaccent.
04:05 Auzon But the test suite is further along than all the implementations combined, which is the goal
04:06 s1n okay great, that was what i needed to know
04:06 diakopter Larry estimates the test suite is 20-50% complete, I think...?
04:06 Auzon I heard the estimate of 40000 tests for 6.0.0 of the first implementation
04:06 s1n i'll probably start by hacking on learning the language, playing with the test suite, and then move into fixing stuff in rakudo
04:07 s1n lots of new perl6 features :)
04:07 Auzon s1n: If you're looking for untested areas on the suite, I've listed them in t/TASKS
04:07 diakopter s1n: rakudo is implemented in PIR and NQP (nearly Perl 6 syntax)
04:07 s1n Auzon: thanks
04:07 Auzon Some of them, at least.
04:08 diakopter s1n: do you want a commitbit?  (svn commit access)
04:08 s1n i tried doing the spectest and it just blew up on me (ended up running all night)
04:08 s1n to parrot?
04:08 Auzon Yeah, you can't run it.
04:08 diakopter no, to pugscode, where the test suite is
04:08 s1n diakopter: wouldn't hurt :)
04:08 diakopter /msg me your email address and desired username...
04:08 Auzon the pugs repo holds a lot of implementations as well, such as elf, yap6, smop, pugs...
04:09 Auzon And the test suite
04:09 diakopter and the standard grammar (STD.pm) and Larry's parser based on the standard grammar... :)
04:09 s1n hmm okay
04:09 Auzon It's pretty lacking for committing rules.
04:09 Auzon The Parrot repo is a lot stricter
04:10 * diakopter kicks jifty
04:10 s1n there seems to be a lack of documentation on getting a good dev. environment up and running, i read about feather, should i get an account there or just hack on it on my machine?
04:10 Auzon It depends on your goal
04:11 s1n what would be my goal if i used feather?
04:11 Auzon I'm a Google summer of code student, and my project is the test suite. Locally, I only have Rakudo running
04:12 s1n i have parrot svn compiled locally, i was going to just use that
04:12 diakopter there we go; jifty responded well to SIGHUP
04:12 Auzon Yeah, that's what I do. The rakudo_svn bot here announced commits to the Rakudo section of the Parrot repo
04:13 s1n okay, but the test suite is through pugscode, so i guess i should check that out too
04:13 diakopter s1n: invitation sent
04:15 s1n diakopter: thanks for that
04:15 diakopter s1n: generally to get commit access to parrot/rakudo, you become known as a reliable submitter of good (working) patches... then you get invited; then you sign a form regarding IP...
04:15 s1n i'll probably start slowly, maybe a handful of minutes a night :)
04:15 diakopter but apparently at some point rakudo will get its own repository/home somewhere
04:15 Auzon s1n: My setup has a few repos checked out. I have the Pugs repo (for the test suite), the Parrot repo (for Rakudo), and the synopsis repo checked out (for searching the synopses).
04:15 diakopter since parrot eventually won't be released with all the HLLs (high level languages)
04:16 Auzon s1n: If you just want to run the test suite with Rakudo, there's a target for make in languages/perl6 that does it.
04:16 s1n diakopter: okay, so you just gave me commitbit to pugscode, which i'll use for the test suite, right?
04:17 diakopter s1n: yep
04:17 s1n Auzon: yeah i was playing with that
04:17 Auzon If you want to hack on the test suite, then you'll want a setup kinda like mine
04:17 diakopter or starting your own implementation ;)
04:17 diakopter scrottie: ^
04:17 s1n diakopter: heh don't have time for that, like Auzon, i'm a student
04:17 diakopter ha; students have more time than anybody...
04:18 s1n i work full time and part-time gradschool
04:18 diakopter ok, then :D
04:18 diakopter students *who don't work fulltime* ... :)
04:18 Auzon s1n: There's also syntax highlighting for vim and presumably emacs in the pugs repo
04:18 diakopter s1n: what OS do you use
04:18 s1n mainly, i want perl6 because i want to be able to try and convince my boss to switch our dated perl5 junk to perl6 :)
04:19 s1n gentoo ~amd64
04:19 Auzon mmm, that's a ways off yet
04:19 s1n yeah, but the more i help, the closer it gets
04:19 cj s1n: hey, perl5's not so bad
04:19 diakopter s1n: that's a great attitude; you'll go far.
04:19 s1n cj: no, i love it, but perl6 makes my mouth water
04:20 Auzon Oh, don't forget the redsix implementation :P
04:20 diakopter oh! I knew I'd left something out...
04:20 Auzon Don't bother with it though
04:20 Auzon I don't know of anything it does better than elf or rakudo
04:21 s1n i was reading about mixins in perl6 and on the rakudo blog and my heart started beating fast, then i read about generics and it was too much to handle
04:21 Auzon s1n: Have you seen the evalbot in here?
04:21 s1n Auzon: i've seen people use it
04:21 s1n impl: code
04:21 Auzon Yeah. I do a lot of testing with that, actually.
04:21 s1n rakudo: say "Hello World"
04:21 p6eval rakudo r28591 OUTPUT[Hello World␤]
04:22 Auzon You can also privmsg it if you don't want to flood the channel or something
04:22 diakopter rakudo: 'Hello Cosmos'
04:22 p6eval rakudo r28591 RESULT["Hello Cosmos"]
04:22 Auzon p6eval is a very easy way to play with Pugs and KP6, too.
04:23 s1n okay, i'll have to set up my environment tomorrow, thanks for everything guys
04:23 japhb joined #perl6
04:23 Auzon OK. I'm available to lend a hand if you want.
04:23 s1n i gotta get up a the butt-crack of dawn tomorrow to go run then work some ot
04:23 Auzon I suggest getting elf and rakudo running, as they're pretty easy
04:23 s1n Auzon: thanks
04:23 s1n Auzon: i have rakudo working now
04:24 cj what is rakudo?
04:24 Auzon elf is just Perl 5.10, Ruby 1.9 and some Perl modules
04:24 Auzon cj: Rakudo is Perl 6 on Parrot
04:24 cj ah.  it's got a name now, eh?
04:24 Auzon elf: say $?PERLVER
04:24 cj when did that happen?
04:24 p6eval OUTPUT[elf / perl 5.8.8 / EmitSimpleP5␤]
04:24 diakopter cj: www.rakudo.org
04:24 Auzon elf also runs on Perl 5.8.8 too, but it's slower.
04:24 Auzon not much though
04:24 cj elf must be perl6 on perl5
04:25 diakopter one of the 3-4
04:25 s1n im out, thanks for the deets and help
04:25 Auzon cj: Yes. It uses STD_red (Ruby translation of STD.pm) for the AST, I think
04:25 Auzon see you, s1n
04:26 scrottie oh, then there's elf_on_rakudo.
04:26 Auzon and elf on smop, and kp6 on smop, and... :P
04:27 scrottie you guys are f'n nuts.
04:27 Auzon I swear, I learn about a new P6 implementation every few days
04:27 diakopter or at least target permutation
04:27 Auzon scrottie: Well, if you have an implementation of P6 written in P6, a good test for both would be to run it on another P6 implementation.
04:28 Auzon and it might help with bootstrapping.
04:28 diakopter lol
04:29 diakopter "if you have a bootstrapped Perl 6, it might help with bootstrapping to run it on a non-bootstrapped Perl 6"...?
04:29 scrottie ... and elf uses STD_red... the _Ruby_ translation of STD.pm?  Is there logic in there somewhere?
04:29 diakopter scrottie: yes b/c redsix did a good job parsing STD(_old).pm I think
04:29 Auzon scrottie: Apparently it works. Elf is pretty fast and complete for how little time it's around.
04:30 Auzon Is STD_red hand or machine translated?
04:31 scrottie ... it hasn't been around long, and it already has several implementations (elf_a, elf_b, elf_c, ... elf_f)...?
04:32 Auzon 2008-03-20 is the first commit
04:33 diakopter Auzon: well, maybe yap6 can replace its parser...
04:33 scrottie attempting (and failing) to think, outloud.  they *immediately* bootstrapped themselves by rewritting the parser into the language they parsed...?  props there.  neato.
04:33 Auzon scrottie: elf_a was pure P5. Then elf_b was written in P6 that elf_a could understand. Then elf_b was hacked on, and then made into elf_c when a milestone happened.
04:33 diakopter I mean, who am I kidding that I can write my own runtime/object model
04:34 Auzon and so on with each milestone for elf_c .. elf_f
04:34 scrottie Auzon:  neat!
04:34 diakopter scrottie: want a commit bit?
04:34 scrottie um... I might have one.  how would I know?
04:34 Auzon It's probably a bit more complicated, but it's awesome for only 3 months and fast for P5
04:35 Auzon scrottie: http://commitbit.pugscode.org/ and login
04:35 lambdabot Title: Welcome to CommitBit for PugsCode
04:35 diakopter scrottie: email address?
04:35 Auzon or ask diakopter.
04:35 scrottie scott@slowass.net
04:35 diakopter nope
04:35 diakopter invitation sent
04:36 scrottie ahhh.  audreyt was slinging them when I was around, long ago, but apparently missed me.
04:37 bacek pugs: my ($a,$b); $a=42; say $a;
04:37 diakopter Auzon: I think we have new 365-day record for irclog length for the past 24 hours...
04:37 p6eval OUTPUT[42␤]
04:38 Auzon diakopter: I've noticed that IRC has been a lot more active this spring/summer than last winter
04:38 Auzon Hopefully it's a sign of more P6 momentum.
04:39 diakopter scrottie: why doesn't your article appear on use.perl.org recent post list
04:42 Auzon diakopter: Are you aiming for a general purpose P6 parser now with yap6?
04:42 diakopter Auzon: yeah... well actually, as flexible as pge, hopefully
04:42 diakopter just not its syntax
04:49 diakopter Auzon: do you have any thoughts on that?
04:50 Auzon I don't know PGE well enough to comment about comparison of PGE and yap6.
04:50 diakopter PGE basically has nearly-Perl 6 rule/token/regex declaration syntax
04:51 diakopter just not all the features
04:51 diakopter but lots
04:51 Auzon I'm interested a way to check if P6 is valid for personal selfish reasons, since it would catch typos and other things easily
04:53 Auzon Depending on the output of such a parser, I could find a few uses for it in code unrelated to P6 development
04:53 diakopter interesting
04:54 Auzon But this all supposes that a parser is orders of magnitude easier to write than the corresponding implementation
04:55 Auzon Replacing STD_red in elf and perhaps other implementations could be beneficial too
04:56 Auzon If it does what I think it does, I could adjust the smartlinks tool to provide accurate syntax highlighting for the synopses.
04:56 diakopter ooo
04:56 diakopter ha
04:56 diakopter even for STD.pm's gradual grammar... ;)
05:05 scrottie diakopter:  I thought I saw the article there... sudden mass posting immediately afterwards?  dunno
05:14 Psyche^ joined #perl6
05:47 a-jing joined #perl6
05:47 a-jing left #perl6
05:49 njm joined #perl6
05:54 bacek pugs: my $a; my $a; $a=42; say $a
05:54 p6eval OUTPUT[42␤]
05:54 bacek pugs: my $a; $a=42; my $a; say $a
05:54 p6eval OUTPUT[42␤]
06:01 xinming joined #perl6
06:05 scrottie here yak, yak, yak... I won't hurt you... nevermind this knife... it's just a razor blade...
06:37 Alias_ joined #perl6
06:40 hcchien joined #perl6
06:40 r0bby joined #perl6
06:40 ilogger2 joined #perl6
06:40 scrottie joined #perl6
06:40 Eevee joined #perl6
06:40 meteorjay joined #perl6
06:40 Helios` joined #perl6
06:40 baest joined #perl6
06:40 integral joined #perl6
06:40 orafu joined #perl6
06:42 Jedai joined #perl6
06:53 Patterner occam's?
07:23 iblechbot joined #perl6
07:24 Alias__ joined #perl6
07:37 cornelius_ joined #perl6
07:57 xinming joined #perl6
08:01 barney joined #perl6
08:15 r0bby joined #perl6
08:15 ilogger2 joined #perl6
08:15 scrottie joined #perl6
08:15 Eevee joined #perl6
08:15 meteorjay joined #perl6
08:15 Helios` joined #perl6
08:15 baest joined #perl6
08:15 integral joined #perl6
08:15 orafu joined #perl6
08:36 masak joined #perl6
09:00 agentzh joined #perl6
09:31 ruoso joined #perl6
09:41 redicaps joined #perl6
10:15 pugs_svnbot r20926 | masak++ | corrected a few grammatical errors
10:16 masak can I do `next` in a sub called from within a for loop?
10:22 wknight8111 joined #perl6
10:26 meppl joined #perl6
10:33 Jedai joined #perl6
10:49 a-jing joined #perl6
10:49 a-jing left #perl6
10:50 BinGOs joined #perl6
11:01 iblechbot joined #perl6
11:33 alanhaggai joined #perl6
11:39 Harleaquin joined #perl6
11:56 Coleoid left #perl6
12:22 alanhaggai joined #perl6
12:52 alanhaggai joined #perl6
13:26 pbuetow joined #perl6
13:52 xinming_ joined #perl6
13:55 ruoso joined #perl6
14:12 rakudo_svn r28594 | pmichaud++ | [rakudo]:
14:12 rakudo_svn r28594 | pmichaud++ | * Update spectest-progress
14:12 rakudo_svn r28594 | pmichaud++ | * 65 files, 794 passing tests
14:17 rakudo_svn r28595 | pmichaud++ | [rakudo]:
14:17 rakudo_svn r28595 | pmichaud++ | * Update README.
14:35 alanhaggai joined #perl6
14:44 iblechbot joined #perl6
14:50 pugs_svnbot r20927 | pmichaud++ | Add some tests for statement termination and empty statements
14:50 pugs_svnbot r20927 | pmichaud++ | (contributed by Ronald Schmidt)
14:52 Limbic_Region joined #perl6
14:55 rakudo_svn r28596 | pmichaud++ | [rakudo]:
14:55 rakudo_svn r28596 | pmichaud++ | * Set svn:ignore properties on src/ops .
14:56 rakudo_svn r28597 | pmichaud++ | [rakudo]:
14:56 rakudo_svn r28597 | pmichaud++ | * Handle empty statements (RT#55594)
14:56 rakudo_svn r28597 | pmichaud++ | * Patch courtesy Ronald Schmidt <ronaldxs@software-path.com>
15:05 rakudo_svn r28598 | pmichaud++ | [rakudo]:
15:05 rakudo_svn r28598 | pmichaud++ | * Allow 'make spectest_regression' to work even when "svn up" fails on t/spec.
15:05 rakudo_svn r28598 | pmichaud++ | * RT#56050 patch courtesy Deven T. Corzine <deven@twist.ties.org>
15:15 Alias_ joined #perl6
15:17 rakudo_svn r28599 | pmichaud++ | [rakudo]:
15:17 rakudo_svn r28599 | pmichaud++ | * Add chop.t and remove comb.t from spectest_regression (RT#56068, moritz++)
15:17 rakudo_svn r28599 | pmichaud++ | * Patch courtesy Moritz Lenz <moritz@casella.verplant.org>
15:24 pugs_svnbot r20928 | pmichaud++ | Test suite TASKS: Conflict between S29 and rand.t
15:33 masak I have GHC 6.8.3. what's my best chance of compiling a pugs binary?
15:34 audreyt masak: install Cabal 1.4.0.1 and cabal-install 0.5.1 from hackage
15:34 audreyt (which will in turn need zlib and HTTP)
15:35 audreyt and then see if "cabal update ; cabal install pugs-compat" works
15:35 audreyt if it works, "cabal install Pugs" will work.
15:35 masak audreyt: thank you
15:35 audreyt where "will" means, like, 20 hours from now.
15:35 masak I found the hackage page
15:36 masak let's see if I can figure out how to install things...
15:36 audreyt let cabal-install handle it for you
15:36 masak audreyt: ok, looking for Cabal
15:36 audreyt I'm not yet done with partitioning pugs (7 parts so far, about 5 to go)
15:37 audreyt but the parts already on hackage should build cleanly.
15:37 masak audreyt: you're working on pugs? that's good news
15:37 masak audreyt++
15:37 audreyt I'm not... I'm just partitioning it :)
15:37 diakopter audreyt: wow.  talk about JIT - Sat Jun 21 08:15:21 PDT 2008 AudreyTang pugs-compat 0.0.1
15:38 audreyt :)
15:38 audreyt don't have any expectations though. this is just me cannibalizing parts of pugs for $job projects :)
15:39 diakopter expectations-- while expectations
15:39 audreyt the few pugs-related code I'm coding won't make any sense until 5.ghc 6.10.
15:40 masak what happens then?
15:40 diakopter masak: expectations-- while expectations :P
15:41 masak diakopter: righty-ho.
15:43 diakopter cool... http://hackage.haskell.org/packag​es/archive/pkg-list.html#cat:Pugs
15:43 lambdabot http://tinyurl.com/yqov7f
15:44 masak where do I get HTTP and zlib?
15:45 masak nvm, found http://www.haskell.org/http/
15:45 lambdabot Title: Haskell HTTP package
15:45 diakopter masak: cabal install http
15:45 diakopter I think
15:46 masak diakopter: well, I'm building cabal-install, so...
15:46 diakopter oh; heh
15:46 diakopter sorry
15:46 masak but thanks
15:46 * diakopter tries the same exercise
15:51 * Limbic_Region rubs his eyes and sees audreyt speaking and thinks he must be dreaming
15:52 diakopter Limbic_Region: you're dreaming; go back to sleep ;)
15:52 diakopter Limbic_Region: btw, I'm sorry I didn't introduce myself at yapc :/
15:52 Limbic_Region no worries
15:52 Limbic_Region I did meet lots of people
15:53 Limbic_Region I am hoping to meet a lot more next year - since it will be relatively close
15:54 diakopter Pitt's Borough
15:54 Limbic_Region yeah, it is a 4 hour drive from here
15:54 Limbic_Region and Jean should be driving by then
15:54 Limbic_Region so I should be able to be there for pre and post activities
15:56 * Limbic_Region is going to upload YAPC photos tonight as well as one more blog post on all the people he met
15:58 masak audreyt: pugs-compat landed just fine. crossing fingers for 20 hours
15:58 audreyt masak: cool thanks!
16:15 yath hum
16:15 yath i'm just trying to build pugs on debian and get http://paste.debian.net/7081/
16:15 yath am i missing something?
16:16 TimToady audreyt++ for learning hard lessons on Sustainability :)
16:26 sri_work joined #perl6
16:34 fridim joined #perl6
16:36 fridim hi
16:36 fridim There is a dead link on pugscode.org :   wiki  ->  http://rakudo.org/perl6/
16:37 diakopter fridim: if you'd like, you can fix it... :) you just need a commitbit for pugscode svn
16:39 diakopter otherwise I'll fix it...  it should point to http://perlfoundation.org/perl6
16:39 lambdabot Title: Perl 6 / Perl 6
16:39 Auzon I'll get it :)
16:41 pmichaud fridim++  # reporting broken links
16:41 pugs_svnbot r20929 | Auzon++ | [pugscode.org] fixed bad URL
16:41 Auzon Yes, fridim++
16:42 pmichaud Auzon++ # fixing broken links
16:44 kanru joined #perl6
16:57 stevan_ joined #perl6
17:20 * diakopter runs cabal install pugs-compat
17:21 diakopter audreyt: if I muck around in pugs' parser... how conflicted will I be when I merge in your (eventual) commit(s)..?
17:24 hanekomu joined #perl6
17:47 alanhaggai_ joined #perl6
17:48 Jedai joined #perl6
18:02 lichtkind joined #perl6
18:09 sri_work_ joined #perl6
18:10 polettix joined #perl6
18:18 Khisanth joined #perl6
18:23 explorer joined #perl6
18:26 pugs_svnbot r20930 | pmichaud++ | S04-statements/try.t:  Link #?rakudo skip to RT#56184.
18:30 pugs_svnbot r20931 | pmichaud++ | S29-num/roots.t:  update error message, avoid needless eval.
18:30 pugs_svnbot r20932 | pmichaud++ | S29-num/exp.t: correct skip message for rakudo
18:33 lichtkind expression in if statement is evaled into bool scalar  context?
18:34 spinclad lichtkind, sounds right
18:34 alanhaggai__ joined #perl6
18:39 lichtkind_ joined #perl6
18:41 lichtkind_ spinclad: thought too but a phrase in syn 4 irritates me
18:51 Auzon perl6: say list().WHAT
18:51 p6eval kp6 r20932: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤
18:51 p6eval ..pugs: OUTPUT[Array␤]
18:51 p6eval ..rakudo r28599: OUTPUT[List␤]
18:51 p6eval ..elf r20932: OUTPUT[Undefined subroutine &GLOBAL::list called at (eval 117) line 3.␤ at ./elf_f line 3854␤]
18:51 Auzon perl6: say list().WHAT ~~ List
18:51 p6eval kp6 r20932: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤
18:51 p6eval ..pugs: OUTPUT[1␤]
18:51 p6eval ..rakudo r28599: OUTPUT[1␤]
18:51 p6eval ..elf r20932: OUTPUT[Undefined subroutine &GLOBAL::list called at (eval 121) line 3.␤ at ./elf_f line 3854␤]
19:11 Auzon perl6: my $a = 5; say list($a).perl; say list($a) == $a;
19:11 p6eval kp6 r20932: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤
19:11 p6eval ..pugs: OUTPUT[\5␤5␤]
19:11 p6eval ..rakudo r28599: OUTPUT[[5]␤0␤]
19:11 p6eval ..elf r20932: OUTPUT[Undefined subroutine &GLOBAL::list called at (eval 121) line 4.␤ at ./elf_f line 3854␤]
19:13 Auzon perl6: my $a = 5; say list($a) ~~ $a
19:13 p6eval kp6 r20932: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤
19:13 p6eval ..pugs: OUTPUT[5␤]
19:13 p6eval ..rakudo r28599: OUTPUT[0␤]
19:13 p6eval ..elf r20932: OUTPUT[Undefined subroutine &GLOBAL::list called at (eval 121) line 4.␤ at ./elf_f line 3854␤]
19:15 Auzon perl6: say ''.defined
19:15 p6eval kp6 r20932: OUTPUT[1␤]
19:15 p6eval ..pugs: OUTPUT[1␤]
19:15 p6eval ..rakudo r28600: OUTPUT[Method 'defined' not found for invocant of class 'Perl6Str'␤current instr.: '_block11' pc 31 (EVAL_13:17)␤
19:15 p6eval ..elf r20932: OUTPUT[Can't call method "defined" without a package or object reference at (eval 115) line 3.␤ at ./elf_f line 3854␤]
19:15 Auzon perl6: say undef.defined
19:15 p6eval kp6 r20932: OUTPUT[DISPATCH: calling defined on invalid object:$VAR1 = undef;␤␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 128␤     main::DISPATCH('undef', 'defined') called at - line 11␤]
19:15 p6eval ..pugs: OUTPUT[␤]
19:15 p6eval ..rakudo r28600: OUTPUT[Method 'defined' not found for invocant of class 'Failure'␤current instr.: '_block11' pc 37 (EVAL_13:17)␤
19:15 p6eval ..elf r20932: OUTPUT[Can't call method "defined" on an undefined value at (eval 117) line 3.␤ at ./elf_f line 3854␤]
19:30 smtms joined #perl6
19:30 smokemachine joined #perl6
19:31 Auzon perl6: say list(5) == (5,)
19:31 p6eval kp6 r20932: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/Ki​ndaPerl6/Runtime/Perl5/MOP.pm line 345␤
19:31 p6eval ..pugs: OUTPUT[␤]
19:31 p6eval ..rakudo r28601: OUTPUT[1␤]
19:31 p6eval ..elf r20932: OUTPUT[Undefined subroutine &GLOBAL::list called at (eval 117) line 3.␤ at ./elf_f line 3854␤]
19:38 xinming joined #perl6
19:50 cognominal_ joined #perl6
19:50 Auzon rakudo: ;
19:50 p6eval rakudo r28602 RESULT[Null PMC access in find_method()␤current instr.: '_block11' pc 38 (EVAL_13:18)␤
19:50 Auzon rakudo:;
19:52 pmichaud that's odd.
19:52 Auzon Which one?
19:52 pmichaud $ ./parrot perl6.pbc -e ';'
19:52 pmichaud $
19:53 Auzon The second one might not match evalbot's pattern
19:53 pmichaud right, but simply sending rakudo a semicolon shouldn't result in the find_method error.
19:53 Auzon odd
19:53 pmichaud i.e., it should work.  It works in my version of rakudo.
19:54 Auzon If it was a recent Parrot change, it may not be rebuilt yet
19:54 pmichaud shouldn't require a Parrot change, though.
19:54 Auzon odd
19:54 Auzon oh
19:54 Auzon Evalbot was probably wrapping it weirdly
19:56 Auzon It wraps it with this is there is no output to STDOUT: '( ( do { ' . $program . "\n} ).perl ).print"
19:57 pmichaud ah, and we can't find the .perl method on a non-existent object.
19:57 pmichaud since  { ; }  doesn't actually return anything.
19:58 Auzon right. (do {;}).perl is enough
20:04 Alias_ joined #perl6
20:08 Auzon rakudo: say @(1,2)
20:08 p6eval rakudo r28602 OUTPUT[12␤]
20:08 Auzon rakudo: say 1,2 Z 3,4
20:08 p6eval rakudo r28602 OUTPUT[132 4␤]
20:08 Auzon rakudo: say @(1,2 Z 3,4)
20:08 p6eval rakudo r28602 OUTPUT[132 4␤]
20:08 Auzon rakudo: say @((1,2) Z (3,4))
20:09 p6eval rakudo r28602 OUTPUT[132 4␤]
20:09 Auzon rakudo: say @((1,2) Z (3,4)).perl
20:09 p6eval rakudo r28602 OUTPUT[[1, 3, [2, 4]]␤]
20:09 Auzon that's weird
20:09 Auzon rakudo: ((1,2) Z (3,4)).perl.say
20:09 p6eval rakudo r28602 OUTPUT[[1, 3, [2, 4]]␤]
20:10 Auzon rkaudo: item(1,2).perl.say
20:11 Auzon rakudo: item(1,2).perl.say
20:11 p6eval rakudo r28606 OUTPUT[Could not find non-existent sub item␤current instr.: '_block11' pc 35 (EVAL_12:19)␤
20:11 ruoso joined #perl6
20:11 Auzon rakudo: item(1).perl.say
20:11 p6eval rakudo r28606 OUTPUT[Could not find non-existent sub item␤current instr.: '_block11' pc 28 (EVAL_12:17)␤
20:13 Auzon rakudo: $(1).say
20:13 p6eval rakudo r28606 OUTPUT[1␤]
20:13 Auzon rakudo: $(1,2).say
20:13 p6eval rakudo r28606 OUTPUT[1 2␤]
20:14 Auzon There might be some low hanging fruit with getting item() working here.
20:23 Auzon rakudo: say @@ 1
20:23 p6eval rakudo r28607 OUTPUT[Statement not terminated properly at line 1, near "@@ 1"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤
20:23 Auzon rakudo: say @@(1)
20:23 p6eval rakudo r28607 OUTPUT[Statement not terminated properly at line 1, near "@@(1)"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤
20:24 pmichaud there's a problem with ZIP.
20:24 pmichaud getting item() to work should be no problem.
20:24 Auzon rakudo: list(1,2 X 3,4).perl
20:24 p6eval rakudo r28607 RESULT["[1, 3, 1, 4, 2, 3, [2, 4]]"]
20:24 pmichaud same with X
20:24 pmichaud I don't know who implemented those, but they're seriously broken.
20:26 Auzon I'll fudge them, then. Presumably, Rakudo will be able to run the new file I'm making
20:28 Auzon rakudo: say (% 1,2).perl
20:29 p6eval rakudo r28608 OUTPUT[Statement not terminated properly at line 1, near "(% 1,2).pe"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤
20:29 Auzon rakudo: say (%(1,2)).perl
20:29 p6eval rakudo r28608 OUTPUT[{"1" => 2}␤]
20:29 Auzon rakudo: say (hash(1,2)).perl
20:29 p6eval rakudo r28608 OUTPUT[{"1" => 2}␤]
20:29 pmichaud I'm a little surprised that %(1,2) worked.  :-)
20:29 Auzon Me too.
20:30 pmichaud rakudo:  say %(1,2).WHAT;
20:30 p6eval rakudo r28608 OUTPUT[Hash␤]
20:30 Auzon I am finding quite a few things that are untested that work in Rakudo, which is always nice
20:30 pmichaud what should   item()   return?
20:31 Auzon item() and $() should be exactly the same.
20:31 pmichaud so item() would return $/.item() ?
20:32 pmichaud that seems, weird.
20:32 pmichaud by that argument   list() and @() should be the same, so   list() should return $/.list ?
20:32 Auzon "To force a non-flattening item context, use the "item" operator."
20:32 pmichaud oh, so item is really prefix:item, then?
20:33 Auzon Yeah, sorry, I just had to keep parens for proper precedence in my tests
20:33 Auzon I think it's prefix anyway.
20:33 jhorwitz joined #perl6
20:34 pmichaud item $a, $b  would be the same as   item($a), $b  and not  item($a,$b)  then?
20:34 Auzon scroll down until you see 'the item contextualizer' :  http://perlcabal.org/syn/S03​.html#List_prefix_precedence
20:34 lambdabot Title: S03
20:35 Auzon the 'Sigils as contextualizer listops' section is also good
20:35 pmichaud yes, but we also have in S05:  $() is a shorthand for $($/).
20:35 pmichaud and
20:36 pmichaud Use @() as a shorthand for @($/) to flatten the positional captures under list context.
20:36 pmichaud so I'm pretty sure that list() is not _exactly_ equivalent to @()
20:36 pmichaud (although list(...) would be equivalent to @(...) )
20:36 Auzon S03 says that the item contextualizer is 'equivalent to $()'
20:37 pmichaud I know that.
20:37 pmichaud I'm saying that S03 is likely imprecise there.
20:37 pmichaud because S03 also says that list() is equivalent to @()
20:37 Auzon Oh, ok.
20:37 pmichaud and S05 says that @() is a shorthand for @($/)
20:37 pmichaud which would mean that list() is a shorthand for @($/)
20:37 pmichaud and I'm pretty sure that's not what is intended.
20:40 pmichaud (and leaves unanswered the question of "what should item() return?")
20:41 pmichaud I'm going to guess that item() returns an empty Array for now.
20:42 Auzon Sounds just as good as anything else.
20:43 rindolf joined #perl6
20:43 rindolf Hello good people! Fine Sabbath to you.
20:44 Auzon Hi rindolf.
20:44 rindolf Hi Auzon
20:44 pmichaud $ ./parrot perl6.pbc
20:44 pmichaud > say item(3).WHAT;
20:44 pmichaud Int
20:44 pmichaud > say item(3,4).WHAT;
20:44 pmichaud Array
20:44 lambdabot Parse error at ";" (column 17)
20:44 lambdabot Parse error at ";" (column 19)
20:44 pmichaud > say item().WHAT;
20:44 lambdabot Parse error at ";" (column 16)
20:45 pmichaud Array
20:45 pmichaud >
20:46 pmichaud Auzon: shall I send a message to p6l for clarification of list(), item(), etc.?
20:49 Auzon That'd be nice
20:51 Auzon rakudo: hash(1).perl.say
20:51 p6eval rakudo r28610 OUTPUT[Odd number of elements found where hash expected␤current instr.: 'parrot;List;hash' pc 2120 (src/gen_builtins.pir:1553)␤
20:52 pmichaud can't create a hash from a list of one element.
20:52 pmichaud pugs: hash(1).perl.say
20:52 p6eval OUTPUT[*** Odd number of elements found where hash expected: VList [VInt 1]␤    at /tmp/FT0j0JEEK5 line 1, column 1 - line 2, column 1␤]
20:52 Auzon Right, that's what I'm testing
20:52 pmichaud okay. :-)
20:56 Auzon rakudo: (@ 1).WHAT.say
20:56 p6eval rakudo r28610 OUTPUT[Syntax error at line 1, near "(@ 1).WHAT"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤
20:56 pmichaud rakudo doesn't know prefix:@ yet.
20:56 Auzon rakudo: (@ 1,2).WHAT.say
20:56 p6eval rakudo r28610 OUTPUT[Syntax error at line 1, near "(@ 1,2).WH"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤
20:56 Auzon rakudo: (@(1,2)).WHAT.say
20:56 p6eval rakudo r28610 OUTPUT[List␤]
20:57 Auzon It should work either way, from what I can tell
20:57 pmichaud prefix:<@> is parsed differently from circumfix:<@( )>
20:59 pmichaud oops
20:59 pmichaud it's term:sigil
20:59 rindolf left #perl6
20:59 pmichaud still, they're parsed differently.  :-)
21:00 pmichaud (which is why rakudo supports one and not the other thus far :-)
21:01 Auzon How hard is it to support the other version? Is it just a matter of adding a rule somewhere, or is it more complicated than that?
21:01 rakudo_svn r28611 | pmichaud++ | [rakudo]:
21:01 rakudo_svn r28611 | pmichaud++ | * Fix trailing space problem in src/parser/actions.pm .
21:01 pmichaud at the moment it's a little more complicated, because it's a little difficult to get term:<something> parsing correctly.
21:02 pmichaud that's one of my "planned to do this weekend" items.
21:02 Auzon Why is @(values) parsed as a circumfix instead of a term:sigil in front of some parenthesized values?
21:03 rakudo_svn r28612 | pmichaud++ | [rakudo]:
21:03 rakudo_svn r28612 | pmichaud++ | * Add item() function.
21:03 diakopter pmurias++ # making the yap6 parser combinators even more lazily created
21:03 pmichaud I don't know the reason off-hand, but I'm sure there probably is one.
21:05 pmichaud afk # lunch
21:05 Auzon Thanks for item by the way.
21:18 Alias__ joined #perl6
21:33 diakopter rakudo: sub say { undef.say }; say();
21:33 p6eval rakudo r28612 OUTPUT[[oops; continuation 0xb76b03e0 of type 21 is trying to jump from runloop 1429 to runloop 98]␤[oops; continuation 0xb76b09c8 of type 21 is trying to jump from runloop 1429 to runloop 98]␤[oops; continuation 0xb76b0fb0 of type 21 is trying to jump from runloop 1429 to runloop
21:33 p6eval ..98]␤[...
21:34 * diakopter guffaws, but only briefly
21:38 diakopter omg
21:45 diakopter rakudo: my $a = sub { 3.say }; $a();
21:45 p6eval rakudo r28615 OUTPUT[3␤]
22:05 simcop2387 joined #perl6
22:07 simcop2387 joined #perl6
22:14 pmichaud pugs:  sub foo {};   say foo().WHAT;
22:14 p6eval OUTPUT[Scalar␤]
22:14 pugs_svnbot r20933 | diakopter++ | [yap6] generalized the lambda-rule parser combinator generator, so lrule is now just rule.  speedups ensue.
22:14 pugs_svnbot r20933 | diakopter++ | Any rule can now serve as a meta-rule constructor, which paves the way for token() & regex() rule generators...
22:14 diakopter note this hilarity... ;)   no warnings qw{ reserved closure recursion };
22:15 diakopter wait, sorry, it's   no warnings qw{ reserved closure recursion prototype };
22:17 diakopter to explain line 2 of that commit message...
22:21 diakopter your components of a :ratchet (match a.m.a.p.) pattern or a regex pattern would be passed into the regex() constructor, which takes the component rules as parameters and applies the appropriate whitespace or chaining rules.
22:21 diakopter TimToady: any thoughts on this idea of a rule template?
22:25 diakopter another application of this abstraction would be the creation of sublanguages, such as quoted spans.  the items that behave differently in quote context would be the only items needing to be substituted in the patterns in which they appear... the rest of the rules can remain as-is.  Another application would be the detection of a balanced *something* within a single pattern, which would serve as a good replacement/equivalent for backreferences.
22:29 diakopter ..and for parametrized n-ary pattern constructors, you just add 'shift;' at the front of the rule if you don't want it to be head-call...
22:30 diakopter (and use map({something},@_)
22:30 diakopter )
22:32 meppl joined #perl6
22:37 rakudo_svn r28616 | pmichaud++ | [rakudo]:
22:37 rakudo_svn r28616 | pmichaud++ | * Update rakudo's grammar with various changes to STD.pm .
22:51 simcop2387 joined #perl6
23:00 diakopter .oO( ...another application of the parametric/templated patterns would be the opp/expression engine. Each precedence layer would be represented as a parametric pattern (for each shape/symbol), with the argument placeholders representing the next layer down... and then if someone wants to insert another layer, the declarative op table is merely regenerated from the new list, without any funny business necessary.  If that style of operator precedence ...
23:00 diakopter ... turns out to be too inefficient, then it wouldn't be as helpful.... )
23:05 hanekomu_ joined #perl6
23:11 pugs_svnbot r20934 | cjfields++ | Add more tests, latest RT patch passes all but tr///
23:16 cjfields joined #perl6
23:28 pmichaud diakopter: fwiw, when writing PGE I was personally very surprised at how much more efficient an operator precedence parser is compared to rec-descent, even for a small number (6) of precedence levels.
23:29 pmichaud the parser for p6 regexes was originally rec-descent, but I switched it over to opp after seeing how slow rec-descent was.
23:29 diakopter pmichaud: did you use a precedence climbing algorithm or shunt-yard
23:29 pmichaud for the opp?
23:29 diakopter ye
23:29 diakopter s
23:30 pmichaud I don't know the terms "precedence climbing" versus "shunt-yard"
23:30 pmichaud it's a pretty standard shift/reduce bottom-up parser.
23:31 diakopter http://en.wikipedia.org/wiki​/Operator-precedence_parser mentions the shunting-yard algorithm and your PGE, as well as has a footnote to the prec-climbing one
23:32 diakopter http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm is the "climbing" one...
23:32 lambdabot Title:
23:33 diakopter I've been concerned that I can't elegantly shoehorn the shift-reduce one into this functional/combinator approach, so I was looking at alternatives
23:34 pmichaud pge's opp is a shunting yard algorithm according to the exp_parsing.htm description.
23:35 diakopter however, that wikipedia article needs work/clarification.... oh, okay.. that helps.
23:35 diakopter thanks :)
23:36 diakopter I assume circumfix precedence isn't really treated as its own precedence level, right?
23:36 Eevee joined #perl6
23:36 pmichaud well, circumfix: is a syntactic category, not a precedence level
23:36 pmichaud but it tends to occur on or about the same level as "term"
23:37 diakopter ok; that's what I thought.. oh, nm, I was misreading S03.  /slapself
23:45 diakopter pmichaud: would the C source or the PIR?? source be easier for me to read if I can read C marginally better than PIR (zero)..?
23:45 diakopter for PGE I mean
23:47 diakopter or is it written in PASM...?
23:50 pmichaud PGE is written in PIR.
23:50 pmichaud (which, in retrospect, writing PGE in PIR was far easier than trying to do it in C.)
23:51 diakopter I guess I could take a look at the source of Parse::Yapp
23:52 * Limbic_Region rather likes Parse::Yapp but he has only used it for one toy project
23:53 Limbic_Region what I liked about it was that it handled both precedence and associativity out of the box with no need to eliminate left recursion
23:53 Limbic_Region which all 3 were problems that I needed for my toy project
23:53 Limbic_Region and P::RD sucked in those regards
23:53 diakopter Limbic_Region: my toy project solves all but the inefficient precedence part
23:53 diakopter yet..
23:54 diakopter (you can express left associate operators in the natural way)
23:54 Limbic_Region diakopter - is your intention to make the parser part of the project for general use?
23:54 diakopter associative
23:54 diakopter Limbic_Region: well, I've run into a theoretical snag
23:54 diakopter you can't have both memoization and look-behind.
23:54 diakopter and memoization is key to "Packrat" parsing
23:55 diakopter so hrm
23:55 diakopter now that I verbalized the problem, I see the solution
23:56 Limbic_Region diakopter - have you looked at the Earley Parsing algorithm?
23:56 diakopter just have the memotable lookup be aware of when it's "in" a look-behind, probably by a global variable... and have it always redo the scan at that position for that pattern
23:57 diakopter Limbic_Region: I read about it yesterday a bit
23:57 diakopter Limbic_Region: did you read my backscroll about templated/parametrized patterns?
23:57 Limbic_Region no - I wasn't paying attention to the channel really
23:57 Limbic_Region but I can
23:58 diakopter it's easier on the web irclog....
23:58 diakopter my name's in green or something
23:58 Limbic_Region well, regarding the Earley algorithm - Luke Palmer had created something in like 3 days but never finished it - while not crap, completely unusuable
23:58 Limbic_Region I hear that something else was recently uploaded that is complete and useful
23:59 diakopter oh?
23:59 diakopter whereat
23:59 Limbic_Region Parse::Marpa
23:59 diakopter Limbic_Region: from http://irclog.perlgeek.de/​perl6/2008-06-21#i_358566 on...
23:59 lambdabot Title: IRC log for #perl6, 2008-06-21

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

Perl 6 | Reference Documentation | Rakudo