Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-02-27

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:01 pmurias joined #perl6
00:08 TimToady ruoso: played around some with "operator" and "op" and such, but I think it's going to be something else embedded in the code, since metaops need it too, and maybe even some methods
00:10 TimToady hmm, sial doesn't seem to recognize #perl6
00:10 TimToady well, this is pretty small
00:11 TimToady proto infix:<eq> (Any $a, Any $b)       { meta ~$a eq ~$b }             # user's eq, user's ~
00:11 TimToady multi infix:<eq> (Whatever, Any $b)     { -> $a { meta $a eq $b } }     # user's eq
00:11 TimToady multi infix:<eq> (Any $a, Whatever)     { -> $b { meta $a eq $b } }     # user's eq
00:11 TimToady multi infix:<eq> (&f:($), Any $b)       { -> $a { meta f($a) eq $b } }  # user's eq
00:11 TimToady multi infix:<eq> (Str $a, Str $b)       { !Str::leg($a, $b) }           # primitive leg, primitive !
00:11 TimToady where "meta" is negotiable
00:15 wayland76 Is "Software Transactional Memory" still the way S17 is going, or can I rip that stuff out?
00:15 Ariens_Hyperion joined #perl6
00:16 TimToady not clear.  It might be one of those things that's post-6.0.0
00:17 TimToady but one would really like a coherent transactional system that deals with more than just memory
00:18 payload1 joined #perl6
00:19 |jedai| joined #perl6
00:19 wayland76 Ok, how about I add the Event Loop stuff to S17, and leave the STM stuff down the bottom?
00:22 wayland76 Is there any documentation on calling foreign (ie. C library) code from Perl 6?
00:23 eternaleye joined #perl6
00:23 TimToady there's parrots NCI, but nothing defined for Perl
00:24 TimToady *parrot's
00:24 TimToady in theory we'll have enough type info to call directly without writing glue code
00:31 wayland76 Ok.
00:31 wayland76 But does that mean, then, that we still have to spec how Perl6 will do that?
00:32 TimToady up to a point, but it may be rather platform dependent
00:33 Limbic_Region joined #perl6
00:34 wayland76 Ok.  I don't see why, but I'm no expert on these things :)
00:34 TimToady suppose we're running on the JVM, and you want to call into glibc.  Java ain't gonna make it easy for you.  You may have even fewer options running a JS engine in a browser
00:35 wayland76 Could we do it with a namespace (or whatever they're called?)
00:35 wayland76 ie. EXTERNAL::c_function_name()
00:35 TimToady it's almost certainly some kind of a magical use/import
00:36 avar wayland76: The way common lisp does it seems sensible
00:36 avar "Implementation defined"
00:36 wayland76 Ok, I can see that.  I'm thinking, though, that if the IO modules are going to be written as part of the Setting, they may have to contain some external calls
00:36 wayland76 Ok, now I see why it needs to be implementation defined.
00:37 wayland76 Does that mean that there'll never be a S21?
00:38 TimToady I have no clue what S21 would be without looking
00:38 TimToady I don't actually have Camel 3 memorized...
00:38 wayland76 21Calling foreign code(TBD)
00:39 wayland76 21 - Calling foreign code - (TBD)
00:39 TimToady there will certainly be some guidelines
00:39 TimToady we already have a :from switch for pulling code from other languages on the use
00:40 TimToady whether that other language is implemented in the same platform or a different platform is somewhat immaterial
00:40 TimToady except to the implementation, of course
00:41 wayland76 Ok.  That will give me something to go on, then.  I'll write a starter S21 :)
00:41 TimToady but S21 might have a discussion of how to link to some of the common platforms
00:44 dalek rakudo: 4bb9d8d | pmichaud++ | docs/ChangeLog:
00:44 dalek rakudo: Rename NEWS to ChangeLog, since that's what it really represents.
00:44 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​bb9d8dbcb91926898934496b30719e64733afd6
00:44 dalek rakudo: 03e102b | pmichaud++ | docs/NEWS:
00:44 dalek rakudo: Rename NEWS to ChangeLog.
00:44 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​3e102ba32fd53b21d66c6114f10ba65eae920c8
00:51 nihiliad joined #perl6
00:55 skids Fess up folks, what's the most number of times you've hit enter and said frak why isn't this working before your realized you typed perl -e insteald of ./perl6 -e
00:56 |jedai| joined #perl6
00:56 TimToady er...0?
00:57 skids well, with you, we'd expect that.
01:08 skids Are we supposed to be able to add more specific MMD candidates in Perl6 for stuff that's implemented in src/classes in PIR yet?
01:12 wayland76 Is the Pattern role done by everything, or just scalars?
01:22 Eevee joined #perl6
01:27 shinobi-cl joined #perl6
01:32 diakopter perhaps a better question; how many times have you *intended* to type "perl6..."?
01:40 skids I'm fine with 'multi method foo ($at, $least, $three, *@fourandover) but just out of morbid curiosity is there something like "method foo (*@slurpy where {.elems > 3})"?
01:47 jimmy_ joined #perl6
01:52 frooh joined #perl6
02:01 alc joined #perl6
02:09 alester joined #perl6
02:16 eternaleye joined #perl6
02:31 Tene_ skids: a few, certainly
02:36 wayland76 skids: I don't do enough coding to run into that problem.
02:37 wayland76 In fact, I don't even have Perl6 installed
02:37 wayland76 (I've been waiting for this next release :) )
02:37 skids It must be like Xmas morning for you then! :-)
02:43 dukeleto joined #perl6
02:45 wayland76 It is, rather :)
02:45 pugs_svn r25601 | wayland++ | -  Standardised on .signature vs. .sig
02:45 pugs_svn r25601 | wayland++ | -  Added some things to S29/S32 that Masak highlighted needed to be added
02:45 shinobi-cl left #perl6
02:52 shinobi-cl joined #perl6
02:54 shinobi-cl left #perl6
03:01 s1n rakudo question: what does this mean?
03:01 s1n Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'
03:01 s1n what is the PP->I mean?
03:02 pmichaud it's a parrot issue.  Parrot is looking for something that takes two PMCs and returns an int
03:03 s1n pmichaud: there's a possibility i messed something up; i'm working on replacing some methods in a setting class
03:04 s1n pmichaud: do you think i could borrow your attention shortly (for a pm)?
03:04 pmichaud I'm a little distracted at the moment, but I'll do what I can.
03:06 Sepheebear joined #perl6
03:14 * skids fishes for thoughts or link to previous discussion of Collection .delete methods post-lazy-implementation.
03:18 wayland76 What's lazy implementation?
03:20 s1n can someone review this commit (mind you the prior commits of mine add this stuff to setting):
03:20 s1n 7676ae1fdf7d922a9475742951efe2d4511c11b6
03:20 s1n better yet: http://github.com/s1n/rakudo/commit/76​76ae1fdf7d922a9475742951efe2d4511c11b6
03:20 skids wayland76: http://en.wikibooks.org/wiki/Perl_​6_Programming/Lazy_Lists_and_Feeds
03:22 s1n basically, it's doing an infinite loop t/spec/S03-operators/range.t (test 10 looks like)
03:22 _jedai_ joined #perl6
03:25 wayland76 skids: So lazy implementation means "after the implementation of lazy lists and feeds", right?
03:25 jimmy_ rakudo: my @y = (1, 2, 3); @y.perl.say;
03:25 p6eval rakudo 03e102: OUTPUT«[1, 2, 3]␤»
03:25 jimmy_ rakudo: my @y = (1, 2, 3); @y.say;
03:25 p6eval rakudo 03e102: OUTPUT«123␤»
03:25 skids wayland76: y
03:25 jimmy_ my %z = {:first(1), :second(2), :third(3)} %z.perl.say;
03:25 jimmy_ rakudo: my %z = {:first(1), : second(2), :third(3)} %z.perl.say;
03:25 p6eval rakudo 03e102: OUTPUT«Statement not terminated properly at line 1, near ": second(2"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
03:26 jimmy_ rakudo: my %z = {:first(1), :second(2), :third(3)} %z.perl.say;
03:26 p6eval rakudo 03e102: OUTPUT«Could not find non-existent sub z␤current instr.: '_block14' pc 134 (EVAL_16:51)␤»
03:26 jimmy_ rakudo: my %z = {:first(1)} %z.perl.say;
03:26 p6eval rakudo 03e102: OUTPUT«Could not find non-existent sub z␤current instr.: '_block14' pc 85 (EVAL_16:44)␤»
03:26 jimmy_ rakudo: my %z = {:first(1)}; %z.perl.say;
03:26 p6eval rakudo 03e102: OUTPUT«{"first" => 1}␤»
03:26 jimmy_ rakudo: my %z = {:first(1)}; %z.say;
03:26 p6eval rakudo 03e102: OUTPUT«first      1␤»
03:27 jimmy_ rakudo: for 1..5 { print;}
03:28 p6eval rakudo 03e102: OUTPUT«print requires an argument at line 1, near ";}"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
03:28 wayland76 skids: Well, according to S32/Containers, Array and Hash both do .delete, but List doesn't
03:28 jimmy_ rakudo: for 1..5 { print; }
03:28 Tene_ jimmy_: try ".print" instead
03:28 p6eval rakudo 03e102: OUTPUT«print requires an argument at line 1, near "; }"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
03:28 jimmy_ rakudo: for 1..5 { print $_; }
03:28 Tene_ rakudo: .print for 1..5
03:28 p6eval rakudo 03e102: OUTPUT«12345»
03:28 p6eval rakudo 03e102: OUTPUT«12345»
03:28 jimmy_ rakudo: for 1..5 { print $_; }
03:28 p6eval rakudo 03e102: OUTPUT«12345»
03:28 jimmy_ rakudo: for 1..5 { .print; }
03:28 p6eval rakudo 03e102: OUTPUT«12345»
03:29 jimmy_ for 1..5 { print; } has been implemented.
03:29 dalek rakudo: f68a629 | pmichaud++ | docs/announce/2009-02:
03:29 dalek rakudo: First draft of 2009-02 release announcement.
03:29 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​68a62900da1cf6736b99dde25d4883129ab2982
03:30 skids wayland76: but they return List (of deleted values).  Which could be lazy, and very confusing to some.
03:32 skids e.g. @vals = %f.delete('k','j'); shift @vals ; %f.keys.say; shift @vals -- might still have 'j' key/val present at .say.
03:33 pmichaud comments on the draft release announcement welcome.
03:33 skids OTOH @f = %f.delete(@millions_of_keys) would load the system.
03:35 Tene_ pmichaud: do you want try {} fixes in before the release?  Or have you already made release tarball?
03:35 jimmy_ rakudo: print $_ for 1..5
03:35 p6eval rakudo f68a62: OUTPUT«12345»
03:35 pmichaud Tene_: I think I'd prefer them post-release, actually.
03:35 * Tene_ nods.
03:36 pmichaud I'm expecting to cut the tarball in the next 25-90 minutes.
03:36 pmichaud (depends on what other non-Rakudo errands I have to run here in that time)
03:48 Tene joined #perl6
03:52 wayland76 skids: I'd think delete would have to do the actual deletions immediately, and store them somewhere (although this may not be what's actually happening)
03:52 wayland76 If they're being stored "somewhere", that somewhere should probably be the List
03:53 wayland76 Thus I conclude that delete() will probably have to be not-lazy
03:53 wayland76 Or the implementation will have to be clever enough to resolve this kind of conflict
03:53 wayland76 (but preferably not for Christmas)
03:53 wayland76 :)
03:54 skids wayland76: Yeah, I'd say so too but have this sneaking suspicion the Perl6 gurus will have something profound in mind for that.
03:56 skids Like maybe, lazy, if you add an adverb, or something like that.
03:57 meppl good night
03:57 wayland76 'night meppl
03:57 meppl ;)
03:57 wayland76 skids: You may be right (you may be crazy?) :)
03:57 skids s1n: I know not the review you were looking for, but ($.from cmp $topic) <= 0 seems a bit obfuscated.
03:58 pugs_svn r25602 | wayland++ | More masak-inspired changes.
04:02 |jedai| joined #perl6
04:06 aindilis` joined #perl6
04:29 TimToady joined #perl6
04:29 aindilis` joined #perl6
04:29 |jedai| joined #perl6
04:29 Tene joined #perl6
04:29 Sepheebear joined #perl6
04:29 dukeleto joined #perl6
04:29 alc joined #perl6
04:29 frooh joined #perl6
04:29 jimmy_ joined #perl6
04:29 Eevee joined #perl6
04:29 bacek_ joined #perl6
04:29 skids joined #perl6
04:29 Caelum joined #perl6
04:29 kane_ joined #perl6
04:29 smtms joined #perl6
04:29 Maghnus joined #perl6
04:29 frioux joined #perl6
04:29 lambdabot joined #perl6
04:29 Patterner joined #perl6
04:29 [particle] joined #perl6
04:29 namenlos joined #perl6
04:29 Khisanth joined #perl6
04:29 dalek joined #perl6
04:29 AndyAway joined #perl6
04:29 r0bby joined #perl6
04:29 ruoso joined #perl6
04:29 PZt joined #perl6
04:29 wayland76 joined #perl6
04:29 baest_ joined #perl6
04:29 tarbo2 joined #perl6
04:29 felipe joined #perl6
04:29 Lorn joined #perl6
04:29 wolverian joined #perl6
04:29 preflex joined #perl6
04:29 xinming joined #perl6
04:29 japhb joined #perl6
04:29 Porsbo_ joined #perl6
04:29 s1n joined #perl6
04:29 c9s joined #perl6
04:29 samlh joined #perl6
04:29 carpftb_ joined #perl6
04:29 cotto joined #perl6
04:29 agentzh joined #perl6
04:29 jan_ joined #perl6
04:29 charsbar joined #perl6
04:29 drbean joined #perl6
04:29 avar joined #perl6
04:29 edenc joined #perl6
04:29 rhr joined #perl6
04:29 estrabd joined #perl6
04:29 krunen joined #perl6
04:29 Matt-W joined #perl6
04:29 integral joined #perl6
04:29 clkao joined #perl6
04:29 AzureStone joined #perl6
04:29 pjcj joined #perl6
04:29 gravity joined #perl6
04:29 p6eval joined #perl6
04:29 Southen joined #perl6
04:29 simcop2387 joined #perl6
04:29 Aisling joined #perl6
04:29 xuser joined #perl6
04:29 cognominal joined #perl6
04:29 zostay joined #perl6
04:29 wage joined #perl6
04:29 pugs_svn joined #perl6
04:29 cls_bsd joined #perl6
04:29 literal joined #perl6
04:29 tcliou|Away joined #perl6
04:29 LCamel joined #perl6
04:29 moritz_ joined #perl6
04:29 broquaint joined #perl6
04:29 Gothmog_ joined #perl6
04:29 sunnavy joined #perl6
04:29 bigpresh joined #perl6
04:29 gfldex joined #perl6
04:29 hcchien joined #perl6
04:29 c1sung joined #perl6
04:29 jnthn joined #perl6
04:29 spinclad joined #perl6
04:29 diakopter joined #perl6
04:29 cj joined #perl6
04:29 kcwu joined #perl6
04:29 frobnitz joined #perl6
04:29 pmichaud joined #perl6
04:29 Maddingue joined #perl6
04:29 mtve joined #perl6
04:29 jrockway joined #perl6
04:29 jjore joined #perl6
04:29 zev joined #perl6
04:29 nipotan joined #perl6
04:29 dmpk2k joined #perl6
04:29 silug joined #perl6
04:29 ascent_ joined #perl6
04:29 ilogger2 joined #perl6
04:29 perlbot joined #perl6
04:29 BinGOs joined #perl6
04:29 skids pmichaud: I meant to complement you on getting the READMEs and other usually-neglected files updated after the repo move.
04:30 skids I actually was able to figure out where to go and what to do for a change :-)
04:30 PerlJam joined #perl6
04:30 eternaleye joined #perl6
04:30 Exodist joined #perl6
04:30 yahooooo joined #perl6
04:30 oskie joined #perl6
04:30 Grrrr joined #perl6
04:30 Helios joined #perl6
04:30 lisppaste3 joined #perl6
04:30 IRSeekBot joined #perl6
04:30 buu joined #perl6
04:30 orafu joined #perl6
04:32 wayland76 skids: Well, if that's what you think, pmichaud++ :)
04:33 skids Eh, he's got so many ++'s the mantissa probably doesn't even register +1's anymore.
04:34 Tene purkarma pmichaud
04:34 wayland76 @karma pmichaud
04:34 lambdabot pmichaud has a karma of 244
04:34 Tene ENOPURL
04:35 Tene ah
04:35 Tene pmichaud++
04:35 skids Oh, something actually *does* keep track :-)
04:35 Tene @karma pmichaud
04:35 lambdabot pmichaud has a karma of 245
04:35 Tene There, now he has 1/10th his #parrot karma here
04:35 wayland76 Well, if Karma is a Byte, it may soon overflow :)
04:35 wayland76 Ah, that explains a lot :)
04:36 nikn joined #perl6
04:37 pmichaud skids: (updating readme's, etc.)  -- many thanks.  I feel like I'm actually quite tardy on updating those; I'm very glad the effort is appreciated.
04:38 pmichaud and yes, I work for karma.  :-)
04:39 Tene I used to.  RSI pain is too bad lately.  :(
04:39 skids pmichaud++ then :-)
04:41 alester hey pmichuad
04:44 pmichaud alester: did you see my draft (about to be non-draft) announcement text?
04:45 pmichaud docs/announce/2009-02
04:45 alester in ChangeLog?
04:45 alester oh, yeah, that
04:45 pmichaud ChangeLog is the simple "bullet list of changes"
04:45 alester lemme look again
04:45 pmichaud docs/announce/ holds the newsy announcements.
04:45 dalek rakudo: c032fa7 | pmichaud++ | docs/announce/2009-02:
04:45 dalek rakudo: Some small wordsmithing items.
04:45 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​032fa7c63c9cdcb664b713b41a579569c929905
04:46 skids Tene: :-( RSI sounds so horrible that I'm glad I never learned to type very well.
04:48 alester looking
04:49 wayland76 I have no idea why I don't have RSI
04:49 wayland76 I have an old chicony keyboard, but other than that, there's no obvious reason
04:51 skids If I have a multi method foo (:flag where { .item = 1 }, @slurp) but I know that the named parameter will always be the first element in the arg list, should I do something to optimize MMD to not search the whole list for keys?
04:51 skids s/keys/Pairs/
04:51 pmichaud maybe don't make it a named parameter?
04:52 skids Not an option, it's specced that way.
04:52 pmichaud multi method foo ($flag where { .item = 1 }, @slurp)
04:52 pmichaud then how do you know that the named parameter will always be the first element in the arg list?
04:52 pmichaud I'm confused by that.
04:53 skids It's the postcircumfix adverbs, what have to be parsed specially.  STD.pm moves them to the front of its parse tree objects and PGE doesn;t do them yet.
04:53 pmichaud ...but if they're named arguments, they're always 'non-positional'
04:53 pmichaud er, wait, I have that backwards.
04:53 pmichaud named parameters are always 'non-positional'
04:54 pmichaud the order of the arguments doesn't matter for named parameters.
04:55 pmichaud the fact that STD.pm moves named arguments to the front may be an artifact of the parse; not necessarily a requirement (or optimization) for the function.
04:58 pmichaud s/named arguments/adverbs
04:59 pmichaud at any rate, I'm pretty sure that    where { .item = 1 }  is wrong :-)
04:59 pmichaud unless you _really_ intend to do an assignment.  :-)
04:59 skids Well, probably we'll have to do something other than an actual adverb in actions for it then, special case.
04:59 skids Yeah I meant == of course
04:59 pmichaud even that I think is wrong.
04:59 pmichaud == 1   is not the same as  "true"
05:00 skids Adverbs are Ints.
05:00 pmichaud :foo(True)   is not an Int.
05:01 pmichaud iiuc, an adverb simply becomes a named argument
05:01 skids I meant the naked ones.  I forget if I just tried { .item }.
05:02 alester pmichaud: 9259190a7863c7cc49fa1799ab9929486d2fe56d
05:02 pmichaud I'm pretty sure that TimToady told me that  :foo  should be equivalent to :foo(True)   (in spite of what S02 says)
05:02 skids I had to try a bunch of stuff before I figured out .item, it kept blowing up.
05:02 jimmy_ @karma jimmy
05:02 lambdabot jimmy has a karma of 1
05:02 skids Yeah, well, either way that's the easy part.
05:03 pmichaud anyway, handling a named argument in actions.pm is no problem
05:05 pugs_svn r25604 | wayland++ | Various small fixes, mostly to signals
05:06 skids damn, want to stay up and code but still one more workday left in the week.  gnight.
05:16 pmichaud ugh, I need to find a good cherry pick tutorial.
05:19 Tene what do you want to know about it?
05:20 pmichaud Andy has a commit in his repository.  I want to bring that into rakudo's master branch
05:20 alester git cherry-pick 9259190a7863c7cc49fa1799ab9929486d2fe56d
05:20 alester that's it
05:20 alester and then git push
05:20 pmichaud pmichaud@orange:~/rakudo$ git cherry-pick 925919
05:20 pmichaud fatal: Cannot find '925919'
05:20 Tene he first needs to git remote add andy $URL
05:20 alester oooh, right
05:20 alester because
05:20 alester right
05:20 pmichaud that's my point.
05:20 Tene then git fetch andy
05:21 alester or use the fork queue
05:21 pmichaud the fork queue is limited to 50 entries
05:21 pmichaud and we currently have 82
05:21 pmichaud so I can't *see* the entry in the fork queue.
05:21 pmichaud I tried the remote stuff but I'll try again.
05:21 alester ok, here's what ya do
05:21 ab5tract joined #perl6
05:21 Tene git remote add andy git://github.com/petdance/rakudo.git
05:21 Tene git fetch andy
05:22 alester yeah, that
05:22 pmichaud okay, I don't know why that didn't work before.
05:22 alester or, git remote update
05:22 alester which does updates on all the rmeote repos you're keeping track of locally
05:23 pmichaud "updates on all the remote repos" scares me a lot.
05:24 Tene 'git fetch' is always nondestructive.  It just pulls down commits, but doesn't even update any refs
05:24 pmichaud yes, I'm much more comfortable with that.
05:24 pmichaud Andy:  you seem to wordwrap a little bit longer line than I prefer to have.
05:25 Tene Eh, local refs.  there are still updates in refs/remotes I think.  That's included in what you want, I think.
05:25 alester pmichaud: Bummer. :-)
05:25 alester My vi should have respected your vi modeline.
05:25 alester oh wait
05:25 Tene yeah, looks like git remote update just does a bunch of fetches
05:25 alester I didn't wrap with vi
05:25 Tene so is the same.
05:25 alester Tene: it does fetch + update
05:25 alester or fetch + something
05:25 pmichaud and this is just a plain text file so I didn't put a vi modeline in the file.
05:26 bacek_ joined #perl6
05:26 AndyAway joined #perl6
05:26 p6eval joined #perl6
05:26 Tene alester: not according to man git-remote
05:26 alester I'm meaning to absorb this: http://robey.lag.net/2008/07/1​3/git-for-the-real-world.html
05:27 alester pmichaud: you want I should rewrap for ya?
05:27 pmichaud no thanks, I'll take it as-is.
05:27 dalek rakudo: 938b764 | (Andy Lester)++ | docs/announce/2009-02:
05:27 dalek rakudo: Wordsmithing, fix some typos, rewrap
05:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​38b7642c2c12dc733532fee9741a4274919cd5f
05:27 pmichaud it's not that big an issue for me.
05:27 alester ok
05:27 pmichaud it's close enough to be okay :-)
05:27 alester I like how I get karma in two channels at once. :-)
05:28 alester I added more stuff in there, like telling people what git is.
05:28 pmichaud yes, I saw that.
05:28 alester Just trying to have my author hat on.
05:28 pmichaud I was thinking the reference to github might be sufficient.
05:28 pmichaud it feels odd to me that we have a reference to git's site but not Parrot's.
05:29 pmichaud I think I'll put some of the urls in as "footnotes" instead of inline.
05:30 alester ok, how's this
05:30 alester http://dru.rakudo.org/
05:30 alester pmichaud: Sounds good
05:32 pmichaud somehow I feel like the rakudo site should be more colorful; that's one of the things I like about the Parrot site :-)
05:32 Tene Me too.
05:33 alester ok
05:33 alester themegarden.org
05:33 pmichaud yeah, I looked through a few other themes earlier but didn't have time to look extensively
05:39 alester http://themegarden.org/drupal6​/?q=node&amp;theme=lemontwist ?
05:39 dalek rakudo: 08b7890 | pmichaud++ | docs/announce/2009-02:
05:39 dalek rakudo: Last set of wordsmithing before release.
05:39 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​8b789048014b5744aebfe956d817b29c9ff260e
05:40 pmichaud olive has never been one of my favorite colors.
05:40 pmichaud Yes, I can be picky sometimes :-)
05:41 alester yeah, I like the URLs on the bottom.
05:42 pmichaud http://themegarden.org/drupa​l6/?q=node&amp;theme=nitobe  # not colorful, but nice nonetheless
05:42 alester we also have no logo to put up on the headline
05:42 alester http://themegarden.org/drupal​6/?q=node&amp;theme=abessive ?
05:43 pmichaud abessive looks too crowded on my screen
05:43 alester I like that a lot.  Clean & not washed
05:43 pmichaud I prefer a bit more whitespace
05:43 alester we can also tweak the CSS
05:43 alester if that's the only bummer, then that's pretty minor
05:44 alester http://themegarden.org/drupal6​/?q=node&amp;theme=clearlooks ?
05:44 alester more white
05:44 alester no boxes
05:45 pmichaud http://themegarden.org/drupa​l6/?q=node&amp;theme=fervens  # maybe ?
05:45 alester oooh http://themegarden.org/drupal6/?​q=node&amp;theme=box_cleanslate
05:45 pmichaud box_cleanslate is nice too
05:45 alester I don't like the boxes on fervens
05:45 alester ok, good.
05:45 alester box_cleanslate it is
05:46 alester two yes votes is enough for me at 2345
05:46 alester but I'm not gonna get this completed tonight, alas
05:47 alester some of these just look like some teenage girl with Photoshop threw up
05:48 alester http://themegarden.org/drupal6/?q=aggre​gator/sources/1&amp;theme=amity_island ?
05:48 alester also clean, no header graphic for me to replace
05:48 pmichaud I like amity_island slightly more than box_cleanslate, I think
05:48 pmichaud okay, more than slightly now that I look at them side-by-side
05:50 alester ok.
05:50 alester amity
05:50 alester Now stop looking! :-)
05:50 alester plus, when we get it goin', i can install others
05:50 alester and you can switch between 'em
05:51 alester and figure what looks best w/rakudo.org directly
05:52 alester http://dru.rakudo.org/
05:52 alester That's Amity Island
05:52 pmichaud yes, much better.
05:53 alester urgh, they don't know serif vs. sans serif
05:54 alester fixed
05:54 alester mmm, i'm not so sure this is lookin' good on ours
05:56 masak joined #perl6
05:56 alester eh, maybe it's OK
05:56 alester I'd feel a whole lot better if I could get the archvies over
06:01 alester amity isn't going to work long-term, but it's OK for now
06:02 justatheory joined #perl6
06:07 alester pmichaud++
06:15 simcop2387 joined #perl6
06:16 hercynium joined #perl6
06:20 wayland76 pmichaud++ :)
06:24 wayland76 rakudo-parrot-split--
06:24 wayland76 I used to be able to go "rpmbuild -ta parrot-*.tar.gz" and it would give me RPMs
06:24 wayland76 How do I do that now?
06:25 pmichaud make an rpmbuild target for Rakudo, perhaps?  ;-)
06:25 wayland76 I'm familiar with RPM, if that helps
06:25 wayland76 Basically, rpmbuild needs a spec file to make things work
06:26 wayland76 Shall I steal the old Parrot one and try to use appropriate bits?
06:26 pmichaud that would be a place to start.  But it might also be worthwhile to wait a month and see if we get the 'install' bits cleaned up.
06:27 bacek_ pmichaud++
06:27 wayland76 Hmm.  Ok.  No perl6 for another month :)
06:28 wayland76 That should give me more time to damage^W work on the specs :)
06:28 bacek_ Hooray, first version of Rakudo for few month with my patch included :)
06:28 ILyuha joined #perl6
06:28 ILyuha left #perl6
06:35 alester wayland76: Hey, wayland76, live with it.  Ya gotta break eggs to make an omelette.
06:36 szabgab joined #perl6
06:40 ashizawa joined #perl6
06:41 wayland76 Agreed.  And still pmichaud++ :)
06:46 pugs_svn r25605 | wayland++ | Typo.  martin++
06:46 wayland76 @karma martin
06:46 lambdabot martin has a karma of 5
06:50 nikn is perl6 really anarchy
06:50 masak nikn: yes, welcome.
06:51 wayland76 Hey, I thought it was a benevolent dictatorship :)
06:51 masak wayland76: that, too.
06:52 masak it sort of fluctuates between the two states.
06:52 Tene The benevolent inmates are the dictators of the benevolent asylum?
06:52 wayland76 although maybe we should call the other one an anarcho-syndicalist commune
06:52 wayland76 :)
06:52 ab5tract http://wikipedia.org/Participatory_economics
06:52 wayland76 Tene: I was thinking of Larry = benevolent dictator
06:52 masak rakudo: say ~(<benevolent malevolent neutral>.pick(), <dictatorship anarchy democracy>.pick())
06:53 p6eval rakudo 08b789: OUTPUT«neutral dictatorship␤»
06:53 masak :)
06:53 nikn haha
06:53 wayland76 I guess rakudo doesn't dare venture an opinion on larry, but doesn't mind stating fact :)
06:53 masak nikn: have you tried Rakudo yet? it's awesome!
06:54 masak wayland76: something like that.
06:54 masak just don't ask it again. :)
06:54 wayland76 ab5tract: That's 404 :)  But I found the page you meant
06:54 Tene Eh, larry doesn't claim to rule afaict, he mostly just sits there occasionally emitting designs that we all choose to implement.
06:54 ab5tract oh i typed it freehand oops
06:54 ab5tract paste it wayland76 :)
06:54 wayland76 nikn: By "awesome", he means "doesn't have a lot of libraries, but the core language is getting there"
06:55 wayland76 Well, if you insist.  http://en.wikipedia.org/wi​ki/Participatory_economics
06:55 ab5tract it's totally in the tradition of the anarcho syndicalists and wobbly types
06:55 nikn rakudo: say ~(<i will learn perl>, <slowly painfully>.pick())
06:55 p6eval rakudo 08b789: OUTPUT«i will learn perl slowly␤»
06:55 nikn :)
06:55 nikn thank god
06:56 pmichaud the two aren't mutually exclusive.  :-)
06:56 masak wayland76: no, by "awesome", I mean "awesome", and screw the libraries for now.
06:56 masak if we need'em, we write'em.
06:56 mberends joined #perl6
06:56 wayland76 masak: Agreed, but I wanted to be sure we didn't build hopes too high, and then disappoint :)
06:56 masak mberends: greetings.
06:57 masak wayland76: there's plenty of chance for that anyway. :)
06:57 wayland76 ab5tract: I was thinking of the "Repressed" skit by the pythons :)
06:57 masak nikn: watch out for bugs. and when you find them, be sure to send us a noe.
06:57 mberends masak++ : greetings. your SVG is sweet indeed
06:57 ab5tract wayland76: Naturally :)
06:57 masak mberends: thank you. :)
06:57 nikn masak: shore thing
06:57 wayland76 (that means you come on the channel and say "oh noes!" :)
06:57 masak mberends: will add lots of validation soon.
06:58 ab5tract (but parecon is some seriously cool shit)
06:58 Tene ""O HAI GUYZ OBTW THERE ARE BUGS!!!!!!!"
06:58 ab5tract lol
06:58 mberends masak: I think SVG.pm should be promoted to XML.pm
06:58 masak mberends: been thinking the same thing.
06:58 mberends masak++
06:58 masak mberends: that might happen, but probably not until I have a reason for it.
06:59 pmichaud good night, all
06:59 pmichaud bbt
06:59 masak pmichaud: night
06:59 mberends XHTML, for example
06:59 wayland76 pmichaud: night, and thanks
06:59 masak mberends: if someone else clones it and builds XML.pm, I will do my very best to refit SVG.pm on top of XML.pm
06:59 masak mberends: right now my main objective is to do SVG :)
06:59 mberends fine. that's all I have have time to report. commute &
07:00 mberends o/
07:00 wayland76 Is it in a repository?
07:00 masak mberends: aye, SVG and XHTML will both be validators on top of XML
07:00 masak wayland76: yes.
07:00 wayland76 I'm interested in hacking Tree::Node stuff onto XML
07:00 masak wayland76: you can download it with proto. :)
07:00 wayland76 would that upset you somehow?
07:00 masak wayland76: not if you stay out of CORE, no.
07:01 masak wayland76: you're free to do whatever you want in modules.
07:01 wayland76 Will require MONKEY_PATCHING then :)
07:01 masak :)
07:01 masak looking forward to seeing that.
07:01 wayland76 Well, first, I have to get rakudo doing rpmbuild
07:02 wayland76 and I'm also kinda interested in doing the CPAN modules
07:02 wayland76 Do we have a HTTP module yet?
07:02 masak wayland76: no, but it's planned for the Web project.
07:02 masak wayland76: feel free to join in.
07:02 wayland76 OK
07:02 wayland76 I started investigating doing HTTP
07:02 masak http://news.perlfoundation.org/2009/0​2/2009q1_grant_proposal_webpm_-.html
07:02 wayland76 But then decided I needed the IO spec more finished :)
07:03 masak wayland76: there's also an old HTTP in the Pugs repository.
07:03 wayland76 And if I could also get the event model and a finite state machine, then the thing will be half done :)
07:03 pugs_svn r25606 | lwall++ | some enum cleanup
07:05 masak wayland76: hm. just realized that the line numbers in my replies to you on p6l might be off, because I was looking at an outdated Spec/ directory.
07:05 masak but I don't think that the facts changed.
07:06 wayland76 Ok.  When the e-mail arrives, I'll keep that in mind :)
07:07 masak emails. :)
07:07 wayland76 Yeah, I think we must've discussed HTTP once before
07:07 wayland76 Well, I think it's due to the 2 or 3 layers of spam checking :)
07:07 masak I plan to start on the Web effort in earnest next week.
07:07 masak I'd like to get something like Ruby's Sinatra up and running.
07:07 masak don't know how difficult that'll be.
07:08 masak http://www.sinatrarb.com/
07:08 masak will probably read the code this weekend.
07:08 Matt-W Morning
07:08 ab5tract wayland76: You might be interested in this: http://rubywaves.com
07:08 masak morning, marvellous M people!
07:09 wayland76 Matt-W: morning :)
07:09 ab5tract the page layout may be borked atm
07:09 wayland76 masak: Are you planning HTTP does IO::Socket::TCP?
07:09 masak ab5tract: nice. will process that site.
07:09 ab5tract It's designed around Resource oriented web programming
07:09 masak wayland76: don't know yet.
07:09 masak ab5tract: cool.
07:10 ab5tract and the best part: the core dispatcher is based on a ruby gem called Functor, which essentially implements MMD
07:11 ab5tract Really shows off the utility of the concept imo
07:11 masak yes, that sounds fantastic.
07:11 wayland76 Why does waves provide a Digital Subscriber Line (DSL)? :)
07:12 ab5tract the lead designer was just getting sad about people focusing on sinatra over waves
07:13 masak poor guy.
07:13 ab5tract cuz thats what non-perlers call 'dialects' ;)
07:13 wayland76 (or, what does DSL stand for in this context, since my Google foo doesn't seem to be helping me)
07:13 wayland76 Ok, thanks :)
07:13 ab5tract Domain specific language
07:13 Matt-W masak: did you say there's an example of passing action object to a grammar in November?
07:13 wayland76 Ah
07:13 ab5tract Rails == A DSL
07:13 masak Matt-W: yes, in a branch. see yesterday's logs.
07:13 ab5tract thats why it == booo
07:13 ab5tract ;)
07:13 masak Matt-W: right after my little accident.
07:14 ab5tract waves is most remarkable for being so integrally ruby-esque
07:14 masak I believe Perl 6's Web can take many cues from the Ruby world.
07:14 wayland76 Thanks all.  Food!  &
07:14 ab5tract yeah
07:15 masak not necessarily mimicking everything, just being inspired.
07:15 ab5tract for instance you will want to spin something together to take the place of Rack
07:15 masak they do cool things on the other side of the fence.
07:15 masak ab5tract: yes. been thinking the same.
07:15 ab5tract yeah. I can't wait for the worlds to merge
07:15 masak ab5tract: Rack is actually quite lang-independent. I think I will steal it right off, including the name.
07:15 ab5tract hmmm
07:16 ab5tract sounds good ;)
07:16 ab5tract masak: come play in #waves any time
07:16 masak ab5tract: absolutely. starting next week.
07:17 Matt-W masak: guess how far back my scrollback doesn't go...
07:17 masak Matt-W: hit the web logs then, you lazy person. :)
07:18 ab5tract masak: I've literally been thinking of how powerful a tractor app integrated resource oriented architecture (ROA) could be for Perl 6 since Dan Yoder dropped MMD in the middle of our dispatcher
07:18 masak ab5tract: I'm really glad about how things come together for Perl 6 Web.
07:19 masak ab5tract: and the "funny" thing is, the Perl 5 people who don't do Perl 6 don't really seem to get it. they're all "what's wrong with CGI?". boy, will they be surprised!
07:19 ab5tract seriously
07:20 ab5tract jeez its funny how some folks are
07:20 ab5tract blows my mind when i read a perl blog complaining about perl 6 development
07:20 ab5tract i've been lurking on you guys since 10 sep 001
07:24 ab5tract pretty amazing to see it all coming together right now, actually.
07:24 Matt-W That's about how long I've been paying attention
07:24 Matt-W The trouble is, if you don't pay much attention it doesn't look like a great deal is happening
07:25 Matt-W But things are moving really really fast now, you're quite right it's amazing
07:25 * Matt-W -> the office
07:25 Matt-W &
07:26 jimmy_ joined #perl6
07:26 ab5tract Yeah but why talk crap about something you haven't even researched >:(
07:27 ab5tract Parrot itself would change the world
07:27 ab5tract toss Perl 6 on top...
07:28 ab5tract (and you can say that same thing with switched subjects too)
07:28 ab5tract i digress
07:28 masak ab5tract: people like to feel that they are on top of things despite never having tried them. that often comes out as badmouthing.
07:28 masak they don't mean any harm, they're just victims of their own cluelessness.
07:28 NoirSoldats joined #perl6
07:29 ab5tract masak: yeah, it is all about water off the back.
07:30 masak well, thing is, it can still hurt. I have to remind myself sometimes that they say stupid things because they haven't seen the Perl 6 development from the inside.
07:30 ab5tract masak: Well I am definitely interested in helping do a Waves-style ROA implementation in p6 so
07:31 masak ab5tract: you're on.
07:31 ab5tract I'll be learning p6 at the same time, and the deep internals of Waves have always mystified me
07:31 masak ab5tract: would you mind terriblu joining the November wiki mailing list?
07:31 masak that's where the discussion about Web will take place.
07:32 masak I'm about to write a short mail about how Rack, Sinatra and now Waves have impressed me lately.
07:32 ab5tract We are lucky in that we will not need to do a dance to get mmd
07:32 masak right.
07:32 ab5tract cool, yeah I'm already lurking
07:32 masak excellent.
07:32 ab5tract and perl6 grammar == drool ;)
07:33 masak I guess. what's drool? :)
07:33 ab5tract I mean, it is awesome
07:34 ab5tract hehe
07:34 ab5tract I am very excited to use p6 grammars inside request dispatch
07:34 jimmy_ Is there Web.pm mailing list?
07:34 jimmy_ for perl6
07:35 masak jimmy_: no, just the November wiki mailing list.
07:35 masak http://groups.google.com/group/november-wiki
07:36 masak I expect to start work on Web next week, and ihrd too.
07:36 masak and we'll keep our Web discussion there.
07:36 jimmy_ joined it.
07:36 ab5tract masak: From the comments on the grant proposal, Waves' approach to modularity may go a ways to soothing fears
07:37 masak ab5tract: please comment.
07:37 ab5tract sure
07:37 masak we need all the support we can get. :)
07:37 ab5tract not tonight though ;)
07:37 masak no prob.
07:40 pugs_svn r25607 | lwall++ | deprecate "is also" and "is instead" in favor of augment and supersede declarators
07:40 ab5tract masak: this quevlar guy is a riot
07:40 ab5tract "For grammars please go to the dragon book from Aho, Sethi and Ullman."
07:40 ab5tract lol
07:40 masak :D
07:40 masak ab5tract: I've replied to him very nicely.
07:40 masak but the reply has not been approved yet.
07:40 pugs_svn r25608 | lwall++ | [STD] add augment and supersede declarators
07:42 ab5tract i read one from you to him
07:42 pugs_svn r25609 | lwall++ | typo
07:42 ab5tract it was maybe too nice ;)
07:43 ab5tract but you did good
07:43 ab5tract i will try to write something intelligent
07:43 ab5tract as for tonight
07:43 ab5tract it ends for me now
07:43 ab5tract glad I was lurking in here tonight!
07:44 ab5tract peace out y'all
07:45 masak ab5tract++
07:47 masak but I do believe you can never be too nice in a blog comment.
07:53 wayland76 Googled <<quevlar grammar>>.  "Do you mean kevlar grammar"? :)
07:54 bacek joined #perl6
07:55 wayland76 Is one of the projects discussed so far a CMS?
07:55 masak wayland76: no.
07:55 masak but we do have a wiki.
07:55 wayland76 Fine.  I'd like to do a CMS
07:56 wayland76 But I want one that stores all data as XML
07:56 wayland76 And outputs XHTML2
07:56 wayland76 downgrading to XHTML1 as necessary
07:56 masak wayland76: let's keep in touch about that. we need things built on top of Web, once it arrives. :)
07:56 wayland76 Which obviously requires lots of XML manipulation :)
07:57 wayland76 I was in the Drupal community for a few months, and while they evolve too fast, they try to get the architecture right
07:57 wayland76 So maybe we could copy some of that :)
07:59 wayland76 And I have a really good name for it, but am planning to keep that secret for a while :)
08:03 masak wayland76: looking forward to hearing more about your project.
08:04 wayland76 Well, it won't happen until some of the prereqs are in place
08:04 wayland76 Can you give me a link for your SVG :)
08:06 masak wayland76: sure, hold on.
08:07 masak http://github.com/masak/svg/tree/master/lib/SVG.pm
08:07 wayland76 Thanks.  Did you notice that I specced a requirement for basic URI handling in IO.pod?
08:07 masak wayland76: no.
08:07 masak I might look at that.
08:07 masak wayland76: why should Perl 6 do basic URI handling?
08:07 wayland76 (ie. there's a .uri function that acts as a constructor)
08:08 wayland76 Oh, wait, it might not be IO.pod
08:08 masak I found .uri there, anyway.
08:08 wayland76 Yeah, that's right, that's the one
08:08 masak looks OK to me.
08:09 masak it's a factory method of some sort.
08:09 wayland76 Ah, good, a proper name for it :)
08:10 masak is that an actual implementation I see?
08:10 masak seems wrongish to have that in the spec...
08:10 wayland76 Well, yes :)
08:10 wayland76 I agree :)
08:10 masak good.
08:10 wayland76 But if you want to take the code out, and rewrite it in English, feel free :)
08:10 masak the trick is not to spec too much, remember? :)
08:11 masak I think the stuff above already does a good enough job.
08:11 wayland76 But then we need to specify what %?PROTOCOLS{'whatever'} takes as parameters
08:11 DemoFreak joined #perl6
08:13 masak what the heck is %?PROTOCOLS ? it's the first time I hear about it.
08:13 wayland76 I made it up :)
08:13 wayland76 But it's in IO.pod now
08:13 masak I'm not sure that should be a global variable.
08:14 wayland76 (actually, I'm editing it; stand by for new version)
08:14 wayland76 Maybe not.  But what does it go on?
08:14 masak seems very IO-specific.
08:14 masak a class attr on IO should be fine by me.
08:14 masak but I still don't think that actual implementation should be specced.
08:14 wayland76 Yeah, removing implementation :)
08:14 masak unless it's perfectly clear it's pseudocode.
08:15 masak yay, enum names have landed! TimToady++
08:16 pugs_svn r25610 | wayland++ | IO.pod: Got rid of code, replaced it with spec
08:17 wayland76 There we go.  Try svn up, and see if it's a bit better
08:17 wayland76 Now to explain why we want %?PROTOCOLS
08:17 wayland76 If we're to have a generic uri() method that isn't attached to a particular object
08:17 wayland76 we have to have some way of knowing which object to create
08:18 masak I'm a bit too distracted too evaluate this design.
08:18 wayland76 ok :)
08:18 masak I'll let others have a say instead.
08:18 wayland76 I'd love to hear a better idea
08:18 wayland76 perl6 -e 'uri("http://www.perl.org/").print'
08:19 masak I'm sure people will have valuable suggestions.
08:19 masak wayland76: what should an IO::Socket::TCP stringify to?
08:19 wayland76 Or perl6 -e 'IO::Socket::HTTP.uri("http://www.perl.org/").print'
08:20 wayland76 At the moment, IO overrides print so that it prints to the socket
08:20 wayland76 so I'm not sure what's going on there :)
08:20 wayland76 I'm assuming it will suck data from the socket and print it to $*OUT, but that's probably wrong :)
08:20 masak I'm not sure at which point of the overspeccing boundary I think this falls.
08:21 masak I think the core modules in Perl 6 should be those really vital for making Perl 6 Perl 6.
08:21 masak not a lot of net communications stuff.
08:21 AzureStone joined #perl6
08:21 masak I say this as someone who will need a lot of net communications stuff in Perl 6 very soon.
08:22 wayland76 I'm mainly interested in TCP because it allows us to easily make the IO::Socket abstraction that we use for reading files also do net stuff
08:22 masak wayland76: yes... but why in the Perl 6 spec?
08:23 masak why not in a really good module?
08:23 wayland76 So I guess I'm saying that the Perl 6 spec should have to be consistent with the IO::Socket::TCP spec, but that Perl6 implementors may be able to avoid it
08:23 wayland76 masak: Well, perl5 has it as built-in
08:23 masak oh, ok.
08:23 * masak knows too little about all this
08:23 wayland76 I'm trying to find something to do with all those socket/bind/listen/whatever calls :)
08:24 masak ah, right.
08:24 wayland76 And it would be raw HTTP output, headers and all
08:24 masak just don't overspec, and I'm happy. it ought to be very possible to override classes, for example.
08:24 wayland76 (TCP, that is, not a HTTP module which of course doesn't go in core)
08:24 masak wayland76++
08:24 wayland76 I'm trying not to write classes, just roles :)
08:24 masak we are in violent agreement.
08:25 wayland76 And, strangely enough, you're violet in my IRC client :)
08:25 wayland76 (ie. it's colouring your name violet)
08:25 wayland76 The only real disagreement at this point, I think, is %?PROTOCOLS
08:26 masak ...which isn't spelled that way in your commits.
08:26 wayland76 And if someone sends me a better idea, hooray, but be prepared to explain it to me :)
08:26 masak of course.
08:26 jimmy_ joined #perl6
08:26 pugs_svn r25611 | hinrik++ | [util/perl6.vim] add 'augment' and 'supersede'
08:27 Matt-W So 'is also' is dead then?
08:28 masak yup.
08:28 pugs_svn r25612 | wayland++ | IO.pod/S28: Regularised %*PROTOCOLS
08:29 Matt-W interesting
08:29 wayland76 masak: Thanks.  That's %*PROTOCOLS really anyway :)
08:29 masak np.
08:29 pugs_svn r25613 | hinrik++ | [util/perl6.vim] and remove 'also' ...
08:29 masak it's just that it doesn't feel like a global hash to me. it feels more like a class attribute somewhere.
08:31 wayland76 masak: Well, if you work out where, let me know, and I'll see if it works with what I know.
08:32 masak aye.
08:32 * Matt-W generally distrusts globals until proven otherwise
08:33 wayland76 Matt-W: It goes against everything I've been taught too :)
08:33 moritz_ good morning
08:33 wayland76 moritz_: 'morning :)
08:34 wayland76 masak: Does your SVG module do parsing, or just generation?
08:34 masak wayland76: no validation so far.
08:34 masak that's the next step.
08:34 masak see Pod.
08:35 wayland76 Ok.  I have part of an XML parser based on moritz_'s earlier work
08:35 payload joined #perl6
08:35 masak wayland76: oh, I misunderstood you.
08:35 masak wayland76: I'm not sure I'll be parsing SVG anytime soon.
08:36 wayland76 IMO, though, generation should be done by generating objects, and then doing object -> tree
08:36 wayland76 No worries :)
08:36 masak wayland76: that's what the Perl 5 CPAN module does.
08:36 wayland76 I figured that
08:36 masak you could call my approach 'slightly more light-weight'.
08:37 masak and YMMV.
08:37 wayland76 Yeah, object-generation interfaces tend to be heavy :)
08:38 wayland76 I think a combination of your approach, and then parsing would be best :)
08:38 wayland76 Which is essentially what you just said :)
08:38 jimmy_ left #perl6
08:38 wayland76 Ok, I'm all happy now :), but should probably stop while I'm ahead :)
08:38 wayland76 Hey, I have a question
08:38 masak shoot.
08:38 wayland76 I'd like to reorganise S16 and S17
08:39 wayland76 (this is a question for everyone :) )
08:39 wayland76 I'd like S16 to be "IO Users and Groups"
08:39 wayland76 And S17 to be "Processes and Threads"
08:39 wayland76 oops, sorry, "Processes and concurrency"
08:40 wayland76 With S17 containing concurrency, the event loop, signals, and IPC
08:40 wayland76 and S16 containing objects that replace things like getpwent and getgrnam
08:40 masak I guess you meant "IO, Users and Groups", with a comma.
08:40 wayland76 Yes
08:41 masak I'm not sure adding "Users and Groups" is necessary.
08:41 wayland76 Unless I want to spec users that do IO :)
08:41 masak better to call it "IO and file systems" or something.
08:41 wayland76 Well, getpwuid essentially returns a user object
08:41 wayland76 But I'd like to replace it with something less OS-specific
08:42 moritz_ wayland76: for concurrency there's a haskell paper somewhere that unifies threads, stm and events...
08:42 moritz_ wayland76: I think we wanted Perl 6 to implement something like this, with a perlish interface
08:42 wayland76 That'd be kinda cool
08:43 moritz_ http://www.seas.upenn.edu/~​lipeng/homepage/unify.html this one I think (not 100% sure)
08:47 Tene perl6: say "omg" if 'foo' ~~ <a b foo bar>
08:47 p6eval rakudo 08b789: RESULT«Bool::False»
08:47 p6eval ..elf 25613: RESULT«undef␤»
08:47 p6eval ..pugs: RESULT«undef»
08:47 moritz_ perl6: say "omg" if 'foo' ~~ <a b foo bar>; say "no other output"
08:47 p6eval elf 25613, pugs, rakudo 08b789: OUTPUT«no other output␤»
08:48 Tene Huh.  I guess I'm misremembering smartmatch against arrays.
08:49 moritz_ that changed
08:49 masak see S03. :)
08:49 moritz_ you now write that with any(<a b foo bar>)
08:49 masak or *, "foo", *
08:50 Tene ah
08:50 Tene perl6: say "omg" if 'foo' ~~ any(<a b foo bar>)
08:50 p6eval elf 25613: OUTPUT«Undefined subroutine &GLOBAL::any called at (eval 125) line 3.␤ at ./elf_h line 4346␤»
08:50 p6eval ..pugs, rakudo 08b789: OUTPUT«omg␤»
08:50 moritz_ did we have a rakudo release yesterday? if yes, where is it announced? where's the tarball?
08:50 wayland76 masak: Your e-mail that refers to line numbers still hasn't arrived :)
08:51 masak wayland76: p6l mails arrive slowly.
08:51 wayland76 p6l: http://www.pmichaud.com/pe​rl6/rakudo-2009-02.tar.gz
08:51 masak and I removed you as a recipient, so you'll get it along with everybody else.
08:51 Tene moritz_: clearly advertised on http://rakudo.org/ of course
08:51 moritz_ ah, I see one on parrot-dev
08:51 bacek joined #perl6
08:51 Tene (lies)
08:51 wayland76 ok, I thought I'd noticed that they were a bit slow :)
09:03 bacek perl6: my $a = 1; $a &&= 42; say $a
09:04 p6eval rakudo 08b789: OUTPUT«get_iter() not implemented in class 'Integer'␤current instr.: 'prefix:=' pc 20533 (src/builtins/misc.pir:17)␤»
09:04 p6eval ..pugs: OUTPUT«42␤»
09:04 p6eval ..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
09:04 bacek perl6: my $a = 0; $a &&= die; say $a
09:04 p6eval pugs, rakudo 08b789: OUTPUT«0␤»
09:04 p6eval ..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
09:05 bacek perl6: my $a = 1; $a &&= die; say $a
09:05 p6eval pugs: OUTPUT«*** Died␤    at /tmp/Kxo31aXGRa line 1, column 12-22␤»
09:05 p6eval ..rakudo 08b789: OUTPUT«No applicable methods.␤␤current instr.: '_block14' pc 85 (EVAL_17:45)␤»
09:05 p6eval ..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
09:06 riffraff joined #perl6
09:09 bacek pmichaud: around?
09:10 masak bacek: no, he's asleep.
09:10 bacek masak: ah, ok.
09:14 Matt-W Wish I was asleep
09:18 bacek rakudo: say [*] (); say ().reduce: { $^a * $^b }
09:18 p6eval rakudo 08b789: OUTPUT«1␤Cannot reduce an empty list␤␤»
09:18 bacek perl6: say [*] (); say ().reduce: { $^a * $^b }
09:18 p6eval elf 25613: OUTPUT«Parse error in: /tmp/vH0Gl0cOtk␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say [*] (); say ().reduce: { $␤WHERE:/\<-- HERE␤  STD_red/prelude.rb:99:in `panic'␤  STD_red/std.rb:76:in `scan_unitstopper'␤  STD_red/std.rb:224:in `comp_unit'␤
09:18 p6eval ..STD_r...
09:18 p6eval ..rakudo 08b789: OUTPUT«1␤Cannot reduce an empty list␤␤»
09:18 p6eval ..pugs: OUTPUT«1␤␤»
09:19 pugs_svn r25614 | wayland++ | Return type for subst
09:20 wayland76 riffraff is a Viking (Norman) in the Asterix book
09:22 wayland76 (Hi riffraff :) )
09:23 * bacek finally finished triangle version of reduce metaop.
09:24 moritz_ bacek: do you have a separate branch for that?
09:24 bacek moritz_: no. It's in my master
09:25 bacek But I easily can create branch for it.
09:25 bacek Or single patch.
09:25 bacek git allows you to shoot foot in many different ways :)
09:26 moritz_ single patch or branch would both be much easier to test and apply than several commits spread out in master
09:28 bacek moritz_: Agreed. But I need review of current version beforehand.
09:28 bacek 15 minutes left of battery life...
09:28 moritz_ bacek: no hurry ;-)
09:28 moritz_ bacek: I won't get to look at your patch(es) before Monday anyway
09:28 bacek moritz_: no worries :)
09:31 moritz_ wayland76: you should also remove the XXX that your last commit left over
09:32 wayland76 moritz_: According to that link you sent me, it has an event loop, with green threads layered on top
09:33 moritz_ wayland76: that fits very well into the picture of integrating signals into the event loop
09:33 pugs_svn r25615 | wayland++ | Typo, my bad.  wayland--  Incidentally, I can karma myself here, I think :)
09:34 wayland76 moritz_: Good catch.  Fixed
09:35 bacek my... battery... dying...
09:35 wayland76 git: the great feet to colander converter
09:35 bacek see you soon
09:35 moritz_ ciao
09:35 wayland76 Quick, plug bacek back in
09:35 wayland76 !
09:35 wayland76 I didn't realise he was a bot :)
09:36 wayland76 (cya :) )
09:52 riffraff hi
09:52 masak greetings.
09:52 mikehh joined #perl6
09:58 pugs_svn r25616 | wayland++ | Moved Signals and IPC from S16 to S17, which can now be processes and concurrency.
10:00 pugs_svn r25617 | wayland++ | Applied new names to S16 and S17
10:01 Chillance joined #perl6
10:03 bacek joined #perl6
10:04 bacek hi again
10:05 Exodist joined #perl6
10:10 bacek bacek@icering:~/src/parrot/languages/rakudo.bacek$ ./perl6 -e 'sub m (&f) { say "a" ~~ m/<f>/ }; regex outer { a }; m(&a)'
10:10 bacek Non-Callable argument for f in call to m
10:11 bacek moritz_: (about #63458) it this message you are looking for?
10:12 moritz_ is a regex not callable?
10:12 moritz_ I'm not sure what the right error message would be
10:13 moritz_ but either "'f' is not a regex' or what you said
10:16 bacek moritz_: technically regex is just sub.
10:16 moritz_ bacek: or a method
10:17 bacek rakudo: sub m(&f) { }; say m(&foo)
10:17 p6eval rakudo 08b789: OUTPUT«Null PMC access in isa()␤current instr.: '!SIGNATURE_BIND' pc 2580 (src/classes/Signature.pir:377)␤»
10:17 bacek this is short version of your bug :)
10:20 masak @tell mberends I just did a very thorough review of your proto.perl5, and renamed it proto -- so now the bash script is gone.
10:20 lambdabot Consider it noted.
10:25 bacek moritz_: patch committed, pushed, ticket updated :)
10:31 bacek masak: around?
10:31 masak bacek: somewhat.
10:32 bacek masak: can you merge #63440 and #61602 please
10:32 * masak merges
10:38 pmurias joined #perl6
10:50 payload left #perl6
10:51 ejs joined #perl6
10:51 mikehh I have just rebuilt rakudo and am getting diagnostic messages with make test
10:51 mikehh starts with => Scope not found for PAST::Var '@INC' in
10:53 mikehh then current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)
10:53 bacek masak: And close #60164. It was integrated into Rakudo recently
10:53 masak mikehh: this is a frequently asked quesion nowadays.
10:53 masak mikehh: unfortunately, I don't know the exact answer. but it was on p6l yesterday.
10:53 moritz_ I think p6c
10:53 masak I can dig it out for you.
10:53 masak right.
10:54 * masak closes #60164
10:55 bacek masak: and #60368. I can't reproduce it anymore.
10:55 mikehh there are then 16 lines of called from info and then it reports the test ok
10:55 * masak checks #60368
10:56 mikehh All tests successful.
10:56 mikehh Files=29, Tests=236, 68 wallclock secs ( 0.18 usr  0.10 sys + 57.27 cusr  9.19 csys = 66.74 CPU)
10:56 mikehh Result: PASS
10:57 masak mikehh: http://www.nntp.perl.org/group/perl.​perl6.compiler/2009/02/msg3579.html
11:03 moritz_ bacek: pugs r25617 seems to have broken the test with rakudo master  - could you please fudge it?
11:04 bacek moritz_: lemme have a look
11:04 moritz_ it's probably just s/todo/skip/ in some places
11:04 moritz_ btw you can also say #?rakudo 3 todo
11:04 moritz_ instead of three lines of #?rakudo todo
11:05 bacek moritz_: 3 lines of "todo" works better with autounfudge.pl :)
11:05 mikehh I did all that stuff - had the problem with i386 Linux - switched to AMD64 Linux
11:06 masak mikehh: ok.
11:06 mikehh did a git pull, make realclean, perl Configure.pl, make test
11:06 masak mikehh: strange.
11:07 mikehh I have been having some weird problems recently - with parrot
11:07 mikehh I think I need to do a complete re-install
11:08 masak might be.
11:08 masak I tend to avoid most problems by doing 'make realclean' after every update.
11:09 mikehh each of the tests drom make test has 18 diagnostic lines of output starting with
11:10 masak lunch &
11:10 mikehh Scope not found for PAST::Var '@INC' in
11:11 mikehh current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)
11:11 pugs_svn r25618 | bacek++ | [t/spec] Properly fudge tests for Rakudo
11:13 mikehh and then the callback info
11:13 mikehh if I try make spectest it does exactly the same
11:14 mikehh FOR EACH TEST
11:15 mikehh but then reports ok
11:17 mikehh as far as I can see this is identical for diagnostics for all the tests
11:20 mikehh let me do a clean git clone of rakudo and see what happens
11:23 ruoso @tell TimToady I think it makes sense that the code where this semantics apply should be enclosed by { }... like "sub op { meta { ... } }"... but maybe it could simply be "CALLER::.eval { ... }" then...
11:23 lambdabot Consider it noted.
11:33 mikehh Nope I am getting the same
11:34 pugs_svn r25619 | wayland++ | Did some work on users and groups
11:36 masak mikehh: sounds to me your best shot at getting helped right now is to put together an RT ticket detailing the errors and your configuration. rakudobug@perl.org
11:38 mikehh I did a git clone, cd rakudo, perl Configure.pl --gen-parrot then make, make test
11:40 pmurias ruoso: i think we should have a "no failing tests policy" for mildew
11:40 wayland76 pmurias: And for all versions of Perl6, right? :)
11:41 wayland76 s/versions/implementations/
11:41 wayland76 (sorry :) )
11:44 pmurias wayland76: what i meant i not to have failing tests in our test suit (it's seperate as we can't run the offical one yet
11:44 wayland76 pmurias: Yeah, I figured it was something like that, but I saw some potential for humour, and explored that potential :)
11:44 wayland76 I usually can't help myself :)
11:47 Lorn joined #perl6
11:49 ruoso pmurias, what do you mean?
11:51 pmurias ruoso: keeping failing tests in ROADMAP and trying to keep all tests passing in mildew/t
11:51 ruoso I think that's a pretty sane policy IMHO
11:52 ruoso we might even rename that to mildew/regression
11:52 ruoso so we know that is the things that already work, and shouldn't stop working
11:53 pmurias t is a nice name ;)
11:55 ruoso :)
11:56 ruoso pmurias, I think I'll disable the mem trace
11:56 ruoso we know there are leaks
11:56 ruoso we don't need warnings everytime
11:56 ruoso ;)
11:57 pugs_svn r25620 | ruoso++ | [smop] we know we have lots of memory leaks, so I will remove the warnings untill we fix them
12:00 ruoso we already pass one spec-test... should we start fudging? ;) ;) ;) ;) ;) ;)
12:02 ruoso @tell TimToady v6/mildew/t/our_sub.t makes STD warns about undeclared names, but the names are being declared...
12:02 lambdabot Consider it noted.
12:07 pugs_svn r25621 | wayland++ | Created UserIterator and GroupIterator, and grouped some S29 functions together.
12:09 wayland76 Bedtime.  Night all!  &
12:09 ruoso wayland76, i'm not sure you actually need those... since Iterators are already private
12:09 wayland76 I don't understand the connection
12:09 ruoso I mean... when you ask for an Iterator, it is already supposed to be of some type private to that data structure
12:09 ruoso the Iterator role is really just an interface
12:10 wayland76 Oh, I see
12:10 ruoso So I'm not sure you need to spec UserIterator or GroupIterator
12:10 wayland76 So do I need to create a UserList with an iterator ?
12:10 ruoso in theory, at most you need a List of User
12:10 wayland76 I'm trying to provide the getpwent/setpwent/endpwent functionality
12:11 wayland76 I'm trying to provide a lazy list though.
12:11 ruoso lists are always lazy
12:11 wayland76 Do I do something special to get that?
12:11 ruoso unless stated otherwise
12:11 wayland76 So I make a users function that returns List then?
12:11 ruoso yes, and if you really wants to have a more stronger typing...
12:12 ruoso you can really make a "List of User"
12:12 wayland76 Ok.  Now I just need to figure out what object the .users() function goes on
12:13 ruoso wayland76, UNIX::passwd ?
12:15 wayland76 I'm trying to make User more generic, though.  Anyway, I'll fiddle with things some more, and people can shoot me afterwards as usual :)
12:16 ruoso wayland76, I think you can leave a more abstract implementation to be made from the specific implementations
12:16 ruoso so you have UNIX::passwd that returns UNIX::User
12:17 ruoso and Win32::passwd? that returns Win32::User
12:17 ruoso then someone can implement a more generic abstraction
12:19 ruoso I don't really know Win32 enough to know if there are commonalities between UNIX::User and Win32::User
12:19 pmurias one thing that would be very usefull to have in S32 is the spec for Capture class
12:19 wayland76 pmurias: It's in there somewhere
12:19 wayland76 Callable.pod
12:20 ruoso there is still one conceptual issue in Capture that needs solving
12:20 ruoso which is how much DWYMmery it should implemnet
12:28 wayland76 Of course, the S32 things are still quite incomplete, especially the stuff in Exception, Callable, and Abstraction
12:30 wayland76 ruoso: Me either (re: knowing win32), but I'm pretty sure they have a username, a user ID, and a home directory
12:30 wayland76 I doubt it's in a passwd file, though
12:31 ruoso I actually have a strong opinion about this kind of things
12:31 ruoso I think abstractions should be made as modules later
12:31 ruoso we should provide the things we have available...
12:31 ruoso and if that's OS-specifc, it goes into an OS-specific package
12:32 ruoso someone can implement abstractions later
12:32 pugs_svn r25622 | wayland++ | Replaced iterators with NameServices role, based on an idea of ruoso++ (although I doubt
12:32 pugs_svn r25622 | wayland++ | he wants credit for some of the things I've done with his ideas :) )
12:33 wayland76 ruoso: Hmm.  I guess it depends on what sort of cross-platformness you want to achieve
12:34 wayland76 I'd personally rather see the spec be as platform-neutral as possible
12:34 wayland76 But on the other hand, I'm assuming we'll implement all old functionality unless it gets booted from the core as Form.pm was
12:34 ruoso my point is that IMHO, you shouldn't deprive the platform-specific access in that name
12:34 ruoso because if you want to implement OS-specific code, you can
12:35 ruoso but if you want to implement OS-independent code, you can use the abstractions
12:35 wayland76 Oh, but I forgot to mention, I think that platform-specific code should be do-able
12:35 moritz_ but it shouldn't be the default
12:35 wayland76 via external calls
12:35 ruoso I mean... getpwent doesn't need to be imported by default
12:36 ruoso but as it's a libc function, it should be available by default
12:36 ruoso even so that you can implement a more abstract implementation
12:36 ruoso in that sense, NameServices is "almost" ok
12:37 ruoso it's just missing a UNIX:: before
12:37 ruoso since it's very UNIX specific
12:37 wayland76 I think you should have to do something like use libc:from<C>; to get libc functions
12:39 wayland76 as far as NameServices goes, I agree
12:39 wayland76 It's one of the things where you can't avoid unix specific
12:39 ruoso wayland76, "use libc:from<C>": that is a false generalization... because you're probably not allowing malloc
12:40 moritz_ why not? if somebody wants to shoot himself...
12:40 wayland76 Ok, use libc:from<C> qw(getpwent); or whatever
12:40 moritz_ I mean we'll allow a FFI anyway
12:40 wayland76 Perl6 -- lets you make swiss cheese of your feet :)
12:40 moritz_ so we can't prohibit it, so we can just as well allow it, with the usual "here be dragons" remarks
12:41 pugs_svn r25623 | wayland++ | Fixed name of NameServices.  wayland-- for not picking this up before :).
12:42 ruoso moritz_, right...
12:42 ruoso moritz_, you convinced me
12:43 ruoso we start with "use libc:from<C>"
12:43 wayland76 (which I pulled from S21, btw)
12:44 ruoso but that line probably needs to be longer
12:45 moritz_ use C:EVIL::libc ;-)
12:45 wayland76 Agreed.  S21 needs some work, but I'm not the one to do it :)
12:45 ruoso "use libc :from<C> :include<pwd.h>"
12:46 moritz_ :kill<me> ;-)
12:46 wayland76 The from, if I understand correctly, is really supposed to be an external platform (ie. C??? vs. JVM vs. ...)
12:48 wayland76 Anyway, it's past my bedtime, so I'd better get to bed, seeing as I have to be up an hour or two early tomorrow.  &
12:48 ruoso yes
12:48 ruoso it should be any external platform
12:48 ruoso like
12:48 ruoso mildew: use CGI:from<perl5>;
12:48 p6eval mildew: OUTPUT«Can't locate object method "terminator__S_401Semi" via package "STD" at ../../src/perl6/STD.pm line 3160.␤»
12:48 ruoso hmpf
12:50 ruoso as long as EXTERNAL::LOADER::perl5 or something like that is avaliable
12:54 ruoso I just wonder how you can parse a '.h' file and get the ABI right
12:55 moritz_ there was a summer of code project for parrot to do just that
12:55 moritz_ the nci compiler
13:09 literal do any Perl 6 functions act on the current topic when not given an argument?
13:10 literal or has that been eliminated?
13:11 moritz_ literal: only special syntactic forms like s/.../, m/.../, tr/.../
13:11 moritz_ literal: apart from that can '.say' if you mean '$_.say'
13:11 moritz_ also 'when' acts on $_ by default
13:11 moritz_ but it's not a classical built-in
13:12 literal yeah, that makes more sense than having to memorize a list of functions that use $_ like in Perl 5
13:13 literal if one likes to be terse, that is
13:13 moritz_ it gives a slight disadvantage for writing obfus ;-)
13:14 moritz_ but that's compensated by meta operators and other nice syntax
13:14 literal yeah, but it's only one extra char, .say vs say
13:14 moritz_ in obfus every char counts ;,-)
13:15 literal so the regex operators still use $_ ? e.g. this works? for @list { s/../../ } ?
13:15 moritz_ yes
13:39 |jedai| joined #perl6
13:48 simcop2387 joined #perl6
13:53 kanru joined #perl6
14:00 pmichaud for those that are seeing the @INC errors -- I need to know the version of TAP::Harness or Test::Harness being used on the system
14:00 pmichaud the problem is t/harness releated.
14:01 pmichaud (which is why there's no obvious pattern)
14:19 skids joined #perl6
14:24 araujo joined #perl6
14:27 pmurias perl6: $capture = \(1:2,3);$$capture = 7;say $capture;
14:27 p6eval elf 25623: OUTPUT«Can't locate object method "re_groups" via package "IRx1::Var" at ./elf_h line 2923.␤»
14:27 p6eval ..pugs: OUTPUT«*** ␤    Unexpected " ="␤    expecting "::"␤    Variable "$capture" requires predeclaration or explicit package name␤    at /tmp/9yCjGckU6u line 1, column 9␤»
14:27 p6eval ..rakudo 08b789: OUTPUT«Statement not terminated properly at line 1, near ":2,3);$$ca"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
14:27 pmurias pugs: my  $capture = \(1:2,3);$$capture = 7;say $capture;
14:27 p6eval pugs: OUTPUT«7␤»
14:27 pmurias pugs: my  $capture = \(1:2,3);$$capture = 7;say $capture.perl;
14:27 p6eval pugs: OUTPUT«\7␤»
14:27 pmurias pugs: my  $capture = \(1:2,3);say $capture.perl;
14:27 p6eval pugs: OUTPUT«CaptMeth {c_invocant = IFinite 1, c_feeds = [:MkFeed {f_positionals = [:IFinite 2,IFinite 3:], f_nameds = []}:]}␤»
14:44 PerlJam hey, when does dru become www?  I was going to post the rakudo release as news on perlmonks, but I'd rather the link point to rakudo.org than use.perl.org.
14:48 alester http://perlbuzz.com/2009/02/perl-6-stretche​s-its-wings-makes-a-milestone-release.html
14:48 alester Someone submit it to reddit, please?
14:50 pmichaud PerlJam: I think it's already done/there.
14:50 pmichaud oh, I guess not.
14:50 alester PerlJam: Tonight I hope.
14:51 alester I'm having problems with Markdown.
14:51 alester but I have the afternoon off.
14:51 pmichaud the announcement is already available from http://dru.rakudo.org/node/11   though.
14:51 alester yeah, but don't point at dru
14:51 alester dru will go away
14:51 PerlJam right, that's what I figured.
14:51 PerlJam I'll wait
14:51 alester Or I could just say screw it, and make it go live. :-)
14:52 PerlJam (or you guys could post to perlmonks whenever it's ready :)
14:52 alester but I'm wanting someone to click the Reddit submit, too.
14:52 alester on the Perlbuzz post.
14:52 alester My headline's more breathless. :-)
14:52 alester I'm hoping someone in media somewhere picks it up.
14:54 alester but right now, I must get back to testing cron jobs on the soon-to-be-new-server
14:59 cas joined #perl6
15:17 ruoso mildew: use CGI:from<perl5>
15:17 p6eval mildew: OUTPUT«Can't locate object method "emit_m0ld" via package "use CGI:from<perl5>␤" (perhaps you forgot to load "use CGI:from<perl5>␤"?) at mildew line 122.␤»
15:18 ruoso hmpf
15:30 simcop2387 joined #perl6
15:34 DemoFreak joined #perl6
15:41 justatheory joined #perl6
15:42 pmurias ruoso: it parses fine in a standalone mildew
15:42 pmurias mildew: say "hi"
15:43 p6eval mildew: OUTPUT«Can't locate object method "term__S_389identifier" via package "STD" at ../../src/perl6/STD.pm line 1270.␤»
15:43 ruoso it seems that lex is b0rk3
15:44 pmurias mildew: say "hi"
15:44 p6eval mildew: OUTPUT«Can't locate object method "emit_m0ld" via package "say "hi"␤" (perhaps you forgot to load "say "hi"␤"?) at mildew line 122.␤»
15:45 ruoso pmurias, I'm implementing a EXTERNAL::use_from_perl5($module)
15:45 pmurias i imports stuff from a perl5 module into a lexical scope?
15:45 pmurias s/i/it/
15:46 ruoso it actually returns a p5 string that behaves as a SMOP type
15:46 ruoso so you can call ::CGI.new
15:49 pmurias ::CGI := EXTERNAL::use_from_perl5("CGI")?
15:52 ruoso yes...
15:52 ruoso but that should happen at a bit lower level
15:52 ruoso so you can bind ::CGI without failing the lookup
15:53 pugs_svn r25624 | ruoso++ | [mildew] a first sketch on EXTERNAL.pm
15:54 pmurias btw we need to create a new capture in RoleHOW.dispatch as the invocant is different
15:55 ruoso hmm... there's the capture delegation
15:55 pmurias ruoso: you can used the faked infix:<~>
15:59 ruoso pmurias, yeah... I don't know why I didn't use it
15:59 nihiliad joined #perl6
15:59 Tene_ joined #perl6
16:01 pmurias ruoso: what will we use as our Str type?
16:02 ruoso pmurias, we'll need to implement it
16:02 ruoso at some point
16:02 ruoso what we need is a native buf
16:02 ruoso so string can be implemented
16:03 ruoso but I think that can be implemented later
16:03 pmurias i want to pass more of sanity but i'm usure what should int.Str return
16:03 pmurias maybe i could just write int.idconst for now?
16:03 ruoso for now, it could return an idconst, since that's what we have
16:07 mncharity joined #perl6
16:08 mncharity rakudo: say "a" ~~ /:ratchet a*a/
16:08 p6eval rakudo 08b789: OUTPUT«␤»
16:08 mncharity rakudo: say "a" ~~ /:ratchet a*/
16:08 p6eval rakudo 08b789: OUTPUT«a␤»
16:09 mncharity rakudo: regex as {a*}; say "a" ~~ /:ratchet <as>a/
16:09 p6eval rakudo 08b789: OUTPUT«␤»
16:09 jan_ joined #perl6
16:12 mncharity rakudo: regex as {z?a*}; say "a" ~~ /:ratchet <as>a/
16:12 p6eval rakudo 08b789: OUTPUT«␤»
16:12 mncharity rakudo: regex as {{say 5}a*}; say "a" ~~ /:ratchet <as>a/
16:12 p6eval rakudo 08b789: OUTPUT«Statement not terminated properly at line 1, near "*}; say \"a"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:12 mncharity rakudo: regex as {{}a*}; say "a" ~~ /:ratchet <as>a/
16:12 p6eval rakudo 08b789: OUTPUT«Malformed regex definition at line 1, near "as {{}a*};"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:13 mncharity rakudo: regex as {::a*}; say "a" ~~ /:ratchet <as>a/
16:13 p6eval rakudo 08b789: OUTPUT«␤»
16:14 ruoso pmurias, are you implementing use Foo :from<perl5>?
16:14 pmurias no, int.Str
16:14 pmurias mncharity: hi
16:15 mncharity TimToady: re http://feather.perl6.nl/syn/S05.html , "imply a : after every construct that could backtrack, including bare *, +, and ? quantifiers, as well as alternations.", do subrules belong on that list as well?  Or not?  Eg, should  'regex as {z?a*}; say "a" ~~ /:ratchet <as>a/' match or no?
16:15 mncharity hi pmurias :)
16:15 pmichaud subrules are on the list also.
16:15 mncharity ahh, thanks.
16:16 pmichaud /:ratchet <as>a/  is the same as   / <as>: a: /
16:16 mncharity TimToady: perhaps tweak S05 to clarify ^^ ?
16:17 pmurias mncharity: re smop as elf backend we lack a lot of things in the runtime like unicode support, multimethods
16:17 ruoso pmurias, we already have Multi :)
16:18 pmurias it dosn't work yet... :)
16:18 ruoso doesn't it?
16:18 ruoso ah.. yeah...
16:18 ruoso true
16:18 ruoso it doesn't
16:18 ruoso heh
16:18 mncharity anything else?  elf core isn't using multimethods, and I think the only unicode is the not-yet-really-used cent character for cursor.
16:18 pmurias what could be possibly a better idea is to translate (parts of mildew) mildew into Perl 6 and have it compiled by mildew
16:19 pmurias s/mildew/elf/
16:19 pmurias * what could be possibly a better idea is to translate (parts of) mildew into Perl 6 and have it compiled by elf
16:19 mncharity ahh, interesting
16:19 ruoso hmmm... I don't know... since it depends on STD, which is entirely p5
16:20 ruoso I'm not sure there is much to gain
16:20 ashizawa joined #perl6
16:21 mncharity elfblue uses gimme5/STD.  albeit a now somewhat out-of-sync revision.
16:22 mncharity objective of elfish/elfparse is to produce a gimme5/STD-like parse tree inside elf, without going out to STD.pmc.
16:23 mncharity re gain, hmm.  self hosting on top of smop?  backend self hosting now, front+backend self hosting when elfparse gets done.
16:24 ruoso I mean
16:24 ruoso self-hosting will only be possible once we have a regex engine in smop
16:25 ruoso I'm not sure what you mean by "backend self hosting"
16:25 mncharity elfrx builds rx on top of any p5re.  currently there's only a p5 version.  but that's intended to be cloned to p6 rsn, for some glacial value of rsn.
16:26 mncharity s/p5re/perl-compatible regular expression library/, which many/most languages, including C, have.
16:28 mncharity re "backend self hosting", elf is using an external parser.  so the "stuff other than the parser" is self compiling, but elf isn't (yet) compiling it's paser.  so "backend self hosting" rather than more fullish "self hosting".
16:30 mncharity basically, if you are happy writing mildew in p5 rather than p6, then there's perhaps not much to gain by using elf instead.  and as pmurias mentions, one could then translate a p5 mildew into p6, and run it on either elf or itself.
16:33 ruoso I see...
16:33 ruoso my point is that trying to do shortcuts here won't take us much far
16:33 ruoso i.e.: that's what happened with KP6
16:33 mncharity hmm, one issue is whether you are going for a "flesh out test suite now; then work toward being usable" development path, or a "be usable now; then work toward fleshing out test suite".  elf would aid the second, not so much the first.  though doing the first in p5... sounds painful.
16:34 mncharity at least doing more than a "make sure the smop core works" in p5
16:34 dalek rakudo: d9b471d | pmichaud++ | docs/spectest-progress.csv:
16:34 dalek rakudo: spectest-progress.csv update: 315 files, 7037 passing, 48 failing
16:34 dalek rakudo: Failure summary:
16:34 dalek rakudo:     S03-operators/reduce-le1arg.rakudo aborted 48 test(s)
16:34 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​9b471d5e410e0efa8eb62e6d77ca0bb3aaf4765
16:34 ruoso mncharity, one thing I think you didn't get yet, is that mildew compiles things down to C
16:34 pmurias mncharity: flesh out = ?
16:34 ruoso so the SMOP runtime is "self-hosting" for that matter
16:35 ruoso mildew compiles to the C code that initializes the mold objects
16:35 ruoso that are used to create new mold frames
16:35 ruoso which is how the smop interpreter works
16:35 ruoso s/interpreter/runloop
16:35 ruoso so we kinda have a bytecode
16:36 ruoso but it's a native shared object, instead of some arbitrary format
16:36 mncharity ruoso: I'm not sure I understood your kp6 argument.  I do get that mildew compiles down to C.  But if it's written in p5, it's not self hosting until mildew is a p5 compiler.
16:36 ruoso my point is not about that
16:36 mncharity unless smop is defined as a p5-runtime+smop-compiled-C hybrid?
16:36 mncharity s/smop is defined/mildew is defined/
16:37 ruoso mncharity, mildew is a compiler written in p5
16:37 ruoso that targets SMOP
16:37 ruoso the code compiled by mildew takes no notice of p5
16:37 ruoso (except for the p5 integration feature)
16:37 ruoso (which is a feature, not a dependency)
16:38 mncharity if "mildew is a compiler written in p5", then mildew can obviously not self-compile until mildew can run p5.  or at least that subset of p5 which mildew is written in.  :-S
16:38 mncharity s/run p5/compile p5/
16:38 dalek rakudo: 1f2f910 | pmichaud++ | docs/release_guide.pod:
16:38 dalek rakudo: Move Oslo to March 2009 release.
16:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​f2f9100f1c3128f77c475622821883cd62e4415
16:38 ruoso my point is not about that
16:38 ruoso my point is that as soon as SMOP has a regex engine,
16:38 * mncharity wonders if I should have said "self compile" rather than "self host"
16:39 ruoso once we have a regex engine in SMOP, we can start trying to compile STD with mildew
16:39 ruoso once mildew can compile STD,
16:40 ruoso we can think about re-implementing mildew in Perl 6
16:40 ruoso trying to port mildew to Perl 6 before that is something that is not worth the trouble IMHO
16:40 ruoso then, at some point we can bootstrap Perl 6
16:41 mncharity so the vision is to write a p6 compiler, in p5, which is strong enough to run STD, and then to think about reimplementing it in p6?
16:42 ruoso mildew is strong enough to "run" STD
16:42 ruoso smop is not strong enough to "run" STD
16:42 ruoso so mildew can't target SMOP when "compiling" STD
16:42 ruoso so mildew is not strong enough to "compile" STD
16:43 ruoso mildew can only copile the amount of Perl 6 that is supported by SMOP (or by the mildew CORE)
16:43 ruoso actually...
16:44 ruoso in compile-time, it doesn't even know about the CORE
16:44 ruoso except by the extent that STD knows about it
16:44 ruoso so the mildew CORE is guided by the way STD resolves the things like operators and such
16:45 ruoso but at run-time we already depend on the mildew CORE
16:45 ruoso which is currently written in Perl 6
16:45 rodi joined #perl6
16:46 mncharity i suspect the getting the mildew compiler to understand enough about p6 to take the STD ast and convert it to smop, independent of whether smop could handle it yet, is rather a larger todo item than 'mildew is strong enough to "run" STD' suggest.  but I could well be wrong, having not looked at mildew in a while.
16:46 nikn joined #perl6
16:47 ruoso mncharity, a lot of what mildew already can compile doesn't work by lack of runtime support
16:47 ruoso that is already happening
16:49 mncharity pmurias: re flesh out = ?, the long grueling process of working through t/ , expanding the language coverage of a new p6 implementation.
16:50 justatheory joined #perl6
16:50 mncharity while there are advantages to doing all that work in p5, it being a fast stable language, it's still, well, p5.
16:51 pmurias mildew is very little code actually
16:51 mncharity the rest of the envisioned impl being p6?
16:51 ruoso the biggest part of it is STD
16:52 ruoso what would really benefit mildew would be a Tree transforming language
16:53 mncharity if it were written in p6, I'd like to have one for elf too. :)
16:53 mncharity s/Tree transforming language/Tree transforming library/
16:54 ruoso mncharity, it's more a language really...
16:54 ruoso it's a lot of repetitive code
16:55 mncharity eep.  out of time.  thanks all for the interesting discussion.  I'd be curious sometime what lessons were drawn from kp6 - I suspect there's another interesting conversation there.
16:55 mncharity pm: thanks
16:56 mncharity could be good to continue this another time.  my impression is we haven't quite converged yet.  cheers &
17:00 TimToady ruoso: I played with various {}ly forms, but they all ended up with too many {}s  :)
17:00 lambdabot TimToady: You have 2 new messages. '/msg lambdabot @messages' to read them.
17:00 TimToady however, I'm more concerned about the semantics
17:01 TimToady we can't just run in the caller's lexical context
17:01 TimToady or then we can't see our own lexical parameters
17:01 ruoso we don't run "in"
17:01 ruoso we run "on top of"
17:01 TimToady I think of it more as a kind of virtual
17:01 TimToady I have no idea what you mean by that; what is the scope search order?
17:01 ruoso CALLER --> signature binding scope --> block scope
17:02 ruoso actually that's backward
17:02 TimToady you have competing scopes with this notion
17:02 TimToady I'm thinking of it more like how virtual methods work
17:02 TimToady where the invocant happens to be a lexical scope
17:03 ruoso (actually, that lookup would require the "operator" routine_dev)
17:03 TimToady so all the calls get virtualized but not the variables
17:03 ruoso all the calls *are* variables
17:03 TimToady variables just sit there
17:04 TimToady something does something to the variable to call it, and that is virtualizable
17:04 ruoso right... all calls perform variable lookups
17:04 TimToady the call to infix:<eq> finds &infix:<eq> in my scope, but that gets virtualized by the self that happens to be my caller's scope
17:05 ruoso that only to sub calls
17:05 TimToady viewing lexical nesting as a kind of derivation
17:05 ruoso or would that apply to types as well?
17:05 Ariens_Hyperion joined #perl6
17:06 TimToady a related question is whether it influences single dispatch (via the type view)
17:06 TimToady since your caller may have aliased Dog to an entirely different type
17:07 TimToady I'd guess we want to make things as generic as possible, apart from declarations directly visible
17:08 TimToady as I said, it's the same virtualization that the metaoperators need to do
17:09 ruoso I still see the "operator" routine_def as the nicer solution
17:09 ruoso ;P
17:09 TimToady what if you want a single-dispatch method to do this for its caller?
17:10 ruoso I'd say that's a rather weird requirement
17:10 TimToady it wants to be orthogonal to routines
17:10 ruoso but methods are something special
17:10 ruoso methods encapsulate
17:10 ruoso that's why they are methods
17:10 ruoso and not subs
17:10 TimToady I'm not gonna buy it
17:10 hercynium joined #perl6
17:11 TimToady and the granularity is wrong
17:11 ruoso so maybe a trait
17:11 TimToady also wrong granularity
17:11 TimToady some of these routines will want to do an amount of their own processing and then return their thunk
17:12 TimToady so I want a thunk marker
17:12 ejs joined #perl6
17:12 TimToady debated making it a form of return
17:13 TimToady but that seems like overkill
17:13 TimToady in any case, it'll be used over and over, so I don't want something terribly heavy looking
17:13 ruoso hmm...
17:13 TimToady CALLER::.eval {...} is way to ugly and big for that
17:14 TimToady I've been looking for a word better than "meta" and haven't really found one yet
17:15 TimToady but I'd like the feeling of it to be "abstract" rather than "upscope"
17:16 TimToady virtual would actually work if C++ hadn't stomped all over it
17:16 ruoso displaced
17:16 TimToady that's "upscope" again
17:17 TimToady I want to convey that this code has different meanings in context
17:17 ruoso it's actually like if it was a "auto-executed closure"
17:18 TimToady it's basically a lazy thunk; I considered "lazy" too...
17:18 ruoso but it's not that lazy
17:18 ruoso because it will get executed immediatly
17:18 ruoso as soon as it gets back to caller
17:19 TimToady indeed, I'd like the caller to be able to optimize after that first call, if possible
17:19 ruoso maybe just "thunk" then
17:20 TimToady the problem with thunk is that it's usually been applied to thunks passed down as function args in the literature
17:20 TimToady so I don't think thunk will fly for that reason
17:20 ruoso but I don't know how the caller would actually see it
17:20 ruoso I think it would still be handled by the function returning it
17:22 TimToady operationally, maybe a good compromise would be, bind all variables explicitly declared in this multi scope, but leave all other variables for virtual binding by the caller
17:22 diakopter slunk - a slothful thunk.
17:23 PerlJam slunk seems more verby than nouny
17:23 ruoso TimToady, it could simply lookup up to this function root and then look up in the caller
17:23 ruoso s/function/$?ROUTINE/
17:23 ispy_ joined #perl6
17:23 diakopter true... but it *is* a noun-verb of sorts ;)
17:23 TimToady yes, but if we hand something back to the caller between those two, the caller may be able to optimize it
17:23 diakopter it *slunk* back up
17:24 diakopter like a slinky
17:24 ruoso TimToady, I still don't know how the caller would intercept it... but I think that can be resolved later...
17:24 ruoso s/resolved/solved/
17:24 TimToady certainly we can intially do the lookup ourselves
17:25 TimToady as long as we keep a clean separation
17:25 ruoso in SMOP, it's simple to provide a made-up scope object that would be used as the outer scope of the block
17:25 TimToady maybe keep a mystery list kind of like post-declaration does and then look up all the mysteries in CALLER at the end
17:25 ruoso and this made-up object would lookup on the scopes up to the $?ROUTINE and then in CALLER
17:26 TimToady yes, but now you've mixed up the two lookups in one encapsulation, which is what I'm trying to avoid
17:27 ruoso but lookup is always one operation
17:27 TimToady no
17:27 TimToady it can fail now and succeed later
17:27 TimToady see post-declaration
17:27 ruoso that's compile-time
17:27 ruoso not run-time
17:28 TimToady same priniciple though
17:28 ruoso run-time it's just one operation
17:28 ruoso in mildew that goes to $scope.lookup($symbol)
17:28 TimToady the first lookup is at compile time, but the second must be at run time
17:28 TimToady because you don't *know* who the caller is
17:28 ruoso ah.. right... I'm actually ignoring the compile-time lookup... ok
17:29 TimToady the first can be at compile time because it's lexicals
17:29 TimToady keep 'em separate
17:29 ruoso but it should delay that inside a thunk/slunk/whatever
17:29 TimToady and not outside it :)
17:29 ruoso yes
17:29 ruoso but that's really just a compile-time issue
17:30 TimToady that's what "meta" does to its expression
17:30 ruoso meta doesn't really tells much
17:30 ruoso it just says it isn't something
17:30 ruoso but what it isn't?
17:31 TimToady it says that anything that is not obviously concrete is abstract
17:31 TimToady where we've arbitrarily defined concrete as "declared in this routine"
17:32 ruoso hmmm... probably better to forge a new name
17:32 |jedai| joined #perl6
17:32 TimToady since metaops do this, I thought it good to reuse meta
17:32 diakopter transcendent
17:32 TimToady is there some counterargument?
17:32 ruoso but metaops are meta *ops*
17:33 ruoso if you name it metasomething... it will be clear
17:33 ruoso but just "meta" doesn't really mean anything
17:33 TimToady they're rewritten in the caller's context
17:34 TimToady and I wanted something distinctive but short for huffmanly reasons
17:34 * ruoso still votes to forge a new neame
17:34 TimToady because we'll get lots of parallel multies like I pasted
17:34 diakopter noema
17:34 TimToady it needs to mean abstract or generic
17:35 TimToady it's possible we could find a metaphor that means both abstract and displaced
17:36 ruoso drugged
17:36 TimToady lofty
17:36 ab5tract joined #perl6
17:36 TimToady both meaning "high" :)
17:36 ab5tract aw man I totally missed the lead up to that punchline
17:36 ruoso I like "high"
17:36 TimToady but if we visually the caller as above us, then hoisting means high
17:37 TimToady haute
17:37 nihiliad joined #perl6
17:37 diakopter phusis
17:40 TimToady lift
17:41 TimToady hmm, lift and loft must be related in IE
17:41 diakopter aloft
17:41 ruoso actually... verbs look better...
17:41 ruoso lift { }
17:41 TimToady no braces
17:42 ruoso lift this block to the caller
17:42 ruoso TimToady, not even optionally? if you want a bigger block?
17:42 TimToady we could make it gather-like, I suppose, but we're going to be returning a lot of closures, and it interferes
17:43 diakopter is it like an async BEGIN block, but deferred to execute sometime later?
17:43 TimToady no, not async
17:43 PerlJam just scanning the last severl minutes of conversation ... "lift" seems to work on many levels.
17:43 TimToady only some of the binding is deferred to the caller's scope
17:43 diakopter har
17:43 ruoso lift EXPR or lift BLOCK
17:44 TimToady and it'd confuse the Haskellers, which is a plus :)
17:45 diakopter depending on how you view your stack, .... plunge
17:45 TimToady not very uplifting
17:46 diakopter exalt
17:46 ab5tract is there a POD related to what we are trying to name?
17:47 ruoso ab5tract, nope
17:47 diakopter (I'm not voting against 'lift'; I'm just funning naming)
17:47 pugs_svn r25625 | lwall++ | [STD] add statement_prefix:lift
17:47 diakopter what if you want to lift >1 levels
17:48 ruoso hmm... why would you want to do that?
17:48 ab5tract ruoso: care to undertake an explanation yourself? ;)
17:49 diakopter well, same reason you want to lift 1 level, but twice. :)
17:49 ruoso The problem is that the operator overloading in Perl 6 is defined lexically... So if you implement a variant for an operator, it usually will see the other variants from its own perspective
17:49 ruoso which is bad, because if you overloaded more than one operator, it will miss them
17:50 ruoso so, operators need to resolve symbols on the CALLER
17:50 ruoso so overloading is preserved
17:51 ruoso we were discussing how to represent that, which conceptually looks like a CALLER::.eval { }
17:51 ab5tract ah, interesting.
17:51 TimToady think of it as virtual methods where the actual type is the lexical scope of the caller
17:51 ab5tract so 'lift' or whatever would be used within the context of defining your operator?
17:51 ruoso yes
17:51 TimToady except it's multiple dispatches instead
17:51 ruoso it's a dynamic macro
17:52 diakopter ah, yeah, I get it now.
17:52 ab5tract cool :)
17:52 TimToady yes, even considered "multi macro" for a while  :)
17:53 ruoso maybe "dmacro" is a ugly but meaningfull name
17:53 ab5tract Hmmm, a wonder if there is a more technical term than 'deal' for dealing an individual card in poker
17:53 ab5tract some sort of old west saloon slang ;)
17:54 diakopter is it "parse-time" monkey-patching or runtime callback injection?
17:54 TimToady well, blackjack has "hit me", but that's a viewpoint change
17:54 ruoso diakopter, it's completely runtime...
17:54 ruoso diakopter, but it's not even injection
17:54 ruoso it just changes the lookup
17:55 ruoso it runs that code from the perspective of the caller
17:55 TimToady it's just deferred symbol table lookup on anything that isn't nailed down by the multi itself
17:55 ruoso about the deferred part
17:55 ruoso so lift also causes the routine to leave
17:55 ruoso or do you need to return lift?
17:55 TimToady I mentioned that earlier
17:56 TimToady most of the uses will be very short blocks that do implicit return, so I don't think it needs to have return semantics
17:56 diakopter does it run in the internal scope of the caller up to the point of the call?  so it's like a return, but inject a CATCH after I return, and at the end of the catch, go back to the continutation of the call?
17:57 ruoso diakopter, much simpler than that
17:57 ruoso it runs that code as if CALLER was the outer scope or $?ROUTINE
17:58 ruoso TimToady, right... but who triggers its execution
17:58 ruoso ?
17:58 TimToady it is otherwise a normal function call
17:58 ruoso rigth
17:59 diakopter sorry, I'm just trying to think of an implementation's generalization.
17:59 TimToady it just slows down when it starts executing the lifted code
17:59 ruoso diakopter, you need lexical scope hacks
17:59 ruoso when you run the "lifted" code, it will have a hacked scope
18:00 ruoso that only looks up until $?ROUTINE, then goes to CALLER
18:00 TimToady if you want to lift 2 levels you need the cooperation of your caller to put the extra lift around your call
18:00 diakopter okay, but what if new parsing rules were defined within the call
18:01 TimToady you can't change lexical definitions from your dynamic scope
18:01 ruoso diakopter, the only exception the compiler needs to make is to not bind any symbol that is defined outside of the routine
18:01 ruoso but that doesn't affect the parsing
18:01 TimToady we must have a well-defined language at every point, including the points where the language knows its generic
18:02 TimToady *it's
18:02 ruoso so it should probably raise a warn, or even an error if the lifted code looks for variables defined outside the routine
18:02 ruoso (compile-time, that is)
18:02 diakopter so, must a lifted scope must use the language of its caller, or can it use new rules?
18:03 diakopter lifted block
18:03 ruoso the lifted block is parsed as a block of the current scope
18:03 ruoso it doesn't change the parsing
18:03 diakopter alright. got it now :D; thanks.
18:03 ruoso I think that's actually a good reason to not call it a macro
18:04 ruoso because it's not related to syntax
18:05 * diakopter continues to think of it as remote injection with a callback tail.
18:05 ruoso diakopter, it doesn't change the stack order
18:05 ruoso it just change the lexical lookup
18:07 ruoso so...
18:07 ruoso sub foo { lift bar(); CATCH { die 'error' } }
18:07 diakopter I think this perspective is an implementation detail...?  right, I'm just saying it's easier for me to picture the scope-as-habitat/environment if I think of it as a block that's sent back to the caller to execute _inline_ and then calls back into the continuation of the call, and then returns..
18:07 ruoso will still die if bar raises an exception
18:08 diakopter ok, yeah.
18:08 ruoso but bar will be looked up in the CALLER (unless there is a my sub bar in the rountine)
18:09 ruoso diakopter, but you do need lexical scope hacks in order to "lift" code
18:10 ruoso I think we need some input from rakudo people about that...
18:10 ruoso I know SMOP is too much flexible when it comes to lexical scopes...
18:11 ruoso jnthn, pmichaud, [particle], you probably want to take a look at the past 2 hours
18:11 ruoso ;P
18:12 szabgab joined #perl6
18:12 diakopter but cannot a block be contained within an expression?  and that block can declare others..?
18:12 ruoso diakopter, it doesn't matter... that EXPR will be evaluated in the "lifted scope"
18:13 diakopter okay, so new rules can't be declared within a block within a lifted expression... b/c they could change the parsing of the caller's scope..
18:14 ruoso diakopter, they can, but if you define new rules inside a lifted block, they will only be valid inside that block... so nothing special about it
18:15 diakopter ah, ok. :)
18:17 ruoso TimToady, I think we could even forbid trying to access regular caller's variables in the lifted code... to keep the code as strict as possible yet...
18:17 diakopter so then, in general, no statement('s runtime or othertime effects) may change the parsing of the caller's scope, except for a "use ..." statement?
18:18 ruoso yes
18:18 ruoso it's still unclear how "use" does it tho
18:18 ruoso we know that at some point Foo::Bar::.EXPORTALL is called
18:18 ruoso but not much more than that
18:19 rhr joined #perl6
18:20 * ruoso later &
18:21 diakopter this kinda promotes lexical up a class or two in the language, forcing the implementation to include the scope notion in its runtime...
18:21 diakopter lexical scopes
18:21 Psyche^ joined #perl6
18:21 diakopter (unless it couldn't already be optimized away anyway)
18:25 pugs_svn r25626 | lwall++ | Document new lift statement for writing generic multis
18:26 milton131 joined #perl6
18:27 pugs_svn r25627 | lwall++ | off-by-one on the year
18:28 pugs_svn r25628 | pmurias++ | [smop] [mildew]
18:28 pugs_svn r25628 | pmurias++ | added EXTERNAL::eval_perl5
18:28 pugs_svn r25628 | pmurias++ | variable interpolation
18:28 pugs_svn r25628 | pmurias++ | &infix:<~> can take multiple arguments
18:28 pugs_svn r25628 | pmurias++ | t/01-sanity/02-counter.t passes
18:28 pmurias joined #perl6
18:31 diakopter std: lift lift 3
18:31 p6eval std 25628: OUTPUT«ok 00:02 33m␤»
18:31 diakopter std: lift lift lift;
18:31 p6eval std 25628: OUTPUT«Undeclared routine:␤   lift used at 1 ␤ok 00:02 33m␤»
18:31 diakopter std: lift do{ lift 3 }
18:31 p6eval std 25628: OUTPUT«Undeclared routine:␤   do used at 1 ␤ok 00:02 33m␤»
18:33 diakopter std: lift { lift 3 }.()
18:33 p6eval std 25628: OUTPUT«ok 00:02 33m␤»
18:37 autarch joined #perl6
18:37 TimToady statement prefixes always require following whitespace
18:37 autarch left #perl6
18:38 TimToady and the use of blocks without preceding whitespace is severely discouraged, unless you mean subscript
18:38 TimToady but there are exceptions
18:39 TimToady ({...}) being legal, for instance
18:39 TimToady and currently you're allowed to say sub foo ($a){...}
18:39 TimToady but that's bad style, I think
18:39 TimToady because it *looks* like a subscript when it isn't
18:41 diakopter std: lift do { lift say 2; sub GLOBAL::foo($a) is context { lift say $a }; foo(); }; &+foo(3);
18:41 p6eval std 25628: OUTPUT«Potential difficulties:␤  The + twigil is deprecated, use the * twigil instead at /tmp/mQ6ZYy9ef1 line 1:␤------> [32mis context { lift say $a }; foo(); }; &+[31mfoo(3);[0m␤Undeclared routine:␤ foo used at 1 ␤ok 00:03 47m␤»
18:41 TimToady gotcha
18:41 diakopter oh; S06 uses it..?
18:42 diakopter &+myfunc(42);
18:42 TimToady then it's a fossil
18:42 diakopter std: lift do { lift say 2; sub GLOBAL::foo($a) is context { lift say $a }; foo(); }; &*foo(3);
18:42 p6eval std 25628: OUTPUT«Undeclared routine:␤   foo used at 1 ␤ok 00:03 46m␤»
18:43 diakopter std: do { say 2; sub GLOBAL::foo($a) is context { say $a }; foo(); }; &*foo(3);
18:43 p6eval std 25628: OUTPUT«Undeclared routine:␤   foo used at 1 ␤ok 00:03 46m␤»
18:43 pugs_svn r25629 | lwall++ | correct fossil
18:44 TimToady foo() is only looked up lexically these days
18:44 TimToady so the compiler can know the candidate list most of the time
18:44 diakopter std: do { say 2; sub GLOBAL::foo($a) is context { say $a }; }; &*foo(3);
18:44 p6eval std 25628: OUTPUT«ok 00:03 46m␤»
18:44 diakopter !!!!!
18:45 TimToady two things
18:45 TimToady it's not bothering to look up &*foo since it's dynamic
18:45 TimToady and the is context is completely ignored
18:46 diakopter by STD? or by Perl 6
18:46 TimToady by STD
18:46 ab5tract okay, this is probably going to sound like a silly question, but does perl 6 allow module mixins?
18:46 justatheory joined #perl6
18:47 TimToady it's one of those things that is theoretically possible, but I don't seem much need to make it easy, given the other mechanisms we support by default
18:48 TimToady I don't see why you can't compose a role into a module thought
18:48 TimToady *though
18:48 TimToady a role is just generic code
18:48 ab5tract Right.
18:49 ab5tract it's just going to take a bit to change my way of thinking
18:49 TimToady but generally with modules we would stick to the normal export/import mechanism to get aliasing
18:49 TimToady since controlled aliasing is more controlled than uncontrolled aliasing, generally :)
18:50 ewilhelm joined #perl6
18:50 ab5tract right. so 'import A::B;' basically pulls the contents of A::B into whatever module I run it in?
18:50 * ab5tract hasn't coded perl since 2000, many lost brain cells ago
18:50 TimToady well, use, not import.  this ain't python
18:50 ab5tract okay
18:51 TimToady but use will import whatever A::B offers for export by default
18:51 TimToady and unlike in P5, will import into the lexical scope rather than package
18:51 ab5tract ah cool
18:53 TimToady forgot to diakopter++ on the fossil discovery
18:53 ab5tract alright, so there isn't the same distinction as in Ruby where libraries are loaded with a separate keyword (require) and getting the code into where you want it is a matter of using 'include'
18:53 TimToady use does both, though of course it can be broken down into require and import bits as in Perl 5
18:55 ab5tract gotcha. I'm trying to write a fascimile of a working Ruby Waves web app in perl6 for the Web.pm discussion
18:55 TimToady but there's no import keyword, it's just a routine that does binding
18:57 TimToady all it has to do is say things like COMPILING::<$foo> := MyModule::<$foo>
18:57 ab5tract right
18:57 barney joined #perl6
18:57 TimToady bbl & # shower and cogitation
18:57 ab5tract its all relatively moot though, as roles/traits are probably a better fit for the mixin style coding philosophy
18:58 M_o_C joined #perl6
19:00 diakopter well, more like std++ on the fossil discovery :P
19:01 tiarra joined #perl6
19:16 ashizawa_ joined #perl6
19:17 ashizawa joined #perl6
19:20 mberends joined #perl6
19:27 duke_leto joined #perl6
19:28 duke_leto left #perl6
19:36 frioux rakudo: 0=='0'
19:36 p6eval rakudo 1f2f91: RESULT«Bool::True»
19:36 frioux rakudo: 0==='0'
19:36 p6eval rakudo 1f2f91: RESULT«Bool::False»
19:37 TimToady oh, and a ruoso++ for the lift stuff
19:37 justatheory joined #perl6
19:41 diakopter std: lift lift &*\ ruoso
19:41 p6eval std 25629: OUTPUT«############# PARSE FAILED #############␤Syntax error (two terms in a row?) at /tmp/pg5CyHq5CH line 1:␤------> [32mlift lift &*\ [31mruoso[0m␤    expecting any of:␤      infix or meta-infix␤      infix stopper␤    postfix␤        postfix_prefix_meta_operator␤       standard
19:41 p6eval ..stopper␤ statement modifier ...
19:43 Ariens_Hyperion joined #perl6
19:53 TimToady doesn't look for unspace there
19:57 DemoFreak joined #perl6
20:00 * ruoso wonders what module to use to test use Foo:from<perl5>; but it should be a OO module
20:00 ruoso since mildew doesn't support P5Package yet
20:01 ruoso actually, that should probably be implemented directly in SMOP
20:02 Maghnus joined #perl6
20:08 pmurias ruoso: Class::MOP is already required by mildew
20:09 ruoso hmmm...
20:10 ruoso pmurias, ::Foo::Bar.baz() is failing...
20:10 ruoso it is composing the name of the package wrong
20:10 ruoso it's missing the ::
20:11 ruoso actually it's missing a lot of things... it was supposed to do a package lookup and then a symbol lookup, but it's doing something just wrong
20:15 pugs_svn r25630 | pmichaud++ | [t/spec]:  Avoid a possible pun between "class Q" and Q quote operator.
20:18 pugs_svn r25631 | ruoso++ | [mildew] comitting use foo:from<perl5> even without the test
20:19 TimToady note that :: is considered meaningless on the front of a package name, except in a declaration or as part of ::()
20:20 TimToady in particular, it doesn't mean global as it does in p5
20:20 ruoso TimToady, it's because mildew is not aware of types yet, so it turns plain Foo::Bar into &Foo::Bar()
20:20 ruoso so using the :: in the front makes it distinct
20:21 TimToady I attach STD's rudimentary symbol tables to the tree, so they're available, such as they are
20:21 ruoso TimToady, but STD is making warnings where it shouldn't
20:22 TimToady looking at that, but need food
20:22 ruoso std: module Foo { class Bar {method baz { } } }; Foo::Bar.baz
20:22 p6eval std 25631: OUTPUT«Undeclared name:␤      Foo::Bar used at 1 ␤ok 00:02 33m␤»
20:22 TimToady all that symbol table code needs a good refactoring
20:29 dalek rakudo: d3f4070 | pmichaud++ | src/parser/grammar.pg:
20:29 dalek rakudo: Add various Q-style quoting forms, including Q:PIR.
20:29 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​3f40706177e53087dba1ccd798f5ad856baac7d
20:33 aindilis joined #perl6
20:42 ashizawa joined #perl6
20:45 ashizawa joined #perl6
20:51 ashizawa joined #perl6
20:53 pugs_svn r25632 | pmichaud++ | [t/spec]:  unskip some #?rakudo tests.
21:00 ashizawa joined #perl6
21:02 ashizawa joined #perl6
21:02 ejs1 joined #perl6
21:05 ashizawa joined #perl6
21:10 bacek @tell pmichaud Can you please review my REDUCEMETAOP changes at http://github.com/bacek/rakudo/blob/6a68c91cf0311d​f9472886caefef750fb2503df4/src/builtins/assign.pir ?
21:10 lambdabot Consider it noted.
21:10 alester joined #perl6
21:12 pugs_svn r25633 | lwall++ | typo from Jon++
21:13 ashizawa joined #perl6
21:16 ashizawa joined #perl6
21:21 ispy_ left #perl6
22:04 pmichaud bacek:  I still don't like the dependency on the 'right' parameters, or the separate REDUCEMETAOP and REDUCEMETAOPCHAIN functions
22:04 lambdabot pmichaud: You have 1 new message. '/msg lambdabot @messages' to read it.
22:05 pmichaud I'd prefer to see them combined.
22:07 meppl joined #perl6
22:18 Whiteknight joined #perl6
22:23 |jedai| joined #perl6
22:25 bacek joined #perl6
22:27 bacek pmichaud: CHAIN implies && according to latest changes in spec.
22:29 bacek Triangular reductions of chaining operators always consist of one or more True values followed by 0 or more False values.
22:55 hercynium joined #perl6
22:57 szabgab joined #perl6
23:09 cas left #perl6
23:47 skids joined #perl6
23:56 bacek joined #perl6

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

Perl 6 | Reference Documentation | Rakudo