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 |