6.2.7 released! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste: sial.org/pbot/perl6 Set by autrijus on 13 June 2005. |
|||
Limbic_Region | yeah - my first published article www.perl.com/pub/a/2005/06/16/iterators.html | 00:00 | |
hopefully my next one will be on Pugs/Perl6 | |||
wolverian | congratulations! | ||
Limbic_Region++ | |||
geoffb | Congrats, Limbic_Region! | 00:01 | |
geoffb is actually writing the outline for his next perl.com article. :-) | |||
Limbic_Region | thanks | 00:02 | |
I actually have an idea for a series of mind dumps that I had originally intended for p5, but I am considering p6 for now | 00:03 | ||
geoffb | And I promise everyone here that I will try to convince chromatic to let me do one on OpenGL with pugs . . . if 'use SDL::OpenGL--perl5;' gets fixed (hint hint :-) | ||
mugwump | chromatic already has a SDL for parrot, geoffb ... wrapping that would be über-cool | 00:04 | |
geoffb | mugwump, yep, I know -- but afaik he has not done the OpenGL part. | 00:05 | |
mugwump | aha | ||
geoffb | mugwump, and wrapping it would require more skills than I have at the moment . . . and getting more skills in that area is increasingly at odds with falling bank account balance. :-/ | 00:06 | |
mugwump | where are you? want a job in NZ? :) | ||
or did I already ask you :) | |||
don't worry, it's not working with me | |||
;) | |||
QtPlatypus | mugwump: Thats almost tempting, though I live in australia not NZ | 00:07 | |
mugwump | easier for you then QtPlatypus | ||
geoffb | mugwump, a few miles from O'Reilly HQ in Northern California . . . so the NZ job would have to be telecommuted. :-) | ||
Since I hear it's damn near impossible to actually move there to work . . . . | |||
mugwump | who did you hear that viscious lie from? all you need to do is find an employer who's desperate enough to give you an offer and then wait for immigration to give you a work visa | 00:08 | |
geoffb mentally highlights 'desperate enough' and 'wait for ... a work visa' | |||
Does NZ allow someone to consult to an NZ company without an NZ work visa? | 00:09 | ||
mugwump | of course | ||
geoffb understands exactly zero of international work rules, despite having managed a team in India -- HR handled all that craziness | 00:10 | ||
Limbic_Region worked as a contractor in S. Korea for a year and a half | |||
but it was for a US company | 00:11 | ||
mad tax breaks | |||
geoffb | That had to be interesting, Limbic_Region . . . . | ||
mugwump | you might face a very short limit on the length of a visa you can get to do consulting like that though | ||
geoffb | Someday when I have free time, I'll probably learn one of the CJK languages . . . but I can't decide which one. My dad speaks Mandarin, but that's only a mild push. | 00:12 | |
mugwump, how short? | |||
mugwump | perhaps look around on www.immigration.govt.nz/migrant/str...efault.htm | 00:14 | |
geoffb | All of my contracts so far have been to local (within 100 miles) companies, so this is all interesting stuff to me | ||
mugwump, thanks, will read after dinner. | 00:16 | ||
And speaking of which | |||
geoffb & # dinner | |||
Some of the stuff on the Immigration New Zealand page is odd, and some is well . . . creepy | 01:18 | ||
In the odd category, you're not allowed into NZ if there is any other country that you can't get into. That's paranoia. | 01:19 | ||
On the creepy side . . . if no health insurance and not from .au or .uk, it looks like you don't even get emergency medical treatment. | 01:22 | ||
wierd | |||
mugwump | this isn't a utopia. it's a progressive country, for sure, but still part of the old empire like everywhere else | ||
they don't stop to ask for credentials for medical treatment :) | 01:23 | ||
geoffb | heh | ||
mugwump | I actually think privatised health is a good idea, largely because I think standardising on Western medicine is a bad idea in principle (and practice) | ||
the poor of course get subsidised doctor visits | 01:24 | ||
geoffb | Fair enough. FWIW, the health requirements page reads like a purity pamphlet. | 01:25 | |
Ah well. | |||
I'm sure US equivalents are just as silly | |||
mugwump | public hospital treatment is free apparently | ||
if you don't mind being butchered :-) | 01:26 | ||
geoffb winces | |||
mugwump prefers tiny needles to scalpels any day | |||
geoffb | I remember one of my employees from India explaining the stack of documents he had to present to be given a visa to come here for a week -- it was insane. Put my first mortgage documents to shame. And in California, that's saying something. | 01:27 | |
"Why can't we all just get along . . . ?" | |||
mugwump | This is all new, too. Countries never bothered with immigration controls before the world wars | 01:28 | |
geoffb blinks | |||
You know, I never thought of that before. | |||
mugwump | all at once massive walls were erected to segregate the entire of humanity | ||
geoffb | I mean sure, the current reality makes a complete lie out of the Statue of Liberty, but I thought of that as mostly a US dain bramage. | 01:29 | |
mugwump | the 20th century saw a lot of people in power passing legislation to widen the gaps in the class system whilst appearing to outlaw it. And it was entirely successful. 2% of the population now control 25% of the wealth | 01:30 | |
damn I hate XML | 01:31 | ||
geoffb | nodnod | ||
(to both) | |||
I thought it was a good idea . . . about the same time I thought DocBook was a good idea. Then I spent some time with both. | 01:32 | ||
I even went so far as to implement a change control system with an XML data store. Let's just say searching was . . . suboptimal | 01:35 | ||
Thankfully most of that was abstracted behind a data store API, so as to be swapped out for something else, but sheesh. Taught me a lesson or two. | |||
wolverian | there is one good side to XML. there are libraries to read it. | 01:36 | |
mugwump | ha! Imagine how I felt when Jean-Louis Leroy announced version 3 of Tangram, which had dropped support for SQL but now used an XML data store! | ||
geoffb | mugwump, OW | ||
wolverian boggles | |||
mugwump | ok, so he wrote it so it could have extensible backends and so now also has a sketched SQL back-end, but all the same I ran screaming | 01:37 | |
geoffb | mugwump, who do you work for, anyway? | 01:47 | |
mugwump | a data mining outfit. www.bnz.marketview.co.nz is probably the best site to look at | ||
actually, bnztest.marketview.co.nz/ is the site I re-engineered :) | 01:48 | ||
<meta name="generator" content="GNU Emacs, Perl and Template Toolkit" /> | |||
geoffb | heh | 01:49 | |
Interesting . . . so the data mined is the transactions between BNZ and the corporation paying for the service? | 01:53 | ||
mugwump | nope. all BNZ customers, all their card spend | 01:54 | |
geoffb | Man, banks must make a killing doing this . . . no wonder they're all too happy to give away free checking accounts. | 01:55 | |
mugwump | so basically we have details of something like 13% of all EFTPOS and credit card transactions in NZ | ||
geoffb | gotcha, realized that a couple pages on | ||
And that's way the heck into Statistically Significant. :-) | |||
mugwump | Well, it is a fairly new development that any bank would do this | ||
yes, the margin of error can be pretty low. there is the odd bias due to the fact all the customers are the type that respond to a certain type of marketing ;) | 01:56 | ||
geoffb | :-) | ||
_meppl_ | gute nacht - good night | 02:01 | |
mugwump | auf wiedersehen! schlafen sie gut | ||
_meppl_ | ;) | 02:02 | |
geoffb | g'night _meppl_ | 02:03 | |
_meppl_ | ;) | ||
sdtr443w | Does anybody have that perl6.png timeline image? | 03:33 | |
It looks like the original isn't being hosted anymore. | |||
geoffb | Pull it out of Autrijus's Apocalypse Now talk? | 03:34 | |
sdtr443w | Is that this "Perl 6 is Here Today" thing? | 03:39 | |
If so, I don't see it (yet) | |||
geoffb | Hmmm, lemme check, I know I saw it in one of his talks, I thought it was that one. | 03:40 | |
sdtr443w | I wonder if it's working right | 03:42 | |
There's a section "Obligatory timeline picture" | |||
geoffb | draw => \&draw_cube, | ||
damn, wrong paste | |||
pugscode.org/perl6-timeline.png | |||
Is that the one you were looking for? | 03:43 | ||
sdtr443w | Yeah | ||
I'm giving a presentation on Perl6 tomorrow and I realized my slides don't have enough non-sequiturs to qualify as a Perl 6 presentation. | 03:44 | ||
geoffb | LOL | 03:45 | |
who to? | |||
sdtr443w | my work | ||
geoffb | recurse, svp . . . | ||
sdtr443w | I'm thinking next of making up an example of a continuation demonstrating Perl development when funding runs out and is restored. | ||
geoffb | heh | 03:46 | |
sdtr443w | But I haven't seen any continuation code in Perl 6 yet and can't think of what I should do. | ||
geoffb | nod | ||
mugwump | ironic | ||
pdcawley | sdtr443w: There's a non deterministic sudoku solver in examples that uses continuations, but I'm not sure it uses the current syntax. | ||
wolverian | what's the current syntax? :) | 03:47 | |
pdcawley | It's a deeply inefficient, brute force, algorithm, but delightfully simple to write. | ||
sdtr443w | pdcawley -- I can still post it in the slides the just claim "This has become obsolete like half the presentation" | ||
pdcawley | wolverian: Stop asking the hard question... | ||
sdtr443w | And I was going to joke about how I never have gotten a reply in the perl 6 newsgroup. | 03:48 | |
wolverian | pdcawley: oh, sorry. damn ruby for botching the continuations so we can't learn from it either. | ||
(the interface, anyway.) | |||
sdtr443w | Now I'm hoping I can find the fireworks background Larry Wall used in a State of the Onion presentation | ||
Or I'll just use the periodic table of symbols | |||
pdcawley | Ruby's continuations are botched? It's just call/cc isn't it, which is a perfectly decent interface to continuations. | 03:49 | |
wolverian | pdcawley: I'm not sure. the interface confuses me. | ||
(the block thing.) | 03:50 | ||
or maybe it's just the example in the module doc that confuses me. | |||
pdcawley | wolverian: It's pretty much the standard way of getting at continuations. | ||
wolverian | right, okay. | ||
then it's the example confusing me. :) | |||
mugwump | are there any concise descriptions of these two(?) types of continuations anywhere? | ||
pdcawley | mugwump: Just worry about full continuations. | 03:51 | |
sdtr443w | Also, the puppy on pugscode -- was that just stolen off images.google.com or something? | ||
mugwump | can this be described simply, pdcawley ? | 03:52 | |
pdcawley | Consider a function call, the continuation of that call is the place the function will return to. | ||
sdtr443w | I think I'll need to make that Perl funding continuation example after all if people aren't certain how they work haha. | ||
pdcawley | In languages like C, that's simply a stack frame. | ||
mugwump | ok, so you're rewiring the "return stack", which at the same time becomes a hazy concept | ||
pdcawley | It still looks like a stack, most of the time, but it's a singly linked list. If you save a continuation somewhere, you save one of those frames in a lexical variable, so that 'bit' of the stack hangs around after you return the first time. | 03:54 | |
mugwump | ok, so the "second type" of continuations I was think of are actually coroutines - which is more like a sub that includes its line of execution as a lexical variable that is preserved between calls. | 03:55 | |
s/think/thinking/ | 03:56 | ||
pdcawley | So: my $continuation; my $i = 0; call_cc { $continuation = $^cc }; ...; $continuation unless ++$i > 10; | ||
^ is a simple loop using continuations. | |||
In the call_cc block, $^cc is the place that call_cc will return to. | |||
mugwump | whereas coroutines are more useful for iterators | 03:57 | |
wolverian | I think that's the thing that confused me about the example. it passes in the continuation to the block but immediately exits the block. | ||
pdcawley | wolverian: Yeah, the block is just saving a bookmark to come back to later. | ||
wolverian | pdcawley: that feels somewhat useless to me, as an interface. why a block at all? | ||
pdcawley | More advanced uses of continuations do complicated things in the block, but generally, just saving it somewhere is handy. | ||
sdtr443w | Ahh Good. I finally made my slides Perl6-compatible. | ||
wolverian | (I of course understand it useful when you're actually doing things _in_ the block) | ||
maybe I just want a call_cc and a save_cc or whatever. | 03:58 | ||
pdcawley | How else would you do it. If I want to save a bookmark in the same place I have to do something like: | ||
mugwump | ok, so what about a more concrete example of where a continuation is useful - an exception handler | ||
sorry, you first pdcawley | |||
sdtr443w | I added that timeline, the Pugs puppy, that gag Perl6 book, and used the firework background from Larry Wall's State of the Onion speech. | ||
"With Perl6, every day is Hawaiian Shirt Friday!" | 03:59 | ||
pdcawley | my $cont; my $i = 0; sub { $cont = &?CALLER_CONTINUATION }.(); ...; $cont() unless ++$i > 10; | ||
Essentially, you still end up needing to call a subroutine at the point where you need the bookmark. | |||
wolverian | pdcawley: I meant something like 'my $cont = current_continuation; ...; $cont()' | ||
pdcawley | wolverian: But that's the wrong continuations. | 04:00 | |
wolverian | pdcawley: oh? | ||
pdcawley | That will return to the place the function you're currently in returns to. | ||
mugwump | aha, so &?CALLER_CONTINUATION returns the continuation of the current function as a coderef, not the caller's continuation | ||
wolverian | er, no, I mean the current_continuation to return its callcc directly | ||
mugwump | so a better name for it would be &?RETURN_CONTEXT, perhaps | 04:01 | |
pdcawley | But it returns to the point just before it gets assigned to $cont. | ||
wolverian | ach, don't make my head hurt | ||
pdcawley | So the first time you call it, $cont becomes a continuation. When you then do $cont(10), it assigns 10 to $cont, and the next time you do $cont(11) (say), it falls over in a heap. | 04:02 | |
geoffb is dreading writing the next section of his article . . . gah. | |||
pdcawley would rather it was &?CURRENT_CONTINUATION TBH. | |||
mugwump | or perhaps even &?HERE | ||
wolverian | pdcawley: okay. right. | ||
pdcawley | No. &?THERE. But still not good. | ||
wolverian | by the way, I HATE TWIGILS | 04:03 | |
sorry. now I feel like Juerd. | |||
pdcawley | I really don't like Ruby's lack of 'em though. | ||
wolverian | pdcawley: thanks for explaining that to me. | ||
I really didn't quite understand it. :) | |||
pdcawley | A little like democracy: Terrible, but better than every other option. | ||
wolverian | demarchy? :) | ||
mugwump | (benevolant dictatorship)++ | 04:04 | |
wolverian | benevolent | ||
pdcawley | wolverian: Daft as it sounds, the more complicated use in examples/continuations/nondet_sudoku.p6 or whatever it's called might make more sense to you. | ||
wolverian | pdcawley: I'll check it out. thanks! | ||
wolverian svk pulls and waits for ten minutes or so | |||
pdcawley | It's been in for a while, have a look anyway. | 04:05 | |
wolverian | nah, running it already. it won't take quite that long, I exaggerated :) | ||
pdcawley notes that it currently doesn't have *any* commentary :) | |||
mugwump | does it work on current pugs? | ||
pdcawley | It didn't when I wrote it :) | ||
mugwump is so fucking lazy with a question like that | |||
wolverian | I wonder if larry will really go with a builtin called 'callcc' (not call_cc since it has a _) | ||
pdcawley | wolverian: I kind of hope he leaves it as &?CURRENT_CONTINUATION and lets us write whatever interface we like. | 04:06 | |
wolverian | pdcawley: what kind of an interface would you like? | ||
or do you mean one for each task? :) | |||
pdcawley | I don't know yet. I like flexibility. | ||
wolverian | sure. | 04:07 | |
pdcawley | The seasoned schemer uses a 'letcc' interface. | ||
geoffb is happy he escaped freshman year without becoming *that* seasoned with Scheme | |||
pdcawley | But I can't remember exactly what the difference is :) | ||
pdcawley notes that 'the seasoned schemer' is a book. Which you all already knew. | 04:08 | ||
pdcawley adds that it's a completely evil book... | 04:09 | ||
geoffb | Berkeley taught with the Abelson/Sussman book (I know that spelling is wrong) | ||
pdcawley | SICP? Another great book, but it doesn't address continuations at all (apart from the continuation passing style used in its explicit control evaluator) | 04:10 | |
geoffb | yeah, SICP sounds right. | ||
I think I sold it as soon as I was out of the class. One of the few CS books I've ever gotten rid of | |||
drbean | Why? | ||
pdcawley | Heh. Made your head hurt? | ||
geoffb | Nope. Well, yeah, but not for the usual reason. | 04:11 | |
I understood it fine. I just *hated* it. | |||
drbean | It's very wordy book. | ||
geoffb | It's taken me years to come to an uneasy peace with the fact that Lisp exists | ||
pdcawley | Heh. Lisp is a language one admires rather than uses. | ||
geoffb | :-) | 04:12 | |
pdcawley | s/admires/respects/ | ||
geoffb | yeah, that's closer. | ||
pdcawley | s/respects/plunders from/ | ||
geoffb | Actually, I really wish he'd taught the class in Logo, if he was going to pick a Lisp . . . that's the only Lisp I ever had fun with. | ||
Mostly because you could get it as a cartridge for a really ancient piece of home computer equipment | 04:13 | ||
So I played with the pretty pictures when I was too young to be appalled | |||
geoffb notes that pdcawley is iterating towards reality. :-) | 04:14 | ||
pdcawley started to almost like lisp when he finally got lisp macros. | |||
SamB thinks lisp would be cooler if it had been broken into digestible chunks called "modules" | 04:15 | ||
pdcawley | All of a sudden that ugly but regular syntax made enormous amounts of sense -- you put up with it because it enables you to do amazing things. | ||
geoffb | My relationship with a lot of languages comes down to "hmm, interesting ideas . . . now let's transplant them into Perl" | ||
wolverian | I want to be ugly AND amazing. | ||
pdcawley | Common Lisp is broken up into packages. | ||
SamB | pdcawley: the documentation sure isn't! | 04:16 | |
geoffb | Speaking of interesting language features . . . I thought Boo's idea of getting lax typing in a strictly typed language by creating the special type 'duck' was beautiful. | ||
SamB still does not get the difference between " and : in logo | 04:17 | ||
geoffb | I'm sure it's been used before, but that was the first time I'd come across it as an advertised language feature | ||
SamB | um, you hadn't heard of duck typing before? | ||
geoffb | no, no, I know duck typing. | 04:18 | |
The part I liked was that he actually had a type 'duck'. It's just the kind of joke I find funny, I guess. | |||
pdcawley | I'd not come across *calling* it duck typing until recently. | ||
SamB | yeah, that is a funny thing to call it ;-) | 04:19 | |
(the type, not the technique) | |||
geoffb | :-) | ||
pdcawley | It's a *great* name for the technique. Lovely double meaning. | ||
geoffb | nod | ||
pdcawley | Just wish I'd thought of it when I was arguing with the 'Let's make perl really strict' types back in RFC days. | 04:20 | |
geoffb realizes that to have any chance at all of explaining the code in front of him in less than a few thousand words, it's going to have to get a lot less "clever" | 04:22 | ||
pdcawley | Or clearer... | 04:25 | |
geoffb | pdcawley, it's very clever in order to be very general without much code. So clearer and less clever are probably both going to boil down to less general. | 04:27 | |
Which isn't in this case a horrible thing. | |||
I can always explain how to generalize it later | |||
For now I'd just be happy not to cause the reader's eyes to cross | 04:28 | ||
pdcawley | Maybe you need a cleverer audience :) | ||
geoffb | heh. | ||
Well, the target audience is average Perl coders, raw beginner OpenGL coders | |||
mugwump | right, what an appalling week. 4:30pm on a Friday and I've only just finished the week's work. | 04:29 | |
geoffb | What day do you normally finish the week's work? | 04:30 | |
Khisanth | mugwump: taking a week to do the week's work is not good? | ||
geoffb | And if it's Monday or Tuesday, I want your job. | ||
pdcawley | One of the things that's always blown me away about Damian's talks is that he seems to assume a cleverer audience, and the audience lives up to his expectations. | ||
geoffb | Damian's audience is self-selecting . . . | ||
mugwump | geoffb: it's on offer if you can get here soon after 1st July :) | ||
don't tell anyone though, it's a secret | |||
pdcawley grins. Also, as the adage has it, easy reading is damned hard writing. | 04:31 | ||
mugwump looks at jabbot | |||
Khisanth | you are quitting? | ||
geoffb | mugwump, heh. | ||
mugwump, and anyway, with next kid coming in August, I'm not going anywhere. | |||
pdcawley, very true | 04:32 | ||
pdcawley | Trying to remember who that quotes from. Possibly Orwell. | 04:33 | |
geoffb | At least I don't have to try to be funny. | ||
To hear Douglas Adams tell it, that's just BRUTAL. | |||
mugwump | Khisanth: I'm not quitting, just taking on another job and scaling back this job to 0 hours per week | 04:34 | |
geoffb | And he's gifted at it | ||
pdcawley | was | ||
geoffb | yes, was, pedant-boy. ;-) | ||
pdcawley | Well, you know. | 04:35 | |
geoffb | I prefer to think of him as doing research on another Dirk Gently novel -- in a completely different galactic era | ||
mugwump | he'll be writing the last page and then suddenly notice he's dead | 04:36 | |
geoffb | :-) | ||
Of course, the martians from Stranger in a Strange Land might have a field day with that one. | 04:37 | ||
mugwump | great book that. I recently read it, after not really grokking any of it and losing interest early at the age of 8 | 04:38 | |
or so | |||
geoffb | Did you read the short version or the unabridged version? | ||
The latter had much easier flow | |||
mugwump | Not sure. It was a nice read though, so I guess it must have been more stream of conciousness | 04:39 | |
I heard an interesting opinion that the books easiest to read, that you just can't put down are the ones written in very short sessions with minimal editing | 04:40 | ||
pdcawley | Tell that to Douglas Adams. | ||
geoffb | Or Dickens . . . | 04:41 | |
pdcawley | A Christmas Carol was apparently written quickly... | ||
mugwump | it's like code, really... the best code is that not pondered over needlessly for aeons but cleanly written with a purpose and auto-documented | 04:42 | |
geoffb | I was just commenting that he could get rather . . . boring, and I believe he was known as a speed writer | ||
pdcawley | But that was the style then. | ||
geoffb | mugwump, yes, but you have to be in flow for that to happen | ||
mugwump | $best is a lexical | ||
geoffb | pdcawley, sadly true, which ruined my desire to ever read anything written during that period, let me tell you | 04:43 | |
I mean, some of dickens was cool, | |||
but a lot of other others were boring, and BAD | |||
I think English Lit permanently turned me off to English writing after Chaucer | 04:44 | ||
pdcawley | Dickens was such a powerful progressive force in Britain at the time though. Not many people read Mayhew, but Dickens did, and *everyone* read Dickens. | 04:57 | |
drbean | pd, who was Mayhew? | 05:04 | |
pdcawley | Author of "London Labour and London Poor" one of the earliest socialogical studies of the working classes. | ||
Made public all sorts of horrors. | 05:05 | ||
I've heard him described as an early Studs Terkel. | |||
wolverian | hmm. I think it's time to set up an svn rep for this little project of mine. yay, first time for me! | 05:50 | |
Darren_Duncan | back again | 06:16 | |
nothingmuch | good morning | 06:18 | |
Darren_Duncan | yes, though is shortly before midnight here | 06:22 | |
seems no revisions since I left awhile back ... nothing new to discuss ... | 06:23 | ||
no matter, I'll retire, good night! | |||
geoffb | yay! Managed to rewrite nasty code block into something more manageable | 06:27 | |
And with that, bedtime for Bonzo. | |||
G'night, all. | |||
gaal | ?eval my $x = 5; my $r = \$x; $$r++; $x | 06:28 | |
evalbot6 | \5 | ||
gaal | what am i doing wrong? i want 6. | 06:29 | |
don't tell me we don't have references? :) | |||
revdiablo | well, you could use binding | 06:30 | |
?eval my $x = 5; my $b := $x; $b++; $x | |||
evalbot6 | \6 | ||
gaal | interestingly, this also works: | ||
?eval my $x = 5; my $b := $x; $$b++; $x | |||
evalbot6 | \6 | ||
revdiablo | but I never heard that references as we know them are going away | ||
gaal | think that's a bug? | 06:31 | |
revdiablo | it might just be a pugsbug | ||
gaal | i want to give that thing to a sub, which will modify it. | ||
revdiablo | ?eval my $x = 5; $$$$$x++; $x | ||
evalbot6 | \6 | ||
revdiablo | ... | ||
gaal | the reference may be to an array element. | ||
ahem | 06:32 | ||
that can't be right :) | |||
but i bet it's in the parser :( | |||
oh, interesting: if i call foo(@arr[$elem]) | 06:33 | ||
and foo is foo($x is rw) | |||
then i get what i want | |||
i didn't expect that to work for anytthing but simple values. | 06:34 | ||
revdiablo | does that use binding behind the scenes? | ||
gaal | i suppose it must; is rw is aliasing. | ||
it's just that i didn't suspect it'll work for non-simple expressions :) | |||
revdiablo | ?eval my @x = 1..9; my $b := @x[3]; $b++; @x.join("|") | 06:35 | |
evalbot6 | '1|2|3|5|5|6|7|8|9' | ||
gaal | shall i pugsbugs the $$$$$$$$fast thingie, or do you want to do it? | ||
revdiablo | it's all you, I'm 5 seconds from falling asleep at the keyboard. :) | ||
gaal | bon nuit! | 06:36 | |
revdiablo waves | |||
pdcawley | worl | 07:04 | |
svnbot6 | r4730, gaal++ | add test for $$$$$$$$$x incorrectly being parsed as $x | ||
r4731, gaal++ | refact0r | |||
r4732, bsmith++ | Added missing type signatures to Emit.PIR and Pugs.Compile.PIR. | 07:39 | ||
gaal | how's 1 << 2 spelled in p6? (shift) | 07:45 | |
integral | +<< I think, unless it's changed | 08:02 | |
svnbot6 | r4733, autrijus++ | * Pugs.Compile.PIR - Loops! Real loops, I say! | 09:25 | |
r4733, autrijus++ | * save a temp pmc register by calling functions directly. | |||
r4734, autrijus++ | * empty arglist is now properly handled in parrot trunk. | 10:06 | ||
kungfuftr | seen castaway | 10:11 | |
jabbot | kungfuftr: castaway was seen 12 days 19 hours 3 minutes 19 seconds ago | ||
kungfuftr | seen theorbtwo | ||
jabbot | kungfuftr: theorbtwo was seen 8 days 8 hours 20 minutes 19 seconds ago | ||
kungfuftr | hhhmmm... suddenly vanished | 10:12 | |
integral | castaway's been on perlmonks more recently | 10:15 | |
hmm, haskell question: Emit.PIR has Emit instances for Emit a => [a] and for String, and the code works fine, but when I use ghci I get complaints when I say emit "string", but this gets used lots in the file itself :-/ | 10:33 | ||
wolverian | different contexts? I dunno. :) | 10:35 | |
integral | oh well, it works when I start using it in my code | 10:42 | |
maybe it's because -fallow-overlapping-instances doesn't extend to the interactive lines | |||
Text.PrettyPrint++ | 10:49 | ||
xerox | integral, you can either "ghci -f..." or ":set -fallow-overlapping-instance". | 10:50 | |
integral | ah, cheers, xerox | ||
svnbot6 | r4735, autrijus++ | * instead of using confusing $P12345 numbers, generate | 11:05 | |
r4735, autrijus++ | temp variables with meaningful local names. | |||
11:19
Aragone is now known as Ara4n
|
|||
integral | autrijus: I'm writing a Emit.Perl5 at the moment. Where's the appropiate place to move class Emit.PIR.Emit to so that both can use it? | 12:05 | |
svnbot6 | r4736, andras++ | vmethods: num padding, spacing and zeroing | ||
autrijus | integral: oh wow. | 12:18 | |
integral: Emit.hs of course (I think) | |||
or Emit.Internals.hs | 12:19 | ||
I think Emit/Internals.hs works too | |||
or Emit/Common.hs. improvise | |||
integral | ok :-) | 12:20 | |
autrijus | integral: I have this feeling that the Trans to Perl5 will be much easier to write :p | 12:27 | |
(than PIR, that is) | |||
integral | hmm, maybe. Classes at least will be interesting I think | ||
autrijus | you can use stevan's perl5 perl6oo kit | 12:28 | |
integral | I've never got round to looking at that, I'll have to now :-) | ||
kungfuftr throws a little genetic algorythmn about | 12:29 | ||
integral | ghci++ | 12:30 | |
svnbot6 | r4737, bsmith++ | Fixed version_h.pl to write out a header file when it doesn't exist before | 13:01 | |
r4737, bsmith++ | (eg on a fresh checkout of a branch in your svk) | |||
r4738, autrijus++ | * PIR - do {...} blocks. | |||
integral | svk++ | 13:03 | |
autrijus | interactively merged? :) | 13:04 | |
integral | yep, and it can deal with files that don't exist too | ||
autrijus | cool! | 13:05 | |
<- proud of the interactive merge code in svk | |||
since that's my first contrib to svk | |||
Limbic_Region | autrijus - so percentage wise, how much of Pugs -> Parrot is done? | 13:12 | |
svnbot6 | r4739, bsmith++ | Moved the Emit class from Emit.PIR to Emit.Common. | ||
r4740, autrijus++ | * PIR - do blocks: | |||
r4740, autrijus++ | say do {'Hello, World!'} | |||
autrijus | Limbic_Region: what's 100%? | 13:14 | |
the current pugs eval, or entire perl6? | |||
Limbic_Region: I'd say about 10% is done. | |||
(for the former) | |||
but the latter parts can be picked up and contribbed much more easily by others | |||
(as is with pugs itself) | 13:15 | ||
Limbic_Region | what I meant was "of what Pugs can do right now" - how much have you gotten working using the new approach | ||
but the 10% is misleading if I understand correctly | 13:16 | ||
since the hard part (framework) has been done allowing anyone to tinker | |||
sound right? | |||
integral | it's not quite done, it's still all stuffed into the one file, Pugs.Compile.PIR | 13:19 | |
gaal | ?eval my $x = given 1 { when 1 { "rvalue given works" } }; $x | ||
the eval bot isn't up, but that croaks with "No compatible sub &when" | 13:20 | ||
Limbic_Region wonders if he should add a perl6 category to the time capsule perlmonks.org/index.pl?node_id=467692 | 14:07 | ||
mr_ank | Limbic_Region: I've done it in the past - and last year I found a floppy disk with pascal code... oh boy! | 14:31 | |
svnbot6 | r4741, autrijus++ | * blocks now yield the last evaluated expression as result | ||
Limbic_Region | mr_ank - I found some of my BASIC and old DOS batch files the other day | 14:33 | |
svnbot6 | r4742, autrijus++ | * thanks to leo's fix, `say do { do { do { 3 ; 4; 5 } } }` now | 14:38 | |
r4742, autrijus++ | works reliably. | |||
QtPlatypus | ?eval do { do { do { 3 ; 4; 5 | 14:39 | |
?eval do { do { do { 3 ; 4; 5 } } } | |||
stevan | ?eval do { do { do { <dah dah dah> } } } | 14:40 | |
Limbic_Region | the evalbot isn't here ATM | ||
Limbic_Region thinks about defining the wa, ditty, and dum operators | 14:41 | ||
QtPlatypus | wa ditty and dum? | 14:42 | |
Ara4n | . o O ( dum, dum, dum, dum-da dum, dum-da dum... ) | ||
Limbic_Region | do wa ditty ditty dum ditty do | 14:43 | |
QtPlatypus - possible you have never heard the song "Do Wah Ditty" | 14:45 | ||
QtPlatypus | I have heard the song. | ||
mr_ank | the doo doo doo the dah dah dah | 14:52 | |
svnbot6 | r4743, autrijus++ | * oops, typo. | 15:04 | |
r4744, autrijus++ | * do away with interp_info entirely (sigh) | 15:26 | ||
_mml | hey all. i'm interested in helping out w/ pugs development. been a perl programmer since '93 and I'm familiar w/ Haskell, too. how can i help? | 15:32 | |
stevan | mml | 15:33 | |
many ways, write tests in perl6 | |||
help document the Haskell with Haddock | |||
port perl5 modules to perl6 | |||
what ever you are interested in really | |||
putter | pdcawley: If you really want to do scheme, ping me. I've pieces from an unfinished scm on p5 exercise. | 15:34 | |
stevan | just ask for a committer bit :) | ||
_mml | writing tests would be a good way for me to learn perl 6 syntax, i guess. :-) | ||
stevan | _mml: be sure to check what is already written (which is also a good way to learn perl6) | ||
_mml | cool. | 15:35 | |
in the long run, i'm more interested in tackling a significant subproject within the compiler. | |||
crysflame | a neat series of posts would be brief, autrijus-powered interviews of how people got started with perl6 and what happened to the first thing they worked on | ||
stevan | _mml: for that you will need to talk to autrijus | 15:36 | |
crysflame: in what forum? | |||
crysflame | his use.perl journal comes to mind | ||
being on-topic | |||
i can provide one if none can be found, which seems unlikely | |||
Limbic_Region | _mml - perlmonks.org/index.pl?node_id=455979 may be of some help getting started | 15:37 | |
stevan | crysflame: sort of a "history of perl6" project? | ||
crysflame | stevan: history of the humans of perl6 | ||
not of the code, or the planning | |||
stevan | crysflame: yes, sorry, thats what I meant | ||
crysflame | it's not as much relevant what each person did for their first bit of participation as much as it is their story about how they got to that point | ||
np | 15:38 | ||
_mml | Limbic_Region: thanks. | ||
Limbic_Region | there are several other links there at the Monastery - super searching for pugs will turn up quite a bit of information | ||
_mml | gotcha. | 15:39 | |
autrijus | hi _mml! | 15:40 | |
putter | Hmm... sin() in Emit/PIR.hs has been vop1n -> vop1. So dump.ast doesnt compile anymore. New parrot? But parrot head currently doesnt perl Configure.pl. Sigh. | 15:42 | |
autrijus | putter: ! | 15:43 | |
putter: not perl configure.pl now? | |||
putter: report them in irc.perl.org #parrot? | |||
(and yes, sin() is in builtins now) | |||
_mml | hello, autrijus. i'm just starting to get my feet wet w/ perl6 and pugs, but i think i am interested in doing a significant project. | 15:44 | |
autrijus | _mml: cool! | ||
_mml | i've built a native code scheme compiler before, so i have a little experience. | ||
autrijus | wow, that's more than a little | ||
I'm currently focusing on making pugs a compiler | |||
instead of a parser that happens to evaluate the parse tree | 15:45 | ||
_mml | any direction on a project that might be suitable in scale to be a master's software project ;-) would be welcome. | ||
autrijus | have you read my paper? :) | ||
# perlcabal.org/~autrijus/hw2005.pdf | |||
there's some TODOs in it | |||
in "Future Work" section | |||
for master's software project scale, how about a PPI-based Perl5->PAST translator? :) | 15:46 | ||
_mml | it was on my TOREAD stack, so i think i'll hit it now. thanks. | ||
autrijus | or a PAST->Perl5 emitter; or a Grin/Core->PIR emitter | ||
all of them will be tremendously useful | 15:47 | ||
stevan | autrijus: this paper is an interesting read/take on metaclasses (when you have time) research.sun.com/projects/plrg/core-calculus.pdf | ||
crysflame | I,I "Grin/PAST->Perl5" | ||
autrijus | stevan: ok! | ||
Khisanth | Perl5 -> Parrot AST? isn't that what ponie is? | ||
stevan | autrijus: I am collecting stuff so I can talk to $Larry at the hackathon | ||
my plan is to get the meta sections of AS12 more filled out | |||
_mml | cool. i'll keep those possibilities in m ind. | 15:48 | |
thanks, autrijus! | |||
integral | Khisanth: not exactly... | ||
stevan | I think with a proper meta-model, a lot of really cool stuff will be very simple in Perl6 | 15:49 | |
autrijus | stevan: that'd be wunderbar | ||
stevan | like persistence, etc | ||
but for right now I have to get back to $work (so I can pay for my trip to YAPC/hackathon) :) | |||
stevan goes back to the chain-gang & | 15:50 | ||
autrijus | Khisanth: no... ponie is XS->ParrotInterp | ||
Khisanth: very different level | |||
(and when I say PAST, I really mean PugsAST here) | |||
integral | One issue with a PPI based system is that currently PPI does no parsing of expressions, so you first need to produce a precedence grammar for that | 15:51 | |
autrijus | that's a bit confusing though. | 15:53 | |
autrijus pon^W^W^W^Wbetter names welcome. | |||
svnbot6 | r4745, autrijus++ | * the "correct" full CPS codegen landed -- but due to Parrot's bug | ||
r4745, autrijus++ | (Continuations can't get_param), this is sadly broken at | |||
r4745, autrijus++ | the moment. Pending on Leo's fix... | |||
_mml | has PPI been ported to Perl6? | 15:54 | |
autrijus | _mml: no | 15:57 | |
but if ppi->past works, you can use it to translate ppi itself | 15:58 | ||
:) | |||
and PAST's Emit.Perl6 is trivial. | |||
autrijus ponders a better type name for Pugs's AST | 16:00 | ||
PAS? P6AST? | |||
svnbot6 | r4746, iblech++ | Emit.PIR -- Added &infix:<~>. Now t/01-sanity/01-tap.t and 02-counter.t work! | 16:23 | |
geoffb bak, but not read scrollback yet | 16:29 | ||
autrijus, I went to do a new project on OpenFoundry, and got a big license to accept -- in I'm guessing chinese, since I'm seeing a big long block of codepoints . . . | |||
What am I agreeing to? | 16:30 | ||
autrijus | geoffb: it's a repeat of the same thing as your user term of agreement. :-/ | ||
it's a bug that it's in chinese. | |||
both are sf.net boilerplates | |||
geoffb | ah | 16:32 | |
cool, then | |||
autrijus adds a parrotBrokenXXX flag to Emit.PIR for fun | 16:34 | ||
svnbot6 | r4747, autrijus++ | * add a parrotBrokenXXX flag to Emit.PIR ;) | 16:42 | |
geoffb | ping(chip) | 16:45 | |
autrijus, what is the "Topic Suggestion" field on the register project info form? | 16:58 | ||
autrijus | geoffb: if your project doesn't belong to one of the existing topics | ||
(as likely won't) | |||
this field is so you can fill in some suggestion to the site taxonomy | 16:59 | ||
geoffb | AH! So rather than using "Other-Miscellaneous" | ||
putter | autrijus: As with an initial ::, the presence of a :: within the name does not imply globalness (unlike in Perl 5). S12 | ||
autrijus | putter: I stand entirely corrected. tests welcome :-(~ | 17:00 | |
putter | So the question for parrot is whether one can find_name ["foo";"bar"], or whether... we need to crawl stack. yes? | 17:04 | |
svnbot6 | r4748, autrijus++ | * first cut at short-circuiting logicals (doesn't work yet) | ||
autrijus | I think we either request for a find_name fix in parrot | 17:05 | |
or roll our own support pmc | |||
or (easiest) write a crawler helper fun | |||
putter | sounds right. ok. | 17:06 | |
geoffb | autrijus, After selecting code and content licenses, I come to a page with tabs and breadcrumbs and such, but no content. View Source shows that the page just ends at the beginning of the table underneath the breadcrumbs | 17:11 | |
svnbot6 | r4749, autrijus++ | * string comparisons and numeric equal/nonequal | ||
autrijus | geoffb: hm? that page should show that registeration has completed | 17:12 | |
geoffb: what's your project id? | |||
geoffb | sdlperl1 | ||
autrijus | the table should have one line of text in it | ||
geoffb | Well, as long as the project exists now, that's cool | ||
Hmmm, I'm guessing since I don | 17:13 | ||
t see it on My Page, you guys have to approve it now. | |||
FEK | |||
autrijus | er, no, the approval should be automagic. | ||
geoffb | oops | 17:14 | |
autrijus | checking the log. | ||
do you still have the final page? | 17:15 | ||
can you POST again? | |||
geoffb back buttons a couple times | |||
OK, posting from content license page | |||
Again, empty page | 17:16 | ||
autrijus | hm. you're logged in as "geoffb"? | ||
svnbot6 | r4750, autrijus++ | * make precedence clearer in 03-equal | ||
geoffb | (well, tabs and breadcrumbs, but otherwise empty) | ||
yep | |||
autrijus | sec | 17:17 | |
geoffb | nod | ||
xerox | afk | ||
geoffb | brb | 17:18 | |
putter | lol | 17:19 | |
autrijus | weird. it worksforme. | ||
geoffb | bak | 17:21 | |
geoffb blinks | |||
Perhaps because I chose 2 code and 1 content license | |||
? | |||
BTW "Perl Dual-License" should really be available as a choice | |||
svnbot6 | r4751, iblech++ | * Emit.PIR -- Added "&time" so pugs -CPIR -we 'say time - BEGIN { time }' works :) | ||
r4751, iblech++ | * Emit.Common -- Usual svn properties. | |||
autrijus | geoffb: nod. | 17:22 | |
geoffb | Rather than having to hand enter either GPL or Artistic, depending on which one came in the dropdown | ||
2+2 didn' | |||
t work either | |||
GAH, FEK | |||
autrijus | hrm? | 17:23 | |
geoffb | "Fricking Enter Key" | ||
OK, may have to fight this battle another day. Preparing for trip now. | 17:24 | ||
autrijus | ok | ||
post again | |||
geoffb | ok, hold on | ||
autrijus | if there's an error, paste it here | ||
I mean, nopaste | |||
geoffb | That's a bot better. but now I got a Best Practicle RT Error "Ticket could not be created due to an internal error" | 17:25 | |
Need nopaste? | |||
autrijus | no | ||
I'll Storable your request session | |||
post once again | |||
geoffb | OK, hold on | ||
autrijus | and I'll fix it without requiring you to keep entering :) | ||
sorry for the trouble... hadn't seen that before | 17:26 | ||
geoffb | same error | ||
thanks | |||
autrijus | cool, now I have a /tmp/session.86565 | ||
geoffb | np | ||
autrijus | I'll debug on that. sorry | ||
geoffb | OK, I need to be AFK for a while, but will try to check in before driving away. | ||
thanks for your help | |||
autrijus | nod. | ||
svnbot6 | r4752, iblech++ | Emit.PIR -- Fixed the string comparision ops. | ||
autrijus | np at all. if I managed to fix it the project should be created automagically | ||
geoffb | (y) | 17:27 | |
autrijus | iblech: wow. :) | ||
geoffb | OK, afk. | ||
mr_ank | stupid theorical question: i was reading a bit on kaskell's compilers toolkit - is there a difficulty to writing pugs using Happy? | 17:30 | |
autrijus | mr_ank: verily. | 17:32 | |
mr_ank: BEGIN block may modify the lexer at any time. | |||
so pretty much have to lex+parse in one pass. | |||
as well as dynamically construct precedence parsers | 17:33 | ||
arcady | user-defined operators definitely make parsing that much more interesting | ||
mr_ank | i see | 17:34 | |
svnbot6 | r4753, autrijus++ | * add binding helper function <:= for PIR | 17:39 | |
r4753, autrijus++ | * repair string infix primitives | |||
r4754, autrijus++ | * more use of helper symbolics: <== is now assign | 17:45 | ||
r4754, autrijus++ | * oops, broke comparison accidentally. | |||
autrijus | ooh, 04-if passes | 17:47 | |
arcady | pugs doesn't support the ==> and <== pipe operators does it | 17:49 | |
autrijus | affirmative | 17:51 | |
svnbot6 | r4755, autrijus++ | * repair logical short circuits. | ||
r4756, autrijus++ | * wow, typo again. | 17:53 | ||
r4757, autrijus++ | * *sigh* ok, now 06-use really passes | 17:57 | ||
autrijus | dinner & | ||
_mml | autrijus: this would seem to limit the usefulness of PPI->PugsAST (from PPI readme): "Source filters are not and will not (and can not) be supported." | ||
integral | _mml: lots and lots and lots of code (modulo ingy) doesn't use source filtering... | 17:59 | |
crysflame | PPI is limited to code that isn't source filtered | ||
which excludes lots of Acme and a few other modules | |||
Alias has a complete CPAN coverage list | |||
_mml | crysflame: thanks. said list would be useful. | 18:00 | |
crysflame | he's here fttt | ||
_mml | fttt? | 18:01 | |
crysflame | from time to time | ||
also on .au timezone | |||
_mml | gotcha, thanks. | ||
ingy | integral: modulo what? | 18:03 | |
integral | Spiffy's source filter for methods | 18:04 | |
so a PPI based p5->past compiler couldn't do some of Kwiki | |||
ingy | I think that is the only source filter I have written, but yeah | ||
I think a better point is that Perl6 obviates the need for Spiffy, and that Kwiki should just be a Perl6 project :) | 18:05 | ||
integral | at least the unicode handling should be faster :) | ||
ingy | it is interesting though that 100s of modules use Spiffy even though only a couple actually 'use Spiffy' ;) | 18:06 | |
crysflame | ingy++ | 18:08 | |
ingy | anyway, you meant 'modulo Spiffy' not 'modulo ingy' | ||
Damian is the ultimate filter culprit | 18:09 | ||
crysflame takes the remainder of ingy | |||
ingy | :P | ||
crysflame: you can have my remainders soon. I'll be in sfo in 3 weeks | |||
crysflame | good | 18:10 | |
where 2? | |||
ingy | no | ||
I couldn't make that because of YAPC | |||
i'm in sfo July 11-16 for Socialtext | 18:11 | ||
crysflame | ok | ||
socialtext what? | |||
ingy | We are getting the remote company into the same town for a week | ||
crysflame | wow | 18:13 | |
i would like to have dinner or lunch with y'all | |||
svnbot6 | r4758, iblech++ | Emit.PIR -- Added some Haddocks. | 18:16 | |
r4759, putter++ | "Fixed" bool::true in Emit/PIR.hs. Namespaces have problems in both pugs and parrot, so workaround them for now. | 18:54 | ||
r4760, iblech++ | Prelude, Pugs.Parser -- Detect leaking of IO handles created at compile-time | 19:04 | ||
r4760, iblech++ | into runtime (BEGIN { open "README" }). | |||
iblech | autrijus: BTW, if you don't know it, svn.perl.org/perl6/pugs isn't synching | 19:08 | |
svnbot6 | r4761, iblech++ | Added a test testing that BEGIN and CHECK blocks may not leak IO handles | ||
r4761, iblech++ | created at compile-time into runtime (but INIT and bare {...} should work) | |||
r4761, iblech++ | (t/statements/io_leaking_into_runtime.t). | |||
iblech | nothingmuch: And do you know nothingmuch.woobling.org/pugs_test_status/ doesn't update? | 19:11 | |
autrijus: Am I right in the assumption that we'll have to traverse all compile-time namespaces/lexical pads and compile the containing variables? | 19:14 | ||
autrijus: For example we'll have to compile the &foo created by BEGIN { our &foo = sub {...} } | 19:15 | ||
kungfuftr | ?eval my $class = class { method hehe { print 1; }}; my $class $foo; $foo.hee; | 19:19 | |
iblech | 21:11 < iblech> nothingmuch: And do you know nothingmuch.woobling.org/pugs_test_status/ doesn't update? | 19:22 | |
nothingmuch | what? | ||
oh, | |||
that happens occasionally | |||
oh, someone rebooted the box | |||
restarted the loop | 19:23 | ||
iblech | Thanks :) | 19:24 | |
nothingmuch | =) | ||
iblech | nothingmuch++ | ||
svnbot6 | r4762, iblech++ | Prelude -- Oops, my recent &check_for_io_leak checkin borked 'my $x; BEGIN { $x | 19:25 | |
r4762, iblech++ | = ...}'. Fixed. | |||
putter | Doh! You cant move Prim.hs and PIR.hs abs() to Pugs::Internal. and wrap it in Prelude.pm, _until pugs can compile Prelude.pm to parrot_. Sigh. Lunch. | 19:34 | |
19:42
Ara4n is now known as Aragone
|
|||
putter | ?eval package A {$x = 'inA';}; say $A::x; | 20:23 | |
?eval 3 | |||
?eval package A {my $x = 'inA';}; say $A::x; | 20:24 | ||
?eval package A {our $x = 'inA';}; say $A::x; | |||
Does anyone know if the package my/our examples are plausible? | |||
putter goes back to wading through AES... | |||
gaal | hey, did you notice that $:vars don't need to be declared? | 20:50 | |
Darren_Duncan | didn't notice ... but I can confirm that if you'd like | 20:51 | |
gaal | ?eval class F; my $x; method f { $x = ++$:undec }; F.new.f; $x | ||
no evalbot? | |||
well, it happens to me. | 20:52 | ||
we finally have a way to avoid strictures! :-p | |||
Darren_Duncan | I'll rephrase that ... I didn't notice several weeks ago ... will confirm if its the case now | ||
one thing I did notice a month back was that variables were not case sensitive | |||
gaal | but you have to use oop for that, it seems, so not very golf-useful :) | 20:53 | |
wow | |||
Darren_Duncan | quick test ... | ||
?eval my $Foo = 3; say $foo; | |||
?eval my $foo = 3; $foo; | |||
gaal | doesn't happen here. | ||
no the evalbot isn't running | |||
Darren_Duncan | gaal, start up your own copy of Pugs and run this: my $Foo = 3; say $foo; | 20:54 | |
the 'say' prints '3' | |||
whereas "my $foo = 3; say $bar;" says Undeclared variable: "$bar" | 20:55 | ||
gaal | oh, in interactive mode? didn't try that | ||
Darren_Duncan | yes, interactive, closest thing to evalbot without evalbot ... I think | ||
except that its not 'safe' mode | 20:56 | ||
gaal | no, sorry, i can't reproduce this in int.mode either | ||
though my linux build is a little old (4714) | |||
---interactive mode doens't work on windows | |||
for unfortunate ghc reasons. | |||
brb | 20:57 | ||
Darren_Duncan | okay, put those lines in a script then | ||
gaal | no, in a one liner it gives the right error | ||
but i'll brb :) | |||
Darren_Duncan | I just tested in one-liner mode ... does give right error for $foo undeclared then | 20:59 | |
a script also shows the error | 21:00 | ||
when I first detected the problem last month, it did no in the script form, and I never used -e then | 21:01 | ||
gaal, I confirmed that your example prints 1: class F; my $x; method f { $x = ++$:undec }; F.new.f; say $x | 21:04 | ||
svnbot6 | r4763, autrijus++ | * beginning support for user-defined subs in PIR (does not work yet) | ||
Darren_Duncan | I confirmed this both in interactive mode and in oneliner mode | ||
so that problem exists | 21:05 | ||
but the problem of case-insensitive vars only seems to happen in interactive mode now | |||
gaal | are you running HEAD? it must be fairly new | 21:06 | |
Darren_Duncan | I'm running the latest version, as I usually do | 21:20 | |
I'm running 4762 | 21:21 | ||
gaal | well, it's a fairly recent problem then, since 4717 didn't have it. | 21:22 | |
Darren_Duncan | are you talking about the problem you discovered, or that I discovered? | ||
gaal | the casitivity problem you discovered. | 21:23 | |
Darren_Duncan | my current testing shows the problem only happening in interactive mode, not oneliner or script | ||
a month ago it was in script too | |||
if you can't run interactive mode then it would be a-ok for what you can run | 21:24 | ||
gaal | yes - my pugs that does do interactive mode is 4717. | ||
(i have two machines) | |||
autrijus | pugs> my $Foo = 3; say $foo | ||
*** Undeclared variable: "$foo" | |||
r4723 | |||
Darren_Duncan | so both of you update to the newest and see what happens there | 21:25 | |
if appropriate to your situation | |||
autrijus | updating | ||
Darren_Duncan | I see an update too, by 1 | ||
will retest with 4763 | 21:26 | ||
gaal | unfortunately the linux box is very slow so it can take quite a while for me to bring pugs up to date there. | ||
Darren_Duncan | too bad | 21:27 | |
gaal | autrijus, is the $:x bug known? | ||
autrijus | pugs> my $Foo = 3; say $foo | ||
*** Undeclared variable: "$foo" | |||
at <interactive> line 1, column 14-22 | |||
r4763. | |||
gaal: hm? | |||
Darren_Duncan | it only takes a few minutes here | ||
autrijus wonders if it's a osx specific bug | |||
gaal | $:private vars need not be declared right now. | ||
sec, backlog has demo | |||
Darren_Duncan | but then I 'svn up' + 'make' several times per day, and don't 'clean' | ||
autrijus | gaal: you mean objects are just hashes? | ||
gaal | ?eval class F; my $x; method f { $x = ++$:undec }; F.new.f; $x | ||
the evalbot is down, but that evals to "1". | 21:28 | ||
autrijus | right. that's because we don't have a metamodel :) | ||
gaal | $:undec was not declared my | ||
autrijus | i.e. objects aren't locked hashes | ||
Darren_Duncan | I confirmed the '1' in prev version | ||
autrijus | they are just hashes. | ||
gaal | ok | ||
Darren_Duncan | in all modes | ||
gaal | writing a debugger is fun! | 21:29 | |
Darren_Duncan | er, 2 modes | ||
autrijus | gaal: you're writting a pugs debugger? | ||
gaal | no, a l33t debugger :) | ||
autrijus | mm depugger | ||
gaal | lol | ||
Darren_Duncan | question: how do you write a test for a bug that only shows up in Pugs' interactive mode? | ||
can you pipe to Pugs? | 21:30 | ||
gaal | cat test | pugs | ||
no that wont' work | |||
because there's a hInInteractiveMode call :( | |||
kungfuftr | if you use $obj.array_attribute in a non-method call way, is there anyway to do something like $obj.array_attribute.push('foo'); ? | ||
autrijus | cat test | pugs - | ||
gaal | i repeat my suggestion that there be an explicit | ||
oh. | |||
:) | 21:31 | ||
autrijus | :) | ||
kungfuftr: does it not work currently? | |||
gaal | can anyone think of an idiomatic way to flip a Bool variable? | 21:32 | |
kungfuftr | autrijus: *blink* sorry, i've got way too many sandboxes | 21:33 | |
autrijus | gaal: $x = !$x? | ||
kungfuftr | autrijus: though still wondering if you can do it with wrap methods | ||
gaal | autrijus, that actually doesn't work :) | ||
?eval my Bool $x = bool::false; $x!=$x; say $x.perl | 21:34 | ||
\bool::false | |||
autrijus notes that gaal spelled =! as !=. | |||
gaal | lol | ||
heh, oops. | |||
kungfuftr | my Bool $x = bool::false; $x.reverse; # ? | ||
gaal | okay, i want an idiomaticer way -- with op= | 21:37 | |
kungfuftr, does your meth work? should it? :) | |||
autrijus | gaal: op= is infix | ||
kungfuftr | =0) | ||
autrijus | not thinking you have another operand :) | ||
gaal | why, ?!= bool::true. | 21:38 | |
autrijus | however if you insist! | ||
^^= 1 | |||
gaal | arigate | ||
autrijus | ...which revealed a lexer bug. | 21:39 | |
gaal | haha. | ||
autrijus | ah well. | ||
gaal | actually what i am doing is toggling membership in a set | ||
whcih i'd been using a hash to represent | |||
but that isn't beautiful because then '%set.keys' isn't the data structure | 21:40 | ||
isn't the modeled data that is | |||
%set.keys.grep:{%set{$_}} is | 21:41 | ||
which is ugly | |||
oh well. | |||
autrijus | gaal: repaired. | ||
svnbot6 | r4764, autrijus++ | * repair ^^ and ^^= for gaal. | 21:42 | |
Darren_Duncan | Pugs is still recompiling ... meanwhile I'm about to ship another Perl5 version of SQL::Routine ... just have to finish Changes file first | ||
gaal | autrijus++ is teh l33t :) | ||
thanks! | |||
autrijus | n0 p0r6|3m, 6441 | 21:43 | |
nothingmuch | evening | ||
gaal | crap, my name is not a valid l33t opcode. | ||
autrijus | yo nothingmuch | ||
nothingmuch | what's up? | ||
gaal | 4utr1ju5 means END though :) | 21:44 | |
autrijus | nothingmuch: gnoming from pugside to parrotward | ||
Darren_Duncan | compile done on 4763 ... gaal's problem of private vars still happens in -e mode | ||
autrijus | right, private vars is known | ||
tests welcome | |||
nothingmuch | i tried starting to learn parrot earlier today | ||
but then I got stopped | 21:45 | ||
Darren_Duncan | however, interactive mode gives something different now ... | ||
nothingmuch | I think i created the pudding and ice cream entries in the hebrew wikipedia | ||
Darren_Duncan | forget last line | 21:46 | |
nothingmuch | after which I had to drive my sister and a guest from beer sheva to home | ||
gaal: was that the migo? | |||
Darren_Duncan | okay, 4763 fixed the insensitive variable thing | ||
gaal | hmmm, could be! | ||
Darren_Duncan | both interactive mode and -e mode now say "Undeclared variable" ... unlike 4762 where only -e did | 21:47 | |
autrijus | that's cool | 21:49 | |
nothingmuch | oh boy! /me just realized he is close to being a saint on perlmonks | ||
when I started going that seemed so unattainable | |||
and now it's even more of a surprise, as I haven't exactly been frequenting the place | 21:50 | ||
gaal | i was the 333rd saint | ||
which is nice because 33 is my name in gimatria. | |||
nothingmuch | nice number =) | ||
i think valdez or bart (can't remember) were 128 | 21:51 | ||
ah, on valdez site i'm just under the photographer | |||
that was a nice dinner | |||
not as nice as the second one, but still very nice | |||
gaal | bologna? | ||
nothingmuch | ferarra | 21:52 | |
err, ferrara | |||
gaal | italy++ | ||
nothingmuch | yes, very | ||
gaal hacks | |||
nothingmuch | the second dinner was around 4 hours long | ||
i got stuffed by the first meal | |||
first dish, sorry | 21:53 | ||
or course | |||
regained my appetite each time over | |||
except for the main course, which I really couldn't fit | |||
i think I drank around 3 liters of fluids | |||
around 1/3-1/2 of which was wine | |||
the best thing that happenned was the cake | 21:54 | ||
it was simply delightful | |||
gaal | lolful mail from $larry on p6-l | 21:55 | |
nothingmuch | which one? | 21:56 | |
gaal | you'll know it when you see it | ||
the latest. | |||
Darren_Duncan | the one about a racoon? | 21:57 | |
Limbic_Region is really glad he clarified since I was beginning to question his sanity | |||
gaal | yeah | ||
crysflame | mm, cake | ||
Darren_Duncan | I like cake | ||
gaal | say %:breakpoints.keys.sort:{$^a<=>$^b} <- isn't this right? | 21:58 | |
Darren_Duncan | not sure but appears to be | ||
gaal | it's doesn't parse now :( | 21:59 | |
Limbic_Region | there isn't a space between the : and the { is there | ||
Darren_Duncan | I don't see any space | ||
gaal | nope. | ||
Limbic_Region made the mistake of thinking @foo.map: { # was ok | |||
apparently it isn't | |||
Darren_Duncan | try substituting the %: with $obj.: | 22:00 | |
or just put a 1 in the block | |||
to isolate | |||
gaal | huh, you think i have *invocants*? :) | ||
autrijus | hm quicksort is broken | 22:01 | |
something's very wrong now | |||
like, maximally wrong | |||
yay, user sub landed | 22:12 | ||
autrijus retreats back to bedroom | 22:13 | ||
svnbot6 | r4765, autrijus++ | * user-defined (nullary-only) subroutines! | 22:20 | |
r4766, putter++ | Added undef, chop, clone, !, ?^, and id (not working), to Emit/PIR.hs. | |||
nothingmuch | wow... the does> word is so cool | 22:24 | |
autrijus | putter++ # gnoming! | 22:28 | |
svnbot6 | r4767, putter++ | Added chomp to Emit/PIR.hs. | 22:34 | |
clkao | whoot. things are moving on | ||
autrijus | clkao: user-defined subs is landing | 22:36 | |
nothingmuch | i need name, function, immediate, compile only | ||
autrijus: given a fresh start, how would you imlement a primitive table? | 22:37 | ||
gaal | i'm off to bed. night all! | ||
nothingmuch | maybe I should just make them as words | ||
good night gaal! | |||
gaal | bye :) & | ||
putter | goodnight gaal. | 22:38 | |
autrijus finished full user-defined subroutine | 22:53 | ||
nothingmuch: given a fresh start, I'll use p6 signatures :) | |||
nothingmuch | no, in forth ;-) | 22:54 | |
autrijus | oh ;) | ||
arcady | isn't almost everything a word in forth? | 22:55 | |
Limbic_Region will likely be soliciting ideas for a perl6 category in his time capsule project over at the Monastery | |||
nothingmuch | arcady: at some level you have the hooks going back to the host language (or asm) | ||
you wrap them in words | |||
in haskell I have functions implementing primitives | 22:56 | ||
i'd like them to be more of a table | |||
but i don't like doing this with touples | |||
svnbot6 | r4768, putter++ | Added join and split to Emit/PIR.hs. But parrot can only split on "" until regexps are working. | 22:59 | |
autrijus notes we get PGE for free | 23:05 | ||
geoffb: sorry I didn't get to look into foundry bug; will do so tomorrow | 23:08 | ||
putter | Apparently the split op and PGE are not plugged together yet. Cant split("b","abc"). Get complaint about regexps being unimplemented. | ||
autrijus | putter: nod, need to put PGE loading into our "init" | 23:09 | |
in Compile.PIR | |||
and then implement our own split | |||
alternately, fix parrot's split using pge | |||
Darren_Duncan | fyi, I have just uploaded the Perl 5 SQL-Routine-0.65 ... when I redo a Perl 6 version soon, it should closely resemble that one | 23:10 | |
svnbot6 | r4769, autrijus++ | * PIR - full user-defined sub (with slurpiness) landed! | ||
r4769, autrijus++ | * all sanity tests, save 07-test.t, are working! | |||
nothingmuch | woo! | ||
> : FOO [ 2 2 * ] LITERAL ; | |||
> see FOO | |||
: FOO 4 ; | |||
autrijus | with this I think I can get Test.pm working tomorrow. | ||
crysflame | is it possible to write perl6 code that parses in perl5 as well? | 23:11 | |
putter | O.O | ||
Limbic_Region | sure crysflame | ||
Darren_Duncan | some simple Perl 6 code would parse in Perl 5 | ||
Limbic_Region | as long as you are selective on what p6 you use | ||
my $foo = 'bar'; print "$foo\n"; | |||
Khisanth | Perl5 is to Perl6 as C is to C++? :p | ||
Limbic_Region | that's p5 or p6 code | ||
crysflame | i'm mostly dreaming | 23:12 | |
autrijus | hm, more control structures are pending on the register alligator | ||
crysflame | but it'd be useful to have a banner routine that detects when a perl6 script is being run by perl5 and have it re-exec itself with -MPerl6::* | ||
autrijus | hopefully leo and I can kill it tomorrow | ||
Darren_Duncan | some time there should be a contest where people submit the most complicated and feature using Perl 6 programs they can that also run the same in Perl 5 | ||
crysflame nods to Darren | |||
Perl4 for extra points | 23:13 | ||
Perl1 to win | |||
Darren_Duncan | and no use of eval allowed | ||
putter | one can also write code which works in both p5 and ruby. ;) And files, not code, which does more... | ||
Darren_Duncan | for the contest I mention, it would be complete files | ||
not just code snippits | 23:14 | ||
putter | www.vendian.org/mncharity/dir3/multilang/file/ | ||
;) | |||
Darren_Duncan | its important to not allow string-eval since that allows a lot of cheating | 23:15 | |
nothingmuch | wow! branches! | 23:17 | |
Darren_Duncan | now making 4770 | 23:21 | |
svnbot6 | r4770, putter++ | Slight reordering of Emit/PIR.hs preludePIR. | ||
buu | HAI | 23:22 | |
autrijus | btw, if people want to help out on the compiler/translator, now it's possible to run pugs -BPIR on any piece of code and get a reasonably clear report on where needs work | 23:23 | |
putter | autrijus: how does one say... SubName -> PrimName -> ((RegClass a) => a) -> ((RegClass a) => a) -> Decl | 23:24 | |
autrijus | putter: a and a are same? | ||
putter | oops, no. | 23:25 | |
autrijus | (RegClass a) => SubName -> PrimName -> a -> a -> Decl | ||
if not | |||
(RegClass a, RegClass b) => SubName -> PrimName -> a -> b -> Decl | |||
putter | :) | ||
tnx | |||
autrijus | that's universal quantification (i.e. the default), which should work for you | ||
if you really want existential quantification, it's | |||
SubName -> PrimName -> (forall a. RegClass a => a) -> (forall b. RegClass b => b) -> Decl | 23:26 | ||
but that is rarer. | |||
putter | k | ||
clkao | autrijus: please spread svk in toronto.. i'll ask orange ninja to bring along stickers | 23:30 | |
putter | autrijus: the rarer version worked! | ||
autrijus | clkao: sure! | 23:31 | |
djames | clkao: Do you have SVK posters? | ||
autrijus praises GHC's type system extensions | |||
clkao | no, no poster. | ||
but you have enough stickers to make a poster size sticker wall | 23:32 | ||
23:32
Limbic_Region_ is now known as Limbic_Region
|
|||
Limbic_Region | autrijus - do you have a methodical approach to completing the compiler/translator or are you just attacking stuff as you encounter it? | 23:34 | |
autrijus | Limbic_Region: run random program, and the error msg will tell one what to work on next. | ||
Limbic_Region: the typesystem makes clear the next step always :) | |||
(and, fwiw, the priority is Test.pm) | 23:35 | ||
for me | |||
since then we can harness parrot. | |||
that is, make smoke-pir | |||
or make pirsmoke | |||
or some other env, not sure | |||
Limbic_Region | autrijus - s/random/the examples you have posted so far/ | ||
though am I going to be able to do any of this without Parrot on my machine? | 23:37 | ||
autrijus | yup | ||
Limbic_Region | ok | ||
autrijus | replace -BPIR with -CPIR | ||
and you'll be set | |||
most of the work (in Comp monad) are reusable | |||
I'm basically moving Eval.hs over bit by bit | |||
once the basic is there, I'll transplant Eval.hs to use the Comp monad. | |||
Limbic_Region | well - my Haskell is very very very rudimentary at best | ||
autrijus | that will make the interpreter much faster and detect sytnax errors and makes class literal work etc. | ||
Limbic_Region | but I am guessing there is enough for me to copy/paste and modify | 23:38 | |
autrijus | quite so. don't hesitate to ask here or on p6c :) | ||
but I need to sleep now... it's far too late here | |||
Limbic_Region | sleep well | ||
autrijus | whoa, I really worked on this for a week now? | 23:39 | |
time does fly past. | |||
autrijus feels like it's just started yesterday | |||
but it's really just a very very long day for me :) | |||
Limbic_Region | heh | ||
autrijus | journal up. g'night! *wave* & | ||
putter | g'night! | 23:41 | |
nothingmuch | woo! IF ELSE works | 23:46 | |
Darren_Duncan | good night | ||
nothingmuch | > : FOO IF 5 ELSE 6 THEN ; | ||
> 1 FOO . | |||
5 | |||
> 0 FOO . | |||
6 | |||
putter | good night. 4th! | 23:47 | |
putter goes off to see what primatives Test.pm needs... | 23:48 | ||
Limbic_Region is still waiting for pugs to compile | 23:50 | ||
sri_ | is caller not yet implemented? | 23:51 | |
svnbot6 | r4771, putter++ | Refactored vopMumble in Emit/PIR.hs, with typing help from autrijus. Added chr() and ord(). | ||
sri_ | returns undef here :/ | ||
clkao | sri_: Pugs::Internals::caller ? | ||
sri_ | *** No compatible subroutine found: "&Pugs::Internals::caller" | 23:53 |