|
6.2.2 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 1 May 2005. |
|||
| Juerd | Str ?$ircname = $nick, | 00:05 | |
| Str $host, | |||
| Int ?$port = 6667, | |||
| How is this valid? I thought mixing zones was impossible? | |||
| (I can't think of a way to interpret this!) | |||
| arcady | that can't possibly be valid | ||
| Epix | can i have perl6 now? how far is pugs? | 00:06 | |
| Juerd | (Still, very impressive, that Net::IRC) | ||
| Epix: Yes, you can. Far enough to write useful stuff in. | |||
| Limbic_Region | Epix - see pugscode.org | ||
| arcady | well... actually it could possibly be valid, but not according to the documentation as I've seen it | ||
| Juerd | Epix: For example, today, Net::IRC was ported to Perl 6 | ||
| Epix: svn.openfoundry.org/pugs/ext/Net-IR...Net/IRC.pm | |||
| (I was just reading it) | |||
| Epix | Juerd: thats cool. | ||
| stevan | any lambda folk about? | 00:07 | |
| Epix | what about POE? is there that for perl6 | ||
| stevan | Epix: nope | ||
| nothingmuch | Epix not quite | ||
| Epix | what is lambada. is it the MOO? | ||
| is there a cgi for it | |||
| or mod_perl | |||
| nothingmuch | lambda refers to functional programming | ||
| Juerd | Epix: Note that since Pugs doesn't support OO yet, hashes of closures are used instead. That works very well with Perl 6's syntax :) | ||
| stevan | Epix: lambdafolk == Haskell programmer | ||
| nothingmuch | pugs is implemented in haskell | ||
| Juerd | (It works for Javascript too!) | ||
| stevan | Epix: there is CGI | 00:08 | |
| Juerd | Epix: See pugs.kwiki.org/?Perl6Nomenclature | ||
| nothingmuch | and as for CGI - there's a nice example of a memory game CGI | ||
| and stevan has written CGI.pm | |||
| stevan | svn.openfoundry.org/pugs/ext/CGI/lib/CGI.pm | ||
| Epix: and work has begun on mod_pugs | |||
| Epix | stevan: and later, mod_perl6? | 00:09 | |
| nothingmuch | this thing looks yummy: www.wallbike.com/Conquest.html | ||
| stevan | Epix: more than likely mod_perl6 will be mod_parrot | ||
| arcady | there was a mod_parrot at some point | ||
| stevan | arcady: it is still alive and well | ||
| arcady | ah, that's good to know | ||
| Epix | woah. so all of parrot will be usable with apache | 00:10 | |
| stevan | arcady: jhorowitz (of mod_parrot fame) is working with autrijus to get parrot embedded in pugs | ||
| Epix: I think that is the plan | |||
| so you can have mod_(perl|python|ruby|scheme|CommonLisp) in one app | |||
| Juerd | stevan: Please stop now, before I ejaculate spontaneously :) | 00:11 | |
| Odin-LAP | Juerd: What strange paraphilias you must have... | ||
| arcady | don't forget brainfuck | ||
| you can write a cgi in brainfuck! | 00:12 | ||
| now that would be... unique | |||
| Odin-LAP | Yes, please. Forget brainfuck. Otherwise you'll go nuts. | ||
| Juerd | My brain is fucked already. | ||
| Odin-LAP | Juerd: By whom? | ||
| Juerd | Childhood experiences | 00:13 | |
| Let's not discuss the details | |||
| Odin-LAP | I ... see. | ||
| Juerd | Then you are not yet blind. | 00:14 | |
| nothingmuch | in hebrew to fuck someone's brain means to yack | ||
| stevan | Juerd: Describe in single words, only the good things that come in to your mind about: your mother. | ||
| Juerd | stevan: I can't possibly describe the good things about my parents in single words. They are wonderful people. | 00:15 | |
| stevan | Juerd: (bladerunner reference) | ||
| Juerd | We don't always get along, of course. I think that's normal. | ||
| Limbic_Region feels like yacking | 00:19 | ||
| not to be confused with yack shaving | |||
| Juerd | What is that? | ||
| Limbic_Region | yacking = vomiting | 00:20 | |
| Juerd | yack | ||
| n : noisy talk [syn: {yak}, {yakety-yak}, {chatter}, {cackle}] | |||
| v : talk incessantly and tiresomely [syn: {jaw}, {yack away}, {rattle | |||
| on}, {yap away}] | |||
| Why do you feel like vomiting? | |||
| stevan | Limbic_Region: I wrote a basic Config::Tiny test suite based on your SYNOPSIS | 00:21 | |
| dont know if you saw yet | |||
| nothingmuch | what I meant by yacking is not vomiting, but what Juerd defined | ||
| stevan | so brain fuck in hebrew is to talk incessantly? | ||
| how odd | |||
| Odin-LAP | Them hebrew-speakers are odd. Like everyone else. | 00:22 | |
| stevan | although maybe it does make sense,.. brain-fuck == mess with someones mind | ||
| Epix | lemme get this straight | 00:25 | |
| perl6 will be compiled with pugs | |||
| the perl6 program itsself | |||
| stevan | Epix: Pugs is a perl6 interpreter | ||
| we will use it to bootstrap the perl6 compiler | |||
| which will be written in perl6 | |||
| Epix | stevan: why do that | 00:26 | |
| stevan | Epix: cause it is fun :) | ||
| Epix | no, really... why | ||
| stevan | Epix: honestly, I have no idea why that way is better than other ways | ||
| Epix | lol | ||
| stevan | actually I do,... on a very basic level | 00:27 | |
| Epix | maybe because then the compiler will run anywhere perl6 will run? | ||
| stevan | it makes it much easier to port to other platforms | ||
| Epix: exactly | |||
| Odin-LAP | Perl6 wants to be like most other languages ... self-supporting! | ||
| stevan is not the compiler guy, just the test guy | |||
| Epix | will p6 benchmark faster than p5? | ||
| stevan | Epix: some early tests autrijus did with compiling to Parrot actually were faster than p5 | 00:28 | |
| Epix: I imagine that in some ways perl6's speed will be bounded by parrot's speed | |||
| Epix | ok so faster :D | 00:29 | |
| stevan | Epix: i hope so :) | ||
| although perl5 isnt really that slow | |||
| it is comparable to Java in many situations | |||
| Epix | stevan: can you compile pytyon/ruby/CLisp to parrot yet? | ||
| stevan | of course Java can be slow as dirt, so thats not much of a comparison | ||
| Epix: I have no idea, that a question for #parrot :) | |||
| Odin-LAP | There is some ongoing work. | 00:30 | |
| arcady | at least with python and CLisp, not so much with ruby | ||
| Odin-LAP | I think Common Lisp is actually the most active... | 00:31 | |
| arcady | or just the most recent | 00:32 | |
| Odin-LAP | Heh. Might be. :) | ||
| arcady | people haven't gotten bored or found better things to do | ||
| Limbic_Region | stevan - thanks - I really appreciate it | ||
| I have come down a bit under the weather | |||
| Odin-LAP | arcady: Better than Lisp? ;> | ||
| Limbic_Region | don't think I will be playing at all tomorrow | ||
| Epix | whats the job market for perl | 00:33 | |
| arcady | yes. | ||
| Epix | hmm | 01:11 | |
| it looks like perl6 could make perl huge or break it. | |||
| well not so much break it | 01:12 | ||
| puetzk | stevan: revision - pugs does embed parrot now | ||
| as of r2750, 2005-05-05 15:20:07 -0500 :-) | 01:13 | ||
| you are forgiven for not being able to keep up :-) | |||
| Limbic_Region | oh no | 01:20 | |
| something doesn't look right | |||
| I sure hope I didn't fuck up | |||
| I just checked in a test for a bug in //= autovivication and svk is committing many many revisions??? | 01:21 | ||
| puetzk | Limbic_Region: thus far I see one revision from you... | 01:22 | |
| r2764 | Limbic_Region | 2005-05-05 20:19:23 -0500 (Thu, 05 May 2005) | 1 line | |||
| Changed paths: | |||
| M /t/operators/assign.t | |||
| Test for //= autovivication bug | |||
| Limbic_Region | oh - so must be local sync then | 01:23 | |
| Limbic_Region is quite new to this stuff | |||
| puetzk | yeah, svk would have to sync/smerge up to HEAD before it could commit | ||
| Limbic_Region could have swore he synced before modifying the test | |||
| *shrug* | |||
| that's only 1 of the 2 confirmed bugs I found today | 01:24 | ||
| the other one I am not sure how to test | |||
| if you write to a file but don't close it - the update is not reflected in the file even after the program ends | 01:25 | ||
| puetzk | hmm. system("pugs",...) and then check the file contents? | 01:26 | |
| Limbic_Region | well if the *proper* behavior is to flush/write at end of scope - it is easier to test | ||
| but I am not sure - I just know what it is doing right now isn't right | |||
| puetzk | indeed. flush should happen when the filehandle is finalized, if not before | 01:27 | |
| but I don't think pugs has any way to force a gc sweep | |||
| (nor am I sure what pugs has for memory managent in general when not using parrot) | |||
| Limbic_Region | right | 01:28 | |
| so it boils down to having the single test broken out over two test files | 01:29 | ||
| 1 to write the file | |||
| the second to read | |||
| Limbic_Region is checking existing io tests now to see if he can piggy back | 01:30 | ||
| yeah - I can just move the unlike in io.t to a new test that is guaranteed to run after | 01:32 | ||
| puetzk - I added that test too | 01:49 | ||
| now I just need to investigate the possiblility of 2 other bugs | |||
| another time perhaps | |||
| Limbic_Region calls it a night for the second time | 01:53 | ||
| meppl | gute nacht | 01:59 | |
| puetzk | holy Schmiel the painter... I know parrot isn't meant to be optimized yet, but Parrot_byte_index is impressive | 04:21 | |
| espescially given how it's used in does_isa (which is itself a not particularly optimal implementation of a seriously slow way to implement isa) | 04:22 | ||
| puetzk now has a bit less fear for how parrot intends to close the performance gap between it and perl5 | |||
| Khisanth | are you sure it's not just your machine? :P | ||
| puetzk | Khisanth: looking at oprofile :-) | ||
| and at the code | |||
| Khisanth | ooh PGE, PUGS will have P6 Rules RSN? :) | 04:24 | |
| puetzk has "hmm, is this really the hotspot?" patch that makes mandel.p6 40% faster, but I wonder if there's some larger scheme afoot - there must be some reason for it to be this bad besides neglect :-) | |||
| even with it in place, isa checks are still directly account for 10% of the runtime | 04:27 | ||
| Khisanth | puetzk: that sounds pretty bad | 04:47 | |
| puetzk can post the patch after he's done eating | 04:51 | ||
| it's very small | |||
| hmm, or perhaps not; the test failures aren't what I thought they were | 05:25 | ||
| apparently there's a real bug in it :-P | 05:26 | ||
| yup | 05:28 | ||
| durn testsuite :-P | 05:29 | ||
| or not | |||
| puetzk is away: zzz | 06:16 | ||
|
07:08
chady_ is now known as chady
07:48
chady is now known as Every-one,
Every-one is now known as chady
|
|||
| autrijus | puetzk: I want your patch :) | 08:04 | |
| bsb | What is the inverse of zip called? part? | 08:28 | |
| -> ? | |||
| autrijus | not sure there is one | 08:32 | |
| bsb | I can't find it, maybe I imagined it | 08:38 | |
|
08:44
decay is now known as decay_
|
|||
| mj | mj hates linking problems | 08:47 | |
| perlbot nopaste | 08:48 | ||
| perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
|
08:50
b6s_ is now known as b6s
|
|||
| pasteling | "mj" at 147.229.221.107 pasted "Win32 Makefile.PL sub parrot_config - works for me" (13 lines, 375B) at sial.org/pbot/9959 | 08:54 | |
| autrijus | I tweaked it a bit | 08:56 | |
| and committed as r2767 | |||
| scook0 | ooh, looks like someone put all the poetry into haddock | 09:07 | |
| autrijus | I'd be that someone :) | 09:11 | |
| bsb | Is helping to fill in the haddock docs any appropriate haskell newbie task? | 09:17 | |
| autrijus | sure! | 09:18 | |
| scook0 | That's what I'm doing | ||
| autrijus | as long as you commit fast enough, there's little chance of duplicating work :) | ||
| scook0: and I *heart* you for it :) | |||
| scook0++ | |||
| without haddock I can't refactor anything | 09:19 | ||
| that was partily what caused the AST.hs huge bloat | |||
| now I can finally put the dependency graph in my mind and think about restructuring things | |||
| scook0 | Actually, I'm surprised at how much of the evaluation I actually understand now | ||
| bsb | We if I ever understand anything, I'll be sure to write it up | ||
| I'm getting there, slowly | |||
| scook0 | What I did was to make printouts of Eval.hs and AST.hs, then study those and make notes | 09:20 | |
| autrijus | bsb++ | ||
| scook0 | Which parts are you looking at? | ||
| bsb | I've got a haskell question: why is comine "foldr (.) id" not foldr1 something? | 09:21 | |
| scook0: I'm bouncing all over the place with vim and hasktags | |||
| scook0 | My main tool is 'find | xargs grep' :) | ||
| autrijus | bsb: because | ||
| combine [] | |||
| needs to be | 09:22 | ||
| id | |||
| as there is potentially zero things to combine | |||
| bsb | Ok, I couldn't find combine use in that way, but wasn't sure | ||
| Actually, I've been trying to work out how pointy subs can get control exceptions | 09:23 | ||
| scook0 | autrijus: there was a whole bunch of things I was planning to ask you about pugs internals | ||
| autrijus | scook0: sure, ask ahead | ||
| scook0 | but I've forgotten most of them -- must write them down in future | ||
| :( | |||
| autrijus | that's ok :) | ||
| bsb | data SubType = SubMethod | SubRoutine | SubPointy | SubBlock | SubPrim | 09:24 | |
| autrijus | yeah, those are "levels" of subroutines | ||
| of Code, really | |||
| bsb | I added SubPointy locally | 09:25 | |
| doesn't link to anything much yet | |||
| scook0 | I just commited a little bit of stuff for that | ||
| So now you'll probably get a merge conflict :( | |||
| bsb | I think I'll be svn revert-ing anyway | 09:26 | |
| I was more to try and understand | |||
| s/I/It/ | |||
| autrijus | bsb: how is Pointy diff. from Block? | ||
| I thought they are same | |||
| bsb | Pointy's do control exceptions | ||
| scook0 | which control exceptions are you talking about? | 09:27 | |
| bsb | Any set &?BLOCK not &?SUB | ||
| s/Any/And/ | |||
| And return doesn't work, returns from outer sub | |||
| autrijus | bsb: er. I mean pointy vs block | 09:28 | |
| bsb | scook0: last, redo, etc | ||
| autrijus | not pointy vs routine | ||
| I know how pointy differs vs routine :) | |||
| scook0 | AFAIK, pointy and block are the same | ||
| autrijus | -> $x { say $x } | ||
| { say $^x } | |||
| scook0 | block is just a pointy without an explicit arglist | ||
| autrijus | I though those two are equiv | ||
| if so, then we just use SubBlock to represent both | |||
| bsb | Yeah, as long as blocks are doing "next" and co | 09:29 | |
| bare blocks, not just in for/loop/... | |||
| I might have this wrong btw | 09:30 | ||
| scook0 | isn't the loop responsible for handling &next etc.? | ||
| I think that's how pugs does it (not sure) | |||
| bsb | from s06:It also behaves like a block with respect to control exceptions. | ||
| scook0 | let me consult s06 for a sec... | ||
| "The arrow operator -> is almost a synonym for the anonymous sub keyword," | 09:31 | ||
| autrijus | I think loopish constructs are installed by the loop | ||
| not by the block | 09:32 | ||
| pugs reflects that understanding | |||
| bsb | autrijus: pointy vs block, do they topicalize $_ differently? | ||
| autrijus | I may or may not be wrong, but it makes sense to me | ||
| bsb: no idea... that may be the case | |||
| bsb | I'll look for a reference on that | ||
| scook0 | autrijus: about junctions... | 09:33 | |
| the extra set (dups) is for /one/ junctions, not /none/ junctions, right? | |||
| bsb | A06: "Bare subs" If no placeholders are used, $_ may be treated as a placeholder variable | ||
| scook0 | the IRC logs quote you as saying 'none', but looking at the code I'm pretty sure you meant to say 'one' | 09:34 | |
| threw me for a loop though | |||
| autrijus | scook0: yup | ||
| scook0: my thinko | |||
| scook0 | your thinko is currently enshrined in metaperl's writeup... :( | ||
| but I think my docs explain it | 09:35 | ||
| autrijus | scook0: writeup? | 09:36 | |
| scook0 | pugs/doc/src/Junc.pod | 09:37 | |
| autrijus | fixed | ||
| thanks so much | 09:38 | ||
| autrijus going to dinner & | |||
| scook0 | later | ||
| autrijus: when you get back, I have a question about Pads and multisubs | 09:39 | ||
| bsb | scook0: What's on you documentation todo list? | 09:42 | |
| scook0 | I'm just filling in gaps in AST & Eval at the moment | 09:43 | |
| bsb | Ouch | ||
| scook0 | dribs and drabs -- nothing big atm | ||
| my biggest problem was trying to understand the AST, without knowing why the parser was generating different bits | 09:44 | ||
| bsb | Where does big picture documentation go? (Once you can see it) | 09:48 | |
| scook0 | What do you mean by 'big picture' documentation? | 09:49 | |
| As in, a high-level overview of how a particular module operates? | 09:50 | ||
| bsb | Yes, and how modules interoperate | 09:52 | |
| bye for now | 09:57 | ||
| scook0 | bye | 09:58 | |
|
10:04
Aankh|Clone is now known as Aankhen``
|
|||
| nothingmuch | morning | 11:20 | |
|
11:21
chady is now known as chady_
|
|||
| scook0 | evening | 11:25 | |
| :) | |||
| stevan | autrijus: ping | 12:54 | |
| puetzk | autrijus: I'll post the speedup on p6i after I get the "" case handled right so it passes tests again | 12:56 | |
| stevan | autrijus++ # for making MMD work (well mostly work, be enough for my needs) | 13:26 | |
| Limbic_Region | salutations all | 13:28 | |
| autrijus ping | |||
| stevan | Limbic_Region: morning | 13:30 | |
| Limbic_Region | morning | ||
| Limbic_Region was just wondering if the two tests he checked in last night to expose the two bugs he found while writing Config::Tiny were ok | 13:31 | ||
| stevan | Limbic_Region: which tests? | ||
| Limbic_Region | one to assignment.t | ||
| and a test that had to be spread across two test files | 13:32 | ||
| so I modified io.t | |||
| and added io_final.t | |||
| stevan | Limbic_Region: I only saw a few .hs files in the last svn update | ||
| so I am not sure | |||
| Limbic_Region | this was from last night | ||
| I did what I thought was right WRT testing them - but still a bit unsure of this stuff | 13:33 | ||
| stevan | Limbic_Region: my update was first thing this morning, and before that was about 10pm EST last night | ||
| Limbic_Region: I have to restart my machine, but I will take a look when I am back up | |||
| puetzk is away: work | 13:34 | ||
| stevan | Limbic_Region: the $fh.say "hello" issue is not really an issue IIRC | 13:55 | |
| invocant syntax requires parans | |||
| I will see if I can find the reference | |||
| Limbic_Region | stevan - are you referring to my journal or to my test? | 13:58 | |
| I already spoke with autrijus about this | 13:59 | ||
| stevan | your journal | ||
| Limbic_Region | yeah | ||
| I listed everything even if it turned out not to be a bug | |||
| stevan | ah | ||
| ok | |||
| Limbic_Region | just so others would have the benefit of me learning in public | ||
| stevan | so am I correct? or crazy? :) | ||
| Limbic_Region | correct | 14:00 | |
| parens are required | |||
| stevan | :) | ||
| stevan was starting to wonder for a second there | |||
| Limbic_Region | autrijus confirmed 2 were real bugs and was unsure about 2 | ||
| Juerd | Say... | ||
| Limbic_Region | 2 were confirmed to be proper behavior | ||
| Juerd | If :{} can be used without parens | 14:01 | |
| Then can the same thing be done for :""? | |||
| $fh.say:"hello" | |||
| Limbic_Region | so I will investigate the 2 in question another time | ||
| stevan | Juerd: have you tried it? | ||
| Juerd | Although say $fh: "hello" looks awfully alike. | ||
| stevan: I'm sure this isn't already the spec. I'm thinking out loud. | |||
| stevan: I'm not wondering whether it is currently possible - I'm sure it's not. | 14:02 | ||
| stevan | Juerd: ah | ||
| Juerd | I'm wondering whether this would fit in the overall design | ||
| Though I don't think the required parens make any sense anyhow. | |||
| Limbic_Region thinks if you put a reference to a hash A as the value to a key in hash B, you should be able to modify hash A by dereferencing hash B appropriately | |||
| I am just not sure my syntax at attempting to do it was correct | 14:03 | ||
| Juerd | Limbic_Region: WRT references, as long as they're explicit, you can test with perl 5. | ||
| Limbic_Region | but I think that is a bug | ||
| stevan | Juerd: personally I like the look of (say $fh: "hello"), but not ($fh.say:"hello") so much | ||
| Limbic_Region: the test in io.t, I am going to wrap in a bare block, so that your $fh goes out of scope | 14:04 | ||
| Limbic_Region | stevan - not sure that is ok to do | ||
| I wasn't sure about GC guarantees | 14:05 | ||
| stevan | Limbic_Region: shouldnt finalization ideally happen when the variable is out of scope | ||
| Limbic_Region | but when the program ends - it should DEFINATELY be gc'd/finalized | ||
| stevan | Limbic_Region: agreed | ||
| but two checks cant hurt | |||
| if there is no guarentee, oh well | |||
| Limbic_Region | stevan - I am not sure if the p6 side of the house and the parrot side of the house has come to agreement on timely destruction | ||
| stevan | Limbic_Region: true | 14:06 | |
| Limbic_Region | so - I did the obvious thing and didn't assume | ||
| stevan | ok | ||
| I will leave it be then | |||
| Limbic_Region | in any case - if you could investigate the hash reference in a different hash being able to be dereferenced - I would appreciate it | ||
| stevan | which test is that? | ||
| Limbic_Region | I am off to attempt to paint the new house though I am still feeling extremely under the weather | 14:07 | |
| stevan | Limbic_Region: enjoy :) | ||
| Limbic_Region | my %hashA; my %hashB = ( 'foo' = \%hashA ); | ||
| Juerd | stevan: How about map @foo: { ... } versus @foo.map:{ ... }, then? | ||
| Limbic_Region | and then modifying %hashA through dereferencing %hashB | ||
| it doesn't work | |||
| see my journal entry | |||
| on that note | |||
| I am off | |||
| Juerd | stevan: Of say, you don't usually use the return value for another methed | ||
| method | |||
| stevan: But think in a broader scope, and think about more generic functions | 14:08 | ||
| stevan | Juerd: either map is fine with me, they both look ok | ||
| Juerd | stevan: With indirect method syntax, nesting is a hell of a job | ||
| stevan: Why is either map fine with you, while the same thing with "" instead of {} is not? | |||
| stevan | Juerd: I am going purely on aesthetics :) | ||
| Juerd | That's very dangerous. | 14:09 | |
| stevan | I agree nesting could get very ugly with the indirect approach | ||
| Juerd: I dont claim to be a language designer at all, nor to have the knowledge/training to be one | 14:10 | ||
| Juerd | stevan: $foo.bar:"baz".length # hm, impossible too | 14:11 | |
| The :{} must be very special | |||
| stevan | Juerd: and ugly too :) | ||
| I never liked perl5 indirect OO notation either | |||
| PerlJam | I've always thought :{} pretty and elegant | ||
| Juerd | as $foo.bar:{}.baz calls baz on $foo.bar:{}, not just the {} | 14:12 | |
| stevan | Juerd: I am not sure why :{} is so special | ||
| I think it may be a less than elegant reason | |||
| it worked before map {} @a did | |||
| Juerd | So : sort of binds much tighter than the previously tightest thing, the dot | ||
| Which makes me wonder, a lot, how the hell :pair.key is supposed to work. | 14:13 | ||
| Given foo:pair.key | |||
| Or would that have to be foo(:pair.key) to pass the key? | |||
| Hm, has to. | 14:14 | ||
| stevan | Juerd: now your just stiring up trouble :) | ||
| Juerd | stevan: You have to, if you want to test a language's design. | ||
| PerlJam | Juerd++ | ||
| Juerd | s/your/you're/ | ||
| Also, how lhs-whitespace-sensitive is :{}? Anyone? | 14:15 | ||
| stevan | pugs -e 'my @a = 1..5; say @a.map :{ $_ + 2 }' | 14:16 | |
| pugs: cannot cast from VList [] to Pugs.AST.VCode | |||
| pugs -e 'my @a = 1..5; say @a.map:{ $_ + 2 }' | |||
| 34567 | |||
| pugs -e 'my @a = 1..5; say @a.map: { $_ + 2 }' | |||
| pugs: cannot cast from VList [] to Pugs.AST.VCode | |||
| pugs -e 'my @a = 1..5; say @a.map:{ $_ + 2 }.join(", ")' | 14:17 | ||
| 3, 4, 5, 6, 7 | |||
| PerlJam | Juerd: I'd imagine that it's not at all sensitive to whitespace. | ||
| Juerd | PerlJam: You and pugs disagree | 14:22 | |
| But is there any spec that can point out who's right? | |||
| I can't find it | |||
| PerlJam | Juerd: surely I must be right. :-) | 14:23 | |
| Juerd | Because? | ||
| PerlJam | there's no difference between :{} and :foo as far as whitespace goes. Surely you've seen example code that uses "blah :foo"? | 14:24 | |
| Juerd | Why isn't there difference? | 14:25 | |
| And yes, I've seen code that uses blah :foo, but not code that uses $foo.blah :foo | |||
| The first is valid anyway, because :foo there is just a simple argument | 14:26 | ||
| For the method thing, special syntax is needed to make the call valid without parens | |||
| PerlJam | Juerd: the "best" way to find out is to ask p6l I guess. | 14:30 | |
| Odin- | That assumes a rather twisted definition of 'good'. | 14:33 | |
| ;) | |||
| PerlJam | Juerd: Check out the section on methods in dev.perl.org/perl6/doc/design/syn/S12.html | 14:36 | |
| but surely there must be some whitespace disambiguation for method $obj: :foo (if that's even legal) | 14:39 | ||
| perhaps that can be written method :foo $obj: too | |||
| ick. .:method :modifier looks to be legal (implied from S12). the leading dot is washed away when I look at that. It apears just as a series of :this :that :theother | 14:45 | ||
| stevan | Larry's First Law of Language Redesign: Everyone wants the colon. | ||
| dev.perl.org/perl6/doc/design/syn/S01.html | |||
| PerlJam | In this case I *don't* want the colon. I'm suffering from colon overload | 14:46 | |
| Can you call private methods using the IO notation? :method $obj: :modifier | 14:47 | ||
| that too is icky. | |||
| (I hope it's also illegal) | |||
| stevan | PerlJam: that notation is just ugly, and difficult to understand | 14:48 | |
| I hope it is illegal as well | |||
| regardless of whether it /should/ be possible or not | |||
| osfameron | shame Perl6 won't have a regular syntax making IDE/refactoring browser type magic possible. | 14:50 | |
| s/regular/half sane/ | |||
| wolverian | but it'll have the whole syntax tree available on the language level, which seems sane enough. | 14:51 | |
| stevan | TIMTOWTDI has it's disadvantages | ||
| osfameron | discussed this at london.pm meet yesterday | 14:52 | |
| the language might be able to parse itself (thus still allowing IDE magic) | |||
| but because Perl would be embedded in the editor, a crackfuelled enough module could actually crash the editor | 14:53 | ||
| PerlJam | osfameron: perl6 MUST be able to parse itself. | ||
| wolverian | my vim is compiled with perl and it never crashes. :) | ||
| osfameron | wolverian: yes, but it doesn't `use` modules on the fly in order to | 14:54 | |
| Odin- | grammar Perl6; # Or something like that... | ||
| osfameron | warp the syntax it's using. | ||
| PerlJam | osfameron: I'm sure at some point we'll end up with something akin to a markup language for tagging grammars such that syntax colorers can do their job. | 14:55 | |
| osfameron | that'd be cool | ||
| though I'm really interested in the magic ability of, say, IDEA (and I guess Eclipse now?) to highlight syntax errors in Java code as you type, | 14:56 | ||
| tell you which arguments functions take, and help you browse the object tree etc. | 14:57 | ||
| PerlJam | osfameron: As context sensitive as perl is, that might be a wee bit more difficult :-) | ||
| osfameron: however, an integrated help system is within easy reach I think (It's just a SMOP) | |||
| osfameron | PerlJam: so is it "context sensitivity" rather than lack of regular syntax that I should be bewailing? | 14:59 | |
| (or muttering about at any rate) | |||
| PerlJam | Well, they're intertwined really. | 15:00 | |
| Juerd | PerlJam: Re the colon: things wouldn't be so bad if we could use \w prefix operators | 15:11 | |
| But Larry has said that [a-z] should be for the user | |||
| jabbot | pugs - 2775 - * restrict findSub to &var now | 15:43 | |
|
15:53
meta_perl_ is now known as meta_perl
16:01
[2]meta_perl is now known as _metaperl,
_metaperl is now known as metaperl
|
|||
| Corion | Yay - 2 unexpected successes with r2774 ! sub_ref.t seems to grow closer to completion :) | 16:07 | |
| Hmmm. I'm currently merely wondering. If we have STM, shouldn't C<let> be "easily" implemented by using an STM wrapper for the block/rule that let() lives in? | 16:09 | ||
| ... and then simply rolling back the whole transaction? | |||
| PerlJam | Corion: seems like it should work. | 16:10 | |
| Corion | PerlJam: ... except of course, that I don't even know how to get my fingers on an STM container, and how to differentiate between let-assignments and non-let-assignments ;) | ||
| PerlJam | Corion: mere details! ;-) | 16:11 | |
| Corion | PerlJam: Yes - that's what we have autrijus for ! :) | ||
| Juerd | After writing a post to p6l, I get the feeling @(*&(*%&$^&*!)) should actually mean something in Perl 6... | 16:24 | |
| sorje | Some things never change. ;-P | 16:25 | |
| Juerd | And some things change continuously | ||
| Odin- | Juerd: Hmmm. Suggest it, and someone will find a way to make it have a meaning... | ||
| Juerd | It's interesting to see Perl 6 fit in both categories | ||
| Odin-: I sort of already did. I sent a table to perl 6 that has many gaps in it, that just scream for a feature | 16:27 | ||
| Odin-: Golfing will never be the same again | |||
| Odin- | Ouch. | ||
| Dammit. Why can't Gmail have a fixed-width font for the mail messages? >:| | 16:28 | ||
| Juerd | Apparently, it sucks. | ||
| PerlJam | Juerd: ??? looks like a really good "huh?" operator | 16:29 | |
| Odin- | Yeah. And one will be needed, given the operator soup we already have... | ||
| Corion | We already have ... - so maybe ??? should be the failing variant of it :) | 16:34 | |
| That is, ??? := ... but fatal | |||
| PerlJam | rather than a pragma to modify the behavior of ... ? | ||
| Corion | PerlJam: Ah, pragmata are useful, but think of the huffman coding :) You might want to have different kinds of ... - I imagine ... , ??? and XXX FIXME! :-) | 16:35 | |
| Maybe !!! as well ;-) | |||
| PerlJam | Corion: suggest it to p6l. | 16:36 | |
| seriously. | |||
| Odin- | Hrm. !!! should rather be the fatal one... | ||
| Corion | PerlJam: I've stayed away from p6l - I would need to subscribe to it, and that would direct even more spam in my direction ... | ||
| Odin-: Maybe ??? should be caught in a try{} block, while !!! aborts the program? :) | |||
| PerlJam | Corion: no need to subscribe. | ||
| Corion | PerlJam: No need to? | ||
| Corion goes looking | 16:37 | ||
| Odin- | Corion: Hmm. That'd be an interesting distinction, yes. | ||
| Corion | ... but first, we should find consensus on what !!! should do, opposed to ???, and maybe XXX | ||
| Juerd | PerlJam: Sure, but what does the huh? operator do? | 16:38 | |
| Corion | I think that "XXX" should take a string to EOL (like, XXX FIXME) and die, while ... outputs the "unimplemented" warning, "???" dies, and "!!!" really dies. | ||
| Juerd | PerlJam: Is it good friends with the wtf? operator, "?!"? | ||
| Corion | Maybe ??? and !!! should also take a string until EOL | ||
| PerlJam | Juerd: I'm not the language designer. My job is to make a mess, @larry's job is to clean it up ;) | ||
| Corion | Like "??? magic" and "!!! Should never happen" | ||
| Odin- | Juerd: 'say "What the hell am I supposed to do here?";'! | 16:39 | |
| Juerd | PerlJam: Then make a mess already, and tell me what the huh? operator does | ||
| Odin-: In other words, we're just making ??? and !!! aliases for ...? | |||
| Corion | Hmmm. I'm not sure I see the/a difference between "???" and "XXX" ... | ||
| Odin- | Juerd: So it would seem. | ||
| Juerd | XXX is a fixme | ||
| But it must continue to run. | 16:40 | ||
| It can mean undef. | |||
| Corion | Juerd: Ah - the difference is maybe simply the syntax - "XXX" takes an implicit string until EOL, while "..." continues to parse. | ||
| Odin- | Hmm. Those would sort-of work like in-code comments? | ||
| Corion | ... which will make autrijus scream because special-casing in the parser is ugly :) | 16:41 | |
| PerlJam | Corion: so ...; say "foo" would work? | ||
| Juerd | Corion: It's no special case if you group it with # | ||
| PerlJam: Be valid syntax, but die. | |||
| Corion | Odin-: Yes, except that they produce output in the program :) "XXX FIXME" is like "warn 'FIXME at $?LINE" | ||
| Juerd: True | |||
| Juerd: No, "..." continues to run from what I know | |||
| Juerd | Corion: wtf? | 16:42 | |
| Corion | (but then, I'm out of sync with the official Perl6 syntax since two or three years) | ||
| Juerd | Corion: I thought it'd die. | ||
| PerlJam | Corion: Larry has said that such behavior would be modulated by pragmata | ||
| Juerd | * However, ... as a term is the "yada, yada, yada" operator, which is used as the body in function prototypes. It complains | ||
| Odin- | Corion: Yeah. Which might be interesting... | ||
| Corion | Juerd: I thought it would output "unimplemented code at ...", but continue to run | ||
| Juerd | bitterly if it is ever executed. | ||
| S03 | |||
| "complain bitterly" I agree is somewhat too vague | |||
| Corion | Juerd: "Complain bitterly" is "output a warning" to me. | ||
| Juerd | It's "die" to me | ||
| Corion | Juerd: But "..." is more like "uh - I hope you know what you're doing", where "???" is more like "WTF?", and "!!!" is more like "WTF!" | 16:43 | |
| Odin- | Juerd: Hmm. I'd read it as "print a huge, ten page banner alerting to an error, and then go on"... | ||
| Corion | Juerd: I see "..." as having practical use when stubbing out code - I would want the code to warn but continue. How else would you do that? | ||
| sub do_magic { ... } | 16:44 | ||
| looks good, and should warn "do_magic is not yet implemented at $?LINE" | |||
| while | |||
| sub magic { ??? } | |||
| should die. | 16:45 | ||
| (I don't have a funky error message handy) | |||
| Odin- | "functionality not available"? | ||
| Juerd | Corion: Do you mind if I quote you verbatim on this? | 16:46 | |
| Corion | Juerd: np :) | ||
| Juerd: I think the "..." is used often in pseudo code, and Perl6 should run pseudo code :) | |||
| Odin- | At this rate ... eventually it will. | ||
| Corion | "??? (.*)$" is sufficiently vague to warrant a "die $1", and "!!! (.*)$" should "say $1;POSIX::exit(1)". Maybe it should execute END{} blocks. Maybe !!! is just a bad idea. | 16:48 | |
| (of course there should be a pragma, like "use fatal;" or "use fatal 'elipses'" to turn even "..." into a die()) | 16:50 | ||
| "no fatal 'elipses' or $you.get( burned => by, 2*foci ); | 16:51 | ||
| pmichaud | juerd: your table of ops is excellent -- I'm thinking I'd like to put a copy in the perl6 svn | 17:28 | |
| autrijus | hm | 17:41 | |
| anyone knows what precedence does [+] have? | |||
| is it in the same slot as "loose" list operating prefix functions? | |||
| Juerd | pmichaud: Be my guest | ||
| autrijus: Are there tight prefix listops then? | 17:42 | ||
| autrijus | that is, between | 17:45 | |
| , Y | |||
| and | |||
| ==> | |||
| i.e. normal function application precedence | |||
| no, there is none | |||
| pmichaud | what's the arity of [+] ? | ||
| it's unary, yes? | 17:46 | ||
| I'm going to guess that [+] is fairly tight, so one can write | 17:47 | ||
| if [+]@array > $max { ... } | 17:48 | ||
| autrijus | [+] is tight? | ||
| Juerd | I'd think it's a list op | ||
| autrijus | [+] 1, 2, 3; | ||
| Juerd | So very untight | ||
| autrijus | uh oh. | ||
| round 1, fight! | |||
| pmichaud | heh | ||
| no, I'd think that [+] 1, 2, 3 is really written [+] [ 1, 2, 3 ] | |||
| Juerd plays the annoying arcade music | |||
| pmichaud | again, it's a metaprefix op | 17:49 | |
| Juerd | pmichaud: Wow, that almost says out loud that it wants to be written as [+: 1, 2, 3] | ||
| pmichaud | most prefix ops are unary | ||
| Juerd | Uh oh. | ||
| autrijus | larry has written something like | ||
| [+] 1..9; | |||
| does it parse as | |||
| ([+]1)..9; | |||
| ? | |||
| or is .. even tighter? | |||
| pmichaud | .. is in the non-chaining binary ops | ||
| autrijus | .. is actually quite loose | 17:50 | |
| there's no symbolic unary looser than it | |||
| so it will be parsed as ([+]1)..9 | |||
| if it is symbolic unary | |||
| pmichaud | indeed | ||
| autrijus | so by neccessity I think it's a listOp | ||
| (I think.) | |||
| pmichaud | if we put it too loose, we'd be writing if ( [+]@array ) > $max when we want to sum an array | 17:51 | |
| autrijus | but that's not diff than | ||
| if sum(@array) > $max | |||
| rather than | |||
| if sum @array > $max | |||
| pmichaud | I'm not advocating a particular position here :) | ||
| autrijus | so hm. | 17:52 | |
| another alternative if we keep it as symbolic unary | |||
| is | |||
| [+](1,2,3) | |||
| pmichaud | well, if you think it fits better down with the listops, that's okay with me for now. A good question for p6l, however | ||
| autrijus | I am, incidentally, also not advocating a particular position :) | 17:53 | |
| symbolic unary is slightly easier to understand | |||
| as we didn't really have symbolic listops | |||
| other than ==> <== | |||
| pmichaud | yes, that's what I was thinking -- that it's easier to understand as a unary than a listop | ||
| autrijus | Juerd? | 17:54 | |
| Juerd | Yes? | ||
| pmichaud | I probably shouldn't say this, but part of the reason that "not" and "true" got bundled into "list op (rightward)" precedence was to avoid creating another "loose unary" level :) | 17:55 | |
| autrijus | pmichaud: so, how tight do you think [+] wants to be? | ||
| the existing "Symbolic Unary" level? | 17:56 | ||
| pmichaud | I dunno -- I'd have to look at more of the examples. Larry's [+] 1..9 makes a pretty convincing case for a loose level | ||
| Juerd | Shall I query p6l? | ||
| autrijus | pmichaud: but later luqui switched to write [+](1..9) | ||
| pmichaud | maybe luqui wasn't sure of the precedence, in which case the parens disambiguate so you don't have to worry about them :-) | 17:57 | |
| autrijus | Juerd: sure, with a note that 1)pugs at this moment has it as symbolic unary level, same as filetests | ||
| pmichaud | I do that a lot | ||
| autrijus | and that [+] works now. about to commit | ||
| Juerd | ok | ||
| autrijus praises the builtin foldl, foldM, foldr, foldr1 | 17:58 | ||
| so [] is foldl, right? | 17:59 | ||
| i.e. it starts taking the leftmost 2 elements | 18:00 | ||
| and fold rightwards | |||
| instead of the other way around | |||
| if the list is empty, I assume undef? | 18:01 | ||
| and if the list is size of one, returns that element? | |||
| pmichaud | it might need to contextualize the element | 18:02 | |
| autrijus | hm? | ||
| pmichaud | but yes, return the element | ||
| well, <+> "hello" should return zero | |||
| autrijus | the context casting is done elsewhere :) | ||
| op1Fold op v = do | 18:03 | ||
| args <- fromVal v | |||
| case args of | |||
| (a:as) -> foldM (op2 op) a as | |||
| _ -> return undef | |||
| pmichaud | I'm probably not following your question closely enough (I'm doing about three tasks at once here :-| ) | ||
| Juerd | Whoa, what's <+>? | ||
| autrijus | I think that's it. testing | ||
| pmichaud | sorry I meant [+] | ||
| Juerd | pmichaud: You scared me there :) | ||
| autrijus | pugs> [+] 1, 2, 3 | ||
| (1, 2, 3) | |||
| pugs> [+](1, 2, 3) | |||
| 6 | |||
| done as r2777. | 18:04 | ||
| pmichaud | hmmm | 18:05 | |
| autrijus | pmichaud: counterintuitive? :) | 18:06 | |
| pmichaud | well, I think I'll wait for p6l to decide. Looking at that example I'm guessing it'll end up at listop precedence, but I can't say for sure | ||
| autrijus | incidentally, me do, too | ||
| pmichaud | something like [+] foo(), 3, 4 looks kinda funny | ||
| as would [+] (3+2)*4, 5, 6 | 18:07 | ||
| that seems to argue for symbolic unary op precedence :) | |||
| or maybe not | |||
| I'm glad I'm not a language designer :) | 18:08 | ||
| autrijus | probably not :) | ||
| pmichaud | foo( [+] (3+2)*4, 5, 6 ) | ||
| Odin-LAP | [+] (3+2)*4, 5, 6 == 31 # ? | ||
| autrijus | pugs> [+] (3+2)*4, 5, 6 | 18:09 | |
| 31 | |||
| switched to listop. | |||
| pmichaud | so, my last example is a single-argument call to &foo, yes? | ||
| i.e., to use a reduce op in a function call list of params you'd need to parenthesize it | 18:10 | ||
| Odin-LAP | It should be, shouldn't it? | ||
| autrijus | yup | ||
| Odin-LAP would find anything else rather strange... | |||
| pmichaud | fair 'nuff. I'm sure @Larry will come up with the answer and the (in retrospect obvious) reasons why :) | ||
| oh yes, Luke has the relevant quote | 18:11 | ||
| listop, definitely. | |||
| autrijus | it's done :) | 18:12 | |
| pmichaud | okay, back to parrot and pge | ||
| jhorwitz | mornin' autrijus :) | 18:13 | |
| autrijus | hey jhorwitz | ||
| Juerd | autrijus: Heh, we were typing a reply at the same time :) | ||
| jabbot | pugs - 2776 - * ghci can't handle embed_flags. | ||
| pugs - 2777 - * First cut at folding metaoperator: [+] | |||
| pugs - 2778 - * switch [+] to list operator precedence | |||
| pugs - 2779 - * prettify App better. | |||
| pugs - 2780 - fix a typo in hangman.kwid | |||
| autrijus | Juerd: this often happens. | ||
| jhorwitz | reading over logs from yesterday...were you asking for a registered parrot compiler for pugs (e.g. parrot's compreg/compile?) | 18:14 | |
| autrijus | jhorwitz: yes. | ||
| jhorwitz: I'd like to, once pmichaud et all get to it, allow callback from pge to perl6 | 18:15 | ||
| that is, code blocks | |||
| and it needs pugs being registered as a parrot compiler | |||
| pmichaud | there's good reasons for having pugs as a registered compiler anyway :) | ||
| but yes, being able to call back from pge would be really cool | |||
| autrijus | common lisp and tcl callback would be cool too :) | 18:16 | |
| pmichaud | (BTW, the callback itself isn't going to be hard once we have that -- I can put that into PGE now) | ||
| autrijus | nice | ||
| jhorwitz | parrot will need to somehow call the backend (like doCompileDump). | ||
| pmichaud | we haven't really figured out the syntax for callouts to other langs | ||
| autrijus | but I think for replacing Parsec, named capture is the one missing feature | ||
| pmichaud | I'm doing subrules now, simple named captures will be very soon | 18:17 | |
| autrijus | cool, pmichaud++ | ||
| pmichaud | I've already got the support in for it -- just need to parse the rules correct | ||
| autrijus | jhorwitz: right. give me the signature? | ||
| pmichaud | actually, I could probably do named captures first | 18:18 | |
| before subrules | |||
| hmmm | |||
| autrijus | jhorwitz: oh, it's a weird type | ||
| pmichaud | unfortunately, right now what I really need to do is lunch, so I'll do that and be back | ||
| jhorwitz | autrijus: signature for what | ||
| autrijus | pmichaud: see ya | ||
| ParrotInterp -> CString -> Ptr PMC | 18:19 | ||
| jhorwitz | ah, for the compile | ||
| autrijus | jhorwitz: Parrot_compiler_func_t | ||
| now the obvious question is... I have PIR now, how do I manufacture a PMC? | |||
| pmichaud | call the pir compiler :-) | ||
| autrijus | clever! | ||
| pmichaud | that's how PGE does it :) | 18:20 | |
| jhorwitz | yep | ||
| autrijus | mm twolevel compilation | ||
| ok. that's utterly simple then | |||
| pmichaud | and that's why PGE does it that way :) | ||
| pmichaud lunch & | |||
| autrijus | jhorwitz: you have time to add compreg code? you can safely assume a compileToParrot | 18:21 | |
| compileToParrot :: ParrotInterp -> CString -> Ptr PMC | |||
| jhorwitz | how are we calling this from a non-embedded parrot? | 18:22 | |
| autrijus | we are not | ||
| :) | 18:23 | ||
| jhorwitz | ah. | ||
| autrijus | GHC 6.4 can make .so, true | ||
| but that's relatively unimportant | |||
| jhorwitz flips over brain | |||
| autrijus | it's there purely for callbacks into pugs. | ||
| jhorwitz | got it | ||
| autrijus | but I guess we can also make pugs an evaluator for arbitary .imc | ||
| pugs foo.imc | |||
| and have it Just Work | 18:24 | ||
| that's easy, too :) | |||
| autrijus embraceth and extendeth | |||
| jhorwitz | well, my ultimate goal is to have a pugs compiler for mod_parrot, which *will* be called from outside of pugs. this will help jumpstart that, though. | ||
| autrijus | you can link against libpugs. :) | 18:25 | |
| which will include libparrot. | |||
| autrijus smiles | 18:26 | ||
| jhorwitz laughs diabolically | |||
| luqui | it appears that [+] isn't behaving as a listop | 18:29 | |
| pugs -e 'say [+] 1,2,3' | |||
| 123 | |||
| perlbot: seen anybody? | 18:31 | ||
| jabbot | luqui: I havn't seen anybody , luqui | ||
| luqui | perlbot: seen autrijus? | ||
| jabbot | luqui: autrijus was seen 5 minutes 21 seconds ago | ||
| luqui | perlbot: seen pmichaud? | ||
| jabbot | luqui: pmichaud was seen 11 minutes 2 seconds ago | ||
| autrijus | hey luqui. | ||
| luqui | hello | ||
| luqui thinks his alternate nick should be "anybody" | |||
| autrijus | so. the thing is | 18:32 | |
| [+] is not taking params cross the "," line | |||
| unlike normal function application | |||
| luqui | shouldn't it? | 18:33 | |
| autrijus | you think it should be just like function application? | ||
| luqui | well it has lower precedence than , | ||
| so say([+](1,2,3), 6) should probably print 66 | |||
| Juerd | autrijus: Yes, that's what listops do :) | 18:34 | |
| luqui | hmm, but that means [+] (1,2,3) isn't the same as [+](1,2,3) | ||
| autrijus | right. was about to say that. | ||
| Juerd | autrijus: All named ones at least | ||
| luqui | nevertheless, I think it's the right thing | ||
| autrijus | luqui: there's a reason why spre is different from pre | ||
| ok then. | |||
| Juerd | autrijus: I think [+] is like <== | ||
| autrijus: precedence-wise | |||
| lower than <==, but not function-like | 18:35 | ||
| eh | |||
| lower than comma | |||
| autrijus | $obj.[+](1) | ||
| is this legal? | |||
| luqui | oh my | ||
| autrijus | that's what happens when you are coding things :) | ||
| Juerd | autrijus: Well, it shouldn't be :) | ||
| autrijus | Juerd: why not? :) | ||
| luqui | because it's an array deref | ||
| autrijus | ok. | 18:36 | |
| Juerd | autrijus: Because .[ is array deref, and +] isn't valid syntax | ||
| luqui | listops are different from methods, they just happen to share a lookup table | ||
| Juerd | I think. | ||
| luqui wonders whether foo $bar, $baz is really equivalent to $bar.foo($baz) | 18:37 | ||
| autrijus | is the term | ||
| "reductive metaoperator" | |||
| "reduction metaopetor" | |||
| "reduce metaoperator" | |||
| "folding metaoperator" | |||
| luqui | I find the third to be the clearest | ||
| autrijus | implemented. testing | 18:39 | |
| "In other words, it's okay to call an undefined function in your | 18:40 | ||
| prototype as long as you don't actually use the value." | |||
| wow. | |||
| luqui | larry's most recent posts about hashes scare me | ||
| yeah, and that one too | 18:41 | ||
| heh... we'll talk on wed. about that | |||
| I'm sure Damian's not going to go for that either | |||
| Corion | r2780 - 4762 ok, 56 failed - datenzoo.de/pugs/win2k.html | ||
| autrijus | so, arrayLiteral needs to backtrack | ||
| or, it needs to build a lookahead table of all infix ops at the current scope. | 18:42 | ||
| the first one is faster. | |||
| I'll do that for now. | |||
| Corion | btw - t/var/default_scalar.t dies with pugs: cannot cast from VHandle {handle: tmpfile} to [Char] | 18:43 | |
| what does one do to hunt down these cast errors? | |||
| autrijus | Corion: well, arguably a handle should be stringifiable | ||
| (I hope) | |||
| so the easiest fix is in AST.hs to add VHandle as a Value VStr instance. | |||
| you can do that? | 18:44 | ||
| Corion | autrijus: I'll look into trying it ;) | ||
| autrijus | cool | ||
| Corion | I need Pugs to convert my boss from Python to Perl ;) | ||
| autrijus | really!? | ||
| how do you do that? :) | 18:45 | ||
| pmichaud | autrijus should have that functionality built into pugs soon :) | ||
| autrijus | boss conversion? | ||
| mmm. | |||
| Corion | autrijus: Perl6 is currently the only language with a non-delusional promise :) | ||
| autrijus | I thought Python 2.5 is quite practical too | ||
| pmichaud | my, what a difference a few months can make :) | ||
| autrijus | it's almost 100 days :) | 18:46 | |
| Corion | autrijus: No - they already have solidified their classes, haven't they? | ||
| autrijus | yeah, that is true | ||
| Corion | and Python 3000 sounds even worse | ||
| Juerd | 100 days of RAGING GENIUS INSANITY | ||
| autrijus | er. don't even think about the 3K | ||
| pmichaud | my impression was that back in january people thought perl 6 was quite delusional :) | ||
| Juerd | pmichaud: Yea. | ||
| pmichaud: And people who haven't heard about Pugs still do | |||
| Corion | pmichaud: Yes, but Pugs delivers what Perl6 promises ;) | 18:47 | |
| ... well, up until now, that is. Dunno about tomorrow :)) | |||
| pmichaud | well, pugs plus the things I'm seeing in the grammar engine have convinced me it's all doable | ||
| Juerd | pmichaud: There were some of those people at Rotterdam.pm. I had totally forgotten that perhaps not everyone knew about Pugs | ||
| autrijus | pmichaud: what things are you seeing? | ||
| pmichaud | just the way the lexer and parser and codegen will all come together | ||
| autrijus | oh. right. | ||
| Juerd | pmichaud: After my what-happened-with-pugs-while-we-were-having-fun lightening talk, someone asked me: "so there is a perl 6 interpreter now?" "Yes" "But... ehm... hey... er... huh? wow!" | ||
| autrijus | Juerd: I hope there's a recording or slides somewhere for that talk of yours :) | 18:48 | |
| Juerd | autrijus: None at all | ||
| autrijus: I came up with the idea during another talk, and accumulated data for it via svn log | |||
| pmichaud goes back to pge and parrot for a while | |||
| Juerd | autrijus: I also did a talk on context in Perl 6 (30 minutes or so), on ... flipover - also completely unprepared | 18:49 | |
| autrijus | pmichaud: enjoy | ||
| luqui: try now? r2781 | |||
| Juerd | autrijus: Besides, if there was a recording, it'd still be Dutch. | ||
| luqui | trying | ||
| Juerd | autrijus: Also, there's nothing in those talks that you didn't already know | ||
| autrijus | all true | ||
| Juerd | s/Rotterdam.pm/Amsterdam.pm/ by the way | ||
| Rotterdam.pm has been dead for years | |||
| luqui | Oh, Pugs.Parser is compile | 18:50 | |
| compiling | |||
| Juerd | (Which is unfortunate, as it's much closer to where I live) | ||
| luqui puts on some coffee | |||
| autrijus | luqui: you can do "make unoptimized" or "make ghci" | ||
| luqui expects it to almost be done after he finishes | |||
| autrijus | both will be much faster | ||
| pmichaud | autrijus: do you have a preference as to named captures versus subrules priority? | ||
| Juerd | Corion: It looks as if you get all three your ..., ??? and !!! to do exactly what you want. | ||
| Corion | Juerd: Thanks man! | ||
| luqui | seeing as how I don't care about the speed of the code, that might be a good idea | ||
| Corion | (and all the world will blame me for eternity... Yay! :) ) | 18:51 | |
| autrijus | pmichaud: both are needed for bootstrapping, so whichever you see fit, but named capture will be more killer appish :) | ||
| Juerd | luqui: In that message, I read "undefined function" as "*defined* function yada'ing" | ||
| autrijus | i.e. something you almost absolutely cannot do in Perl5 | ||
| pmichaud | well, let's see if I can get them both out today. named capture is slightly simpler I think | ||
| autrijus | ("almost" because people still did it) | ||
| Juerd | I like the proposed semantics | 18:52 | |
| Especially that ... fails, leaving things up to fatal for specification along with your preferred strictness | |||
| Corion | Heh. Juerd: Though we'd have to discuss the precise meanings of "WTF?" and "WTF!". :-))) | ||
| jabbot | pugs - 2781 - * [+] is now truly listop. | 18:53 | |
| pugs - 2782 - * fix signature | |||
| pugs - 2783 - Made it more clear that our Net::IRC is | |||
| luqui | ohhhhhhhh [+] is just a plain ol' operator, not a meta operator combined with + | 18:54 | |
| autrijus | does it mean that if I define infix:<Z> | 18:55 | |
| I don't get [Z] automagically? | |||
| luqui | I think you doo | ||
| do | |||
| I mean in pugs | |||
| Juerd | luqui: It's a meta-operator that creates a new operator, allowing it to have different precedence, unlike with the >><< metaoperator | 18:56 | |
| luqui | unless the stuff that Larry's been talking about, rooting for the overdog and such | ||
| autrijus | sure, that's just get precedence working; if you want autogen from infix ops, it's quite easy too | ||
| luqui: grep for | |||
| -- XXX - Query all infix here | |||
| and query all infix there :) | |||
| luqui | ahh | ||
| Juerd | autrijus: Is -- the comment operator in haskell? | 18:57 | |
| autrijus | look at currentUnaryFunctions etc for how. | ||
| Juerd: it's the comment introducer. | |||
| luqui is hosting a bbq in a half hour | |||
| Juerd | That's what I meant | ||
| luqui | he can probably dive in later today | ||
| Juerd | luqui: I'm hosting websites ALL THE TIME :) | ||
| luqui | yes, bbq, predecessor to bbs | ||
| Juerd | Social stuff | 18:58 | |
| luqui | (bbr is no good, because nobody likes to be cold) | ||
| Juerd | bbq => social, bbs => social, internet => no longer social | ||
| luqui | hmm? | ||
| you lost me around "Social stuff" | |||
| Juerd | What 'bbs' did you mean? | 18:59 | |
| I assumed bulletin board system | |||
| luqui | yeah | ||
| Juerd | Nowadays explained as "small internet" | ||
| It's a social place, like a bbq :) | |||
| You meet people there | |||
| luqui | I see, I think | ||
| therefore, I am | |||
| Juerd | You see that you think? | ||
| Teach me that some day | |||
| luqui | yeah, bbq requires more immediate time commitment | 19:00 | |
| Odin-LAP | I think none of us thinks. | ||
| Especially not me. | |||
| luqui | people probably wouldn't like to hear "hey, entertain yourselves for an hour, I'm going to go hack on pugs" | ||
| Odin-LAP | ('us' referring to humanity as such.) | ||
| luqui | and they think "hack?" "pugs?" "entertain?" | ||
| stevan | luqui: you might scare your guests off if you hack on some pugs at the BBQ | 19:01 | |
| not to mention the fact they have very small ribs | 19:02 | ||
| luqui | haha | ||
| autrijus | so | ||
| !!!3 | |||
| is false | |||
| but | |||
| !!! 3 | |||
| is false? | 19:03 | ||
| Juerd | is a syntax error? | ||
| autrijus | !!! -3 ? | ||
| Juerd | Why would yada accept arguments? | ||
| stevan | what about !!!(3) | ||
| Juerd | I think ...|???|!!! is a term by itself | ||
| &term:<...> | |||
| autrijus | they are | ||
| jabbot | pugs - 2784 - Added tests testing [+], [-], etc. | ||
| Juerd | They're undef when used as a value | ||
| And undef can't be used as a subref | |||
| So yada() doesn't make enough sense | 19:04 | ||
| autrijus | I'm just saying that, currently parsing !!!-3 | ||
| needs more than 1-char lookahead | |||
| Juerd | Why? | 19:05 | |
| That's just undef - 3, but an undef that dies as soon as it's evaluated | |||
| Corion | autrijus: Your idea worked. Now I should maybe print out a bit more than just "<Handle (maybe should be more explicit)>" :-) | ||
| autrijus | Corion: "show" maybe | ||
| Juerd | Unless someone overrides die to do nothing (I HATE THAT!!!!!, but people like kane (jos) want this), in which case the result is -3 with a warning of using undef | ||
| Corion | autrijus: That's what I'm trying right now :) | ||
| Juerd: Don't complain about weird things that Jos does - he's trapped in his own world :) | 19:06 | ||
| Juerd | Corion: I hate his idea that a module should never be allowed to die, and that die should be a noop sometimes, because he should just get some clue and use eval (try in p6), so that safety mechanisms aren't broken, but I do want Perl to be the flexible language in which idiots can actually do what they think is right. | 19:07 | |
| autrijus | including On Error Resume Next ? | 19:08 | |
| can we have that in perl 6? :) | |||
| luqui | ask Chip | 19:09 | |
| Corion | autrijus: Scary as it is, On Error Resume Next was the only sane way to program in VB | ||
| Juerd | autrijus: That's what jos does, yes, but he puts that on other people's code. | ||
| Corion: No, it was not. | |||
| autrijus | Juerd: no, overriding die() doesn't stop 1/0 | ||
| Corion | (because it was the only way you could trap the error and then check for it) | ||
| autrijus | nor other fatal errors | ||
| Juerd | Corion: on error gosub 123, and 123 HANDLEERROR : RESUME NEXT was. | 19:10 | |
| autrijus: That is true. | |||
| autrijus | Corion: I know that too well... | ||
| <- programmed Basic for 10 years, including 3years as VB consultant | |||
| Corion | Juerd: Ah, yes, but that would mean you had one central error handler. I checked after each operation | ||
| autrijus: I did so too, in VB4/5 I think | |||
| autrijus | *shudder* | 19:11 | |
| Corion | But life is better now :) | ||
| PerlJam | autrijus: 10 *years*? Your torture was longer than most. | ||
| autrijus | yeah, from 8 to 18 yrs old | ||
| my finger still remembers "cls; randomize timer" | 19:12 | ||
| luqui | which is a linguistic travesty | ||
| why am I randomizing the timer? | |||
| Juerd | Corion: ON ERROR GOSUB 123 : OPEN "foo" FOR OUTPUT AS #1 : ON ERROR WHATEVERTHEDEFAULTWAS | 19:13 | |
| luqui programmed in qbasic for the first five years of his cyberlife | |||
| jabbot | pugs - 2785 - Added test for builtin fail(). | ||
| pugs - 2786 - * Added EOLs at EOFs. | |||
| luqui | Juerd: you know, capitals weren't required | ||
| stevan | Apple ][e Basic my my first :) | ||
| Juerd | luqui: It made it that. | 19:14 | |
| luqui: You'll note that my example is old style basic, as I'm using an explicit #1 (bad style in later basic, that had FREE(), later Free()) | |||
| Juerd also used basic for a way too long time | |||
| jhorwitz remembers C64 Basic... | |||
| Corion | Hah. VHandle stringification is now in (courtesy of show()), just passing the tests ... | 19:15 | |
| Juerd | age 7..17 | ||
| Started using Perl when I was 15 | |||
| luqui | Juerd: I didn't notice... I remember very little basic | ||
| Juerd | But continued to use VB for a few years | ||
| luqui | Juerd: that's about the same as me | ||
| Juerd | I also don't remember much of it | 19:16 | |
| Which is good. | |||
| autrijus: My fingers don't remember that, because I switched to Dvorak :) | |||
| luqui | you actually did it? | ||
| good for you | |||
| Juerd | luqui: Years ago. | ||
| luqui kept saying "yeah, I'll switch" | |||
| autrijus | Juerd: my input method(s) doesn't play well with dvorak | ||
| Juerd | luqui: Just do it. | ||
| autrijus | chinese input methods, that is :-/ | 19:17 | |
| luqui | it's not really practical when you have something to type for school in an hour | ||
| Juerd | autrijus: Do you use those input methods for entering roman text too? | ||
| luqui: How much of your typing do you do at school? | |||
| autrijus | Juerd: holding Shift key enters roman text | ||
| luqui | no, not at school | ||
| *for* school | |||
| Juerd | luqui: I type more than 99% of all my typing on my own keyboards. | ||
| luqui: I can live with 1% discomfort | 19:18 | ||
| luqui | if I'm learning dvorak, I can't type a paper in an hour | ||
| Corion | Ah, you know you programmed too much basic when you get flashbacks of print chr(34) & "Hello World" & chr(34) & vbCrLf | ||
| Juerd | luqui: Oh, yes, you need some free time to switch | ||
| Corion: Puh, that's modern basic (visual basic) | |||
| luqui | that's what I've been missing | ||
| Khisanth | autrijus: you must have some very strong fingers... | ||
| Juerd | Corion: Old basic used only + for string contact. | ||
| Corion | Juerd: The only basic I get flashbacks from ;) | ||
| luqui | Corion: I see junctions of strings | ||
| Juerd | Corion: And CHR$, not Chr, because, well, sigils indicated type. For functions too. | ||
| luqui | maybe they're called sligis? | 19:19 | |
| Corion | Juerd: VB has both, chr$() and chr() I think. But then, I only dream of it at night, or when I have to debug some MS Access code. | ||
| Juerd | autrijus: And is that on a qwerty-like mapping? Then you can use Dvorak just as well. | ||
| autrijus | right! that will solve all our ambiguities! | ||
| Juerd | Corion: Yes, it has both. | ||
| autrijus | instead of sort, say | ||
| $sort@ | |||
| Juerd | hahaha | ||
| Corion | What about &sort@ ? Like, hungarian notation, except with sigils ! Mwahahahhahahahha | 19:20 | |
| autrijus | say*@( 1$ $+$ $sort@ @a ) | ||
| luqui | which would do what? | ||
| PerlJam | sigils *are* hungarian notation | ||
| Corion | VHandle stringify is in now ;-) | ||
| autrijus | connecting dots was never that easy | ||
| Corion | PerlJam: But not for the complete signature ;-) | ||
| autrijus | luqui: function prefix and suffix to denote their context | ||
| Corion | Like, @sort&@(&block, @list); # :-)) | 19:21 | |
| autrijus | yup | ||
| luqui | ahh, then we can achieve C++'s worthless goal of context independence | ||
| PerlJam | Corion: oddly enough I think we already have that in perl6 with :() ;-) | ||
| autrijus | yes. you write @reverse@ when you mean it | ||
| and $reverse$ when you mean that | |||
| there can't be mistakes anymore | |||
| luqui | except for choosing to do that :-) | ||
| autrijus | :D | ||
| Juerd | autrijus: @reverse$ | 19:22 | |
| Hmm... | |||
| autrijus | DEFINT A-C | 19:23 | |
| Juerd | NOOOOOOOOOOOOOO | ||
| autrijus | DEFSTR D-F | ||
| DEFHASH G-Z | |||
| painless sigilless | |||
| Juerd | Although DEFINT A-Z used to make most programs much faster | ||
| jabbot | pugs - 2787 - Stringify VHandle | ||
| autrijus | macro DEFINT { ... } # left as exercise | ||
| Juerd | Remember Perl 5's reset? | 19:24 | |
| reset 'a-z' | |||
| Hmmm! | |||
| autrijus | hmm! | ||
| Juerd | Suspicious. | ||
| D'ya think Larry was a BASIC nerd too? | |||
| autrijus | study; reset; study; reset; dump dump dump | ||
| Juerd: sure, look at __DATA__ | 19:25 | ||
| Juerd | haha | ||
| __DATA__ was a good idea though | |||
| luqui | DEFINT /\$\w*int\w*/ | 19:26 | |
| Juerd | ew | ||
| labels | |||
| Now I know where they come from. | |||
| luqui | every programming language ever? | ||
| Juerd | And why I dislike their unquoted uglyness :) | ||
| luqui: nahhh, I try to ignore that there's more in this world. | |||
| Especially Python I like to think does not exist. | 19:27 | ||
| luqui: But $printer... | |||
| luqui | The thing is about quoted labels. If you can say "foo":, what's stopping you from saying $foo: | ||
| Juerd | Nothing, isn't it great? | 19:28 | |
| It'd be silly to actually do so. | |||
| autrijus | PRINT USING "@<<<<<< @|||||| @>>>>>>" | ||
| luqui | you imagine that a code generator for a register-based virtual machine would like that? | ||
| Juerd | autrijus: heee heee | ||
| luqui | oh no | ||
| it all makes perfect sense now | |||
| luqui goes to hang himself | |||
| Juerd | I do miss BASIC's PRINT USING | 19:29 | |
| Because that could perfectly separate thousands | |||
| Which in Perl is a hell to get right. | |||
| autrijus | luqui: You have exceedded the maximum number of tries. | ||
| Sorry, the committer was 'Amir Livine Bar-On' | |||
| jabbot | pugs - 2788 - * parse for ??? and !!! (incomplete) | 19:33 | |
| pugs - 2789 - Added -B to Help.hs. | |||
| Corion | r2787 - datenzoo.de/pugs/win2k.html - 4768 ok, 57 failed, 899 todo | 19:36 | |
| Oh. I should write pugsrun tests for -B ... | |||
| ninereasons | when a sub is on the LHS of 'xx' , should we be able to spell 'sub() xx 4 ' in a way that it fills a list with 4 unique values? | 19:41 | |
| sub or function | |||
| etc. .. | 19:42 | ||
| autrijus | jhorwitz: I think I got compreg working | ||
| Juerd | ninereasons: Currently, it returns 4 times the same sub | 19:43 | |
| ninereasons: But see my proposal for XX in p6l, where I suggest that $closure XX 4 actively calls the closure 4 times, possibly returning 4 different values | 19:44 | ||
| ninereasons | I think I got it. my @a = { rand(10) } xx 4 | ||
| @a[2]() # etc. | |||
| is that right? | |||
| Juerd | ninereasons: Right and ugly. | ||
| ninereasons | very ugly | ||
| Juerd | ninereasons: While waiting for XX or another alternative, just use plain old map, even though that's not really what you mean. | 19:45 | |
| ninereasons: my @a = map { rand 10 }, 1..4; | |||
| ninereasons | how should I track down your proposal? what's the title, Juerd ? | ||
| Juerd | ninereasons: The initial post was done by luqui, titled "xx and closures" | 19:46 | |
| ninereasons | found it. thank you. | ||
| Juerd | ninereasons: Larry still avoids blessing XX, probably hoping for something prettier, but he has used it one time in example code. | ||
| autrijus | eval_parrot ' compreg $P0, "Pugs" $S0 = "say qq[There... and back again!]" $P0 = compile $P0, $S0 invoke $P0 | 19:47 | |
| '; | 19:48 | ||
| er. | |||
| eval_parrot ' compreg $P0, "Pugs" $S0 = "say qq[There... and back again!]" $P0 = compile $P0, $S0 invoke $P0 | |||
| '; | |||
| autrijus blames gnome-terminal | |||
| sigh. | |||
| Juerd | Neat, autrijus | 19:50 | |
| autrijus | perlbot: nopaste | ||
| perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
| pasteling | "autrijus" at 220.132.132.105 pasted "roundtrip" (10 lines, 205B) at sial.org/pbot/9971 | 19:51 | |
| jhorwitz | autrijus: compreg! | 20:09 | |
| autrijus | jhorwitz: completed (in 6 lines)! | 20:10 | |
| jhorwitz | autrijus++ | ||
| autrijus | I think writing C with a white glove is actuallly enjoyable :) | ||
| obra | with a white glove? | ||
| autrijus | obra: haskell FFI | 20:11 | |
| jhorwitz: so, leo says we should probably define the embed.h or extern.h or whatever thing we'd like to use | 20:12 | ||
| obra | ah | ||
| jhorwitz | autrijus: sounds good. gotta run. back in an hour. | 20:13 | |
| autrijus | k. and I gotta sleep | ||
| jhorwitz | sleeeeeeeeep | ||
| obra | night, autrijus | ||
| autrijus | nite! | ||
| Juerd | Good night | 20:17 | |
| jabbot | pugs - 2790 - * Pugs is now a registered Parrot compil | 20:33 | |
| pugs - 2791 - * add missing import | |||
| pugs - 2792 - Fix help text to mention say() instead o | |||
| autrijus | nite :) | 21:11 | |
| & | |||
| jabbot | pugs - 2793 - * make parrot_config work when parrot is | 21:53 | |
| pugs - 2794 - basic pod2html support (the HTML is ugly | |||
| pugs - 2795 - fixed some POD errors | |||
| stevan | Basic pod2html is working now (if anyone cares) | 22:00 | |
| pugs ext/Pod-Event-Parser/scripts/pod2html.p6 lib/Perl6/Pugs.pm > Pugs.html | |||
| jabbot | pugs - 2796 - fixing the pod2html script | 22:03 | |
| pugs - 2797 - Added a small script generating a Pugs L | 22:23 | ||
| pugs - 2798 - * Added a README pointing at mklivecd.pl | 22:33 | ||
| iblech | FYI, I created a livecd-generating script in util/livecd. A precompiled image is at m19s28.vlinux.de/iblech/pugs/livecd.iso. | 22:36 | |
| jabbot | pugs - 2799 - golf.t now uses unique temp file names, | 22:53 | |
| pugs - 2800 - Removed skip of all golf.t tests, becaus | |||
| pjcj | Juerd: iff = if and only if | 23:56 | |
| Juerd | How is that different from if? | ||
| pjcj | it is stronger | 23:57 | |
| Juerd | Hm. Okay. | 23:59 | |
| Juerd doesn't understand, but thanks | |||
| arcady | "a iff b" means "a implies b" and "b implies a"... basically, a and b are equivalent | ||