pugscode.org <Overview Journal Logs> | pugs.kwiki.org down Set by theorbtwo on 21 May 2005. |
|||
autrijus | "A day may come when the hacking of humankind fails, when we forsake our keyboard and turn all programming to machines. But it is not this day -- this day we code!" :-) | 00:00 | |
nothingmuch really goes now... Ciao! | |||
autrijus | see ya | ||
theorbtwo | Later. | 00:01 | |
autrijus++ | |||
knewt | autrijus: any idea when you'll be getting in to vienna? | 00:02 | |
autrijus | knewt: 8th 6am | 00:03 | |
knewt | ouch. that's early. | ||
autrijus | yeah. | ||
knewt | if i get the flight i'm looking at right now i'll be getting in at 3:10pm | ||
svnbot6 | r3621, nothingmuch++ | Clarify on what is a C<Syn>, where special case of thereof was confusingly described like it was any C<Syn> | 00:04 | |
autrijus | ...and so nothingmuch also learned the secret of working in his sleep. | 00:05 | |
knewt | no-one will ever beat /you/ at that trick though *g* | ||
autrijus | :D | 00:06 | |
knewt | autrijus++ # i don't think i've ever seen anyone else write quite so much code whilst sleeping | ||
elmex | elmex-- | ||
for being lame | |||
wolverian | hmm. svk pull is slow. | 00:09 | |
eric256 | why use svk instead of svn? | 00:10 | |
wolverian | curiosity. | ||
I guess pull is a bit redundant for me though. | 00:11 | ||
eric256 | lol. i just wondered if there was some cool svk feature i was missing out on | 00:12 | |
clkao | "Be Autrijus. Use the tool." | ||
autrijus | heh. | 00:13 | |
wolverian | hmm. what is the difference between svk pull and svk up -sm? | ||
autrijus | the first one is easier to type. | ||
wolverian | :) | ||
autrijus | I think I need to sleep now and punt journal until I wake up :) | 00:20 | |
autrijus waves & | |||
clkao | lazy autrijus | ||
autrijus | force me! evaluate me! reduce me to weak normal head form! ;) | 00:24 | |
theorbtwo | Weak normal head form? | ||
clkao | [work] autrijus | ||
autrijus | theorbtwo: foldoc.doc.ic.ac.uk/foldoc/foldoc.c...ormal+Form | 00:25 | |
as you can see, I dyslexed it too :) | 00:26 | ||
maybe weak head _is_ my normal form. | |||
today saw 90+ commits. | 00:29 | ||
crazy. | |||
I still remember when 40 was considered normal. | 00:30 | ||
and only 7 out of 90 is mine. | |||
clkao | there's no exporter yet? | 00:32 | |
autrijus | is export | ||
sub foo () is export { ... } | |||
finer control from the user side is not yet implemetned | 00:33 | ||
clkao | current build system for ext sucks | 00:41 | |
autrijus | please refactor away. | 00:42 | |
wolverian | are trivial (spelling) fixes to 02Internals.pod okay? | ||
autrijus | wolverian: sure, nothingmuch explicitly said okay | ||
wolverian | ah, right. thanks. | ||
now to figure out how to commit with svk :) | |||
cognominal | wolverian: I did a commit than a push | 00:44 | |
not pretending that the best way, that the one I found | |||
wolverian | right. push keeps saying 'empty merge' to me. | 00:45 | |
cognominal | yea, there is all sort of scary message | ||
wolverian | I guess my svk is _old_ though | ||
clkao | warn "hate" will give me terrifying *** Error: MSG | 00:46 | |
wolverian | hmm. that might have done it. | 00:50 | |
I only had to give my openfoundry password thrice :) | 00:51 | ||
theorbtwo | If your openfoundry username isn't the same as your local username, it can produce problems. | 00:53 | |
svnbot6 | r3622, Stevan++ | tests for classes that are loaded with nested "use" statements; some more bugs in here | ||
r3623, wolverian++ | r224@chronoa: wolverian | 2005-05-22 03:44:08 +0300 | |||
r3623, wolverian++ | Spelling fixes to 02Internals.pod | |||
clkao | it seems lives_ok { } are run in reverse order for me? | ||
wolverian | theorbtwo: it is the same. | ||
theorbtwo: svk just did three merges, for some reason. | 00:54 | ||
svk also apparently inserted some extra stuff in the commit message. :) | |||
clkao | youcan use smerge --verbatim -lf . | ||
autrijus | you can also use push --verbatim | ||
wolverian | ah. thanks! | 00:55 | |
svnbot6 | r3624, autrijus++ | * sigh, theorbtwo was right. Pugs.Compile.Haskell can't use a | 00:59 | |
r3624, autrijus++ | signature for MainCC. | |||
eric256 | i'm guessing circumfix isn't implemented yet? | 01:01 | |
autrijus | you guessed right! | ||
eric256 | lol. okay | ||
theorbtwo | Sorry, autrijus. | 01:02 | |
(Hey, why didn't that theorbtwo get ++ed?) | |||
autrijus | theorbtwo++ | ||
kelan | is that because MainCC is defined in TH? | 01:03 | |
autrijus | kelan: you know, you are right! I know how to fix! | 01:04 | |
kelan | well when i went to find out what TH is, the website lists "can't splice in types" as one of the current limitations | 01:05 | |
i remember theorbtwo asking about that a few days ago | |||
autrijus | no, it's only because I specced the type from outside th | 01:06 | |
should just do it in th. | |||
theorbtwo | autrijus, when I tried that it made the impossible happen. | 01:07 | |
kelan | that was funny | ||
autrijus | theorbtwo: you need Heart of Gold to leverage that. | 01:08 | |
specifically, make clean. | |||
((a sad excuse of) journal) up. | 01:09 | ||
autrijus waves and sleeps for real & | |||
kelan | okay, the scene in the recent hitchhiker movie where the heart of gold makes them all out of fabric and string: best scene i've seen in a movie in a long time | ||
svnbot6 | r3625, autrijus++ | * kelan++ for inspiring me to figure out the problem with | ||
r3625, autrijus++ | Pugs.Compile.Haskell and missing signatures. | |||
clkao | i have basic Benchmark.pm | ||
now how do i do format prointing | |||
autrijus: work more! | 01:10 | ||
kelan | read A07! | ||
clkao | ok | ||
is it implmemented? | |||
e07 i think | |||
kelan | yeah, A07 just says: formats are out of the core. see damian. | ||
theres a p5 module implementing p6 formats on cpan | 01:11 | ||
clkao | i surely mean in pugs | 01:12 | |
eric256 | hmmm using 'say' in a class method with no parameteres is calling it with the object as the paramter... | ||
oh i bet say using $_ as a default parameter. | |||
svnbot6 | r3626, autrijus++ | * reindent PA02's verbatim blocks. Tab-indent in code segments | 01:15 | |
r3626, autrijus++ | exceeded 80col, and Pugs source use 4-space indenting anyway. | |||
wolverian | (4 space indenting)++ | 01:16 | |
eric256 thought autrijus was sleeping. | 01:17 | ||
is there a proper format for defaulting values of class attributes? | 01:18 | ||
kelan | he codes in his sleep | ||
thats how he can get so much done | |||
wolverian | eric256: format? | 01:19 | |
kelan | something like `has $.foo = 3`? | ||
not sure what hes asking | |||
probably a semi-colon would be in order as well | |||
wolverian | me neither. that's why I asked :) | ||
eric256 | has $.foo = 3 is rw; | ||
or | |||
has $.foo is rw = 3; | 01:20 | ||
kelan | probably would have to be the second, i would think | ||
wolverian | yes. | ||
kelan | you're applying the `is rw` to the attribute, not the 3 | ||
wolverian | probably. maybe. | ||
kelan | are class attributes ro by default? that seems inconvenient | 01:21 | |
eric256 | hmm. neither parse in pugs yet so it doesn't matter. lol | ||
wolverian | kelan: yes. | ||
however, you can declare your class as rw | 01:22 | ||
then the default switches around to rw. :) | |||
kelan | is that strictly for generating accessors? | 01:23 | |
wolverian | I don't know. see 'Attributes' in S12. it doesn't mention other effects it might have. | ||
kelan | so that if you refer directly to an attribute inside the class you don't need `is rw`? | ||
wolverian | eric256: these are object attributes, by the way. class attributes are declared with 'my' or 'our' | ||
kelan: "Some traits are copied to the accessor method. The rw trait causes the generated accessor to be declared rw, making it an lvalue method. The default is a read-only accessor." | 01:24 | ||
kelan: I assume the variable itself is mutable by default. | |||
kelan nods | |||
that seems more sensible | 01:25 | ||
wolverian | I guess one would do 'has $.foo is constant is rw = 3;' to make it mutable from outside but not inside. :) | ||
hmm. the accessor might fail though, since it's a constant now. | |||
eric256 can't picture a circumstance where you would want it mutable by outside but not inside | 01:27 | ||
wolverian | me neither. :) | ||
I guess that's a false dichotomy, anyway, as the variable is always changed inside the class (by the accessor methods) | 01:28 | ||
eric256 | i just found out i could start typing names and hit tab to let trillian finish then | 01:29 | |
them* | |||
kelan | and in vim you can start typing variable names and hit ctrl-n to finish them | 01:30 | |
it even cycles if there is more than one variable with that prefix | |||
don't let long variable names annoy you ever again! | |||
Chewie[] | kelan: uhh. does that work? /me tries | 01:53 | |
kelan: holy crap. and i thought i knew everything about good old Vim. | 01:54 | ||
kelan | :) | 01:55 | |
ctrl-p cycles the other direction, whatever that means | |||
but it also does the completion | |||
so whichever is easier to hit | 01:56 | ||
Chewie[] | kelan: hmm. it's greedy. completes tokens; not just variable names. | ||
Chewie[] put _testing in a comment and it grabbed it. | |||
vcv- | Ack. Is there anywhere to get a precompiled version of pugs for windows? | 02:02 | |
kelan | see this message for a possibility: | 02:06 | |
hmm | |||
www.mail-archive.com/perl6-compiler...00723.html | |||
vcv- | cool thanks | 02:07 | |
wait..i compiled pugs already.. :) | 02:08 | ||
scook0 realises that "find -name '*.hs' | xargs rm" was not a clever thing to do... | 02:13 | ||
knewt | created my first pugs patch now :) | 02:46 | |
svnbot6 | r3627, scook0++ | Fixed a comment that was confusing Haddock | ||
ingy | holaa | 02:50 | |
pugs.kwiki.org was broken | 02:51 | ||
due to a bad symlink after I moved kwiki.org to a new faster server | |||
my apologies | |||
all fixed now. | |||
AtnNn | is $*_ specific to pugs? | 02:59 | |
meppl | gute nacht | 03:12 | |
good night | |||
knewt | autrijus: when you wake up... i've made my first pugs patch :) | 03:17 | |
nothingmuch | morning | 05:02 | |
knewt: do you need commit accesss? | 05:19 | ||
because I can arrange that, as can stevan, theorbtwo, obra, hcchien... | 05:20 | ||
ping me back within a few minutes, but after that i'll be going to work, and need to run an errand before I get there | 05:21 | ||
either way please type your email in chat so that someone can send you an invitation | 05:23 | ||
Qiang-zh | is schwern here ? | 05:24 | |
knewt | nothingmuch: [email@hidden.address] | 05:25 | |
nothingmuch | Qiang-zh: occasionally, but I haven't seen him in a while | 05:26 | |
knew or knewt? | |||
Qiang-zh | nothingmuch: do you know how i can contact him ? | ||
nothingmuch | Qiang-zh: on two occasions I've mailed him and got back a reply | 05:27 | |
Khisanth | jabbot: seen schwern | ||
jabbot | Khisanth: I havn't seen schwern , Khisanth | ||
nothingmuch | since I don't know him personally I can't offer a better medium... =P | ||
jabbot: seen Schwern | |||
jabbot | nothingmuch: Schwern was seen 5 days 2 hours 53 minutes ago | ||
Qiang-zh | a friend of mine translating an article from him and he wanted to ask for a permission for that. but couldn't find his contact info.. | ||
knewt | nothingmuch: as an id? knew i think | ||
nothingmuch | Qiang-zh: search.cpan.org/~mschwern/ has an email | 05:29 | |
knewt: invite sent, welcome aboard! | |||
Qiang-zh | nothingmuch: thx! | ||
nothingmuch | Qiang-zh: btw, which article is it? | 05:30 | |
Khisanth | he was here a week ago ... | ||
nothingmuch | if it's part of a package of sorts, then it's probably under the GPL/Artistic licenses, in which case you're allowed | ||
Qiang-zh | nothingmuch: this one . mungus.schwern.org/~schwern/papers/...r/why.html | 05:33 | |
knewt | nothingmuch: ta, got it and i | 05:34 | |
'm in | |||
Qiang-zh | translate it into chinese. we want to stop the java madness in china :D | ||
nothingmuch | knewt: great! | ||
Qiang-zh: good luck... I wonder if an article can get a billion people to dump java ;-) | 05:35 | ||
anyway, i'm off to work | |||
Qiang-zh | nothingmuch: have a good day :) | ||
nothingmuch | thanks | ||
see you all soon =) | |||
knewt | [[ svk push --verbatim ]] to push back correctly from svk? | 05:37 | |
eric256 | arg its flattening my lists. arg. | 05:38 | |
prompt ("Choose a weapon:", | |||
[ [ 1, "Sword"], | |||
[ 2, "Spell"] ]); | |||
is being treated like | |||
Choose a weapon: 1 Sword 2 Spell : | |||
i | 05:39 | ||
i've got multi sub prompt (Str $prompt) { and | |||
multi sub prompt (Str $prompt, @data) { | |||
but it doesn't like me ;( | |||
stupid meaningful space. nevermind | 05:46 | ||
knewt | ok, fingers crossed this works properly... | 05:47 | |
dammit. it's asking me about my local username, even though i've put the remote username in the url. i wonder what i have to do | 05:48 | ||
eric256 | svn? or svk? | 05:52 | |
knewt | svk | ||
i've never commited back to an http upstream before. only svn+ssh | 05:54 | ||
if i change the USER var for the call i wonder if it'll then cache the correct credentials for me | |||
gah. nope. still asking for a password for my local username | 05:57 | ||
eric256 | i don't know svk. with svn you just enter the user/pass on first commit and it remembers them from then on. svn++ | ||
perlbot karma svn | |||
perlbot | Karma for svn: 2 | ||
eric256 | lol | ||
perlbot karma eric256 | 05:58 | ||
perlbot | Karma for eric256: 12 | ||
eric256 | perlbot karma perlbot | ||
perlbot | Karma for perlbot: 4 | ||
eric256 | perlbot karma autrijus | ||
perlbot | Karma for autrijus: 328 | ||
eric256 | sorry had to play for a minute | ||
nothingmuch | morning | 06:10 | |
knewt | yaaaay, it worked. | 06:14 | |
svnbot6 | r3628, knew++ | * Added myself to AUTHORS | ||
r3629, knew++ | * Made backend selection case-insensitive | |||
r3629, knew++ | * And updated t/pugsrun/09-dash-uppercase-c.t to test it | |||
eric256 | night all | ||
knewt | just had to press through the first request for password with my local username, after which it prompted me for a username choice. which it's now cached | 06:15 | |
nothingmuch | knewt++ | 06:16 | |
huraah! | |||
anywho, C++ time for me | |||
see you all after they release me from the asylum i'll end up in | |||
knewt | heh. in a couple of days or so i think i'll go back to kernel-mode C for a little bit | 06:17 | |
nothingmuch | ah, kernels should be nice... too critical to be done incorrectly | ||
nothingmuch got a funky (adjective denotes smell, not cool level) project | |||
which no one really cared about | |||
knewt | debugging kernel drivers is certainly much nicer when you can boot up to the login prompt in about 5 seconds | 06:19 | |
svnbot6 | r3630, eric256++ | Added baddies and rooms to wizard.p6 | ||
knewt | perlbot karma knew | 06:20 | |
perlbot | Karma for knew: 3 | ||
knewt | perlbot karma knewt | ||
perlbot | Karma for knewt: 6 | ||
knewt | heh, cool. combined score of 9 already | ||
nothingmuch | ook, that's silly | 06:21 | |
this granola is soooo terrible | 06:22 | ||
knewt | irc is virtually the only thing i use knewt on, and even then i don't use it on efnet (although that's just because someone else already uses it) | ||
nothingmuch | so why don't you switch to 'knew'? | 06:23 | |
knewt | i use yet another id for shell accounts :) | ||
i actually started out using knew on irc, but changed over to knewt one day on a whim and decided to keep it | 06:24 | ||
nothingmuch | oh well =) | ||
knewt | and although i haven't got round to doing anything with it yet, i've got a domain name ingeknewity.net | 06:25 | |
with a newt as part of the logo | |||
nothingmuch | so change all your other logins to 'knewt' ;-) | 06:26 | |
knewt | well, knew is actually derived from my name. knewt is just a nice play on words | ||
nothingmuch | morning castaway | 06:38 | |
morning Aankhen`` | 06:39 | ||
Aankhen`` | Morning nothingmuch. :-) | ||
07:36
brentdax_ is now known as brentdax
|
|||
Aankhen`` | 103/5586 subtests failed | 08:02 | |
(Win32, MSVC++) | |||
meppl | guten morgen | 10:31 | |
nothingmuch | my brain hurts! waaah! | 11:52 | |
too much dynamic linking for my perlish background | |||
*sigh* | |||
nothingmuch needs a hug and a shot | 12:09 | ||
hola iblech | |||
iblech | hi :) | 12:21 | |
nothingmuch | gah! | 12:29 | |
Aankhen`` | Where is svnbot? | 12:30 | |
iblech | oh! | ||
I'm restarting it | |||
weird | |||
AtnNn | it netsplit | ||
Aankhen`` | Ah. | 12:31 | |
Mmm... how would you check if $foo is a reference? | 12:32 | ||
$foo.ref? | |||
(like Perl 5's `if (ref $foo eq "ARRAY")`) | |||
iblech | if $foo ~~ Array {...} | ||
Aankhen`` | OK. | ||
Thanks. | |||
wolverian | which does $foo.does(Array) behind the scenes | 12:53 | |
iblech | And this does $foo.meta.does(Array) behind the scenes | 12:56 | |
svnbot6 | r3634, Aankhen++ | * &CGI::header -- basic support for stringified cookies. | ||
r3634, Aankhen++ | * renamed the "cookie" parameter to "cookies" to better reflect the workings of the code. | |||
r3635, asavige++ | Added => ??:: precedence test to pairs.t | 13:08 | ||
r3636, iblech++ | Added ".." as a shell command which outputs the AST unformatted. | |||
r3637, iblech++ | FIRST { ...; undef } works now, too. | |||
r3638, iblech++ | Added a test testing that FIRST { ...; undef } blocks really run only once. | |||
Aankhen`` | Hey iblech, is there any chance you could get the tests in t/oo/submethods.t to pass? :-D | 13:15 | |
svnbot6 | r3639, adehohum++ | Tests: undef bugs, xx on lists, subrule captures | ||
iblech | Aankhen``: :) submethods are tricky... Currently I'm working on INIT {...} | 13:16 | |
Aankhen`` | Ah well, everyone has their priorities. ^_^ | 13:17 | |
Ooo, overloading fun! | 13:18 | ||
iblech | Ok, I got INIT {...} in void context working | 13:29 | |
Now my $x = INIT {...} | |||
Yeah, got it :) | 13:36 | ||
Writing tests for it and then checking in... | |||
Aankhen`` | Could someone run t/oo/class/basic.t and see how many tests fail? | ||
iblech | sure | 13:37 | |
4-8 fail | 13:38 | ||
Aankhen`` | Well, I un-eval'd a lot of them, and now only 4, 6 and 8 fail. | ||
iblech | ah! | 13:39 | |
Aankhen`` | Should I commit? Or is there a reason why eval_ok() was used instead? | ||
iblech | yes | ||
eval_ok('...') doesn't find the variables | |||
commit | |||
Aankhen`` | Indeed. | ||
OK. | |||
Inheritance doesn't seem to be working. | 13:40 | ||
And eval() seems to create a whole new lexical -- that's not the right word, but it's the closest I could think of :-) -- context which doesn't include any variables or classes or anything. | |||
iblech | The problem is: eval_ok(...) runs eval(...) in the scope of Test::eval_ok. If you write ok eval(...), the code is evaluated in the correct scope. | 13:42 | |
svnbot6 | r3640, adehohum++ | Tests: loop {} while | ||
r3641, Aankhen++ | * t/oo/class/basic.t: un-evaled a lot of tests. | |||
stevan | Aankhen``: I have stoped using eval_* in favor of a lives_ok {} and is($val_from_lives_ok_block) | 13:47 | |
Aankhen`` | OK. | ||
stevan | it tends to give better error messages | ||
it is longer to type though | |||
Aankhen`` | Heh. | ||
stevan | ok I am starting the changelog, this is gonna be a big one :) | ||
iblech | :) | 13:48 | |
stevan | and it's all your fault iblech ;) | ||
iblech | :D | ||
Aankhen`` | $karma iblech | 13:51 | |
Hrm. | |||
autrijus | greetings! | ||
Aankhen`` | perlbot karma iblech | 13:52 | |
iblech | hi :) | ||
Aankhen`` | Hi autrijus. :-) | ||
stevan | hey autrijus | ||
Aankhen`` | Oh, right, no perlbot. | ||
stevan | karma iblech | ||
knewt | 'lo autrijus | ||
stevan | hmmm, the bots must have left with the freenode upgrade | ||
svnbot6 | r3642, autrijus++ | * I'm sorry but BOM <feff> must be excised from AUTHORS ;-) | ||
r3643, autrijus++ | * s:globally// is now s:global// | |||
r3643, autrijus++ | * To interpolate @a, @a[] is now needed | |||
r3644, autrijus++ | * first step in making legible stack trace in error | |||
r3644, autrijus++ | messages -- VError now carries [Pos], not Exp | |||
r3645, Aankhen++ | * cleaned up t/operators/operator_overloading.t | |||
stevan | jabbot: you there? | ||
Aankhen`` | Not in the nicklist, at any rate. | 13:53 | |
stevan | ahh,..I didnt like that bot anyway :P | 13:54 | |
Aankhen`` | LMAO.\ | ||
stevan | autrijus: I am going to add revision numbers to the Changelog | 13:56 | |
autrijus | pugscode.org <Overview Journal Logs> | pugs.kwiki.org | 13:56 | |
autrijus | stevan: sure, if you think that reads better | 13:56 | |
a change may be done over several checkins tho | |||
stevan | no, sorry, I mean this "== Changes for 6.2.3 - May 12, 2005 - r3111 | 13:57 | |
autrijus | like (#1234, #1235, #1236) ? | ||
ahhh. | |||
that makes more sense :) sure | |||
== Changes for 6.2.3 (r3111) - May 12, 2005 | |||
stevan | makes my life easier too ;) | ||
autrijus | sure :) | ||
iblech | Gonna implement CHECK {...} | 13:59 | |
svnbot6 | r3646, iblech++ | * INIT {...} blocks in void context and as rvalues. :) | ||
r3646, iblech++ | * Added a test for them (t/statements/init.t). | |||
r3646, iblech++ | * Usual svn props added to t/rules/named_rule_capture.t. | |||
Aankhen`` | Does it make more sense to TODO all failing tests or leave them there for people to fix? | 14:00 | |
autrijus | Aankhen``: take a glance at them -- if they are regressions, let them fail | ||
if they are new tests and features, :todo<feature> them | |||
Aankhen`` | A'right. | 14:01 | |
clkao | hi autrijus | ||
autrijus | greetings clkao san | ||
did you submit your talk? | |||
clkao | no | ||
working on it | |||
can we get rusage in pugs? | |||
like times in perl5 | 14:02 | ||
knewt | clkao: backend selection is now case-insensitive | ||
clkao | knewt++ | 14:04 | |
autrijus: do you want to be cospeaker | 14:05 | ||
autrijus | clkao: sure, getProcessTimes can work | ||
not sure if System.Posix.Process.getProcessTimes is avail on win32 tho | 14:06 | ||
may need to Compat.hs it | |||
knewt: want to hack it in? :) | |||
knewt | clkao: svk threw me for a bit in wanting to use my local username to authenticate with, but i eventually figured out that just hitting enter would prompt it to ask for a username. and of course it's cached now so won't be an issue again | 14:07 | |
autrijus | clkao: I can cospeak it, sure | ||
knewt: it's a svnauth thing... svn does the same | |||
the prompt may be improved though | |||
knewt | lufthansa-- # when purchasing tickets online the credit card holder must be travelling | 14:08 | |
guess i'll try phoning them up tomorrow and see if ordering by phone is nicer | 14:09 | ||
clkao | autrijus: btw, does warn "foo" has to be that annoying telling me Error? | 14:11 | |
autrijus | clkao: it no longer. | ||
you are using ancient pugs | |||
iblech | "ancient" :) | 14:12 | |
clkao | right, 8 hrs ago = ancient | ||
autrijus | yeah | ||
it's 28.8k seconds ago! | |||
clkao | have you seen m$ office advertisement about dinosours? | ||
autrijus | no. what is that? | 14:13 | |
clkao | very stupid everywhere in tube station | 14:14 | |
autrijus | ah. I see it now. | ||
clkao | autrijus: www.microsoft.com/office/evolve/default.mspx | ||
autrijus | I already played thru it | 14:15 | |
I wonder if we should make an ad about radioactive-retroviral engineered mutant pugs | 14:16 | ||
svnbot6 | r3647, adehohum++ | Tests: instance methods calling other instance methods | 14:19 | |
knewt | i don't suppose there's a -commits list? | 14:22 | |
iblech | There is | ||
clkao | mugwump has one | ||
iblech | But I don't recall its address | 14:23 | |
rt.openfoundry.org/Foundry/Project/.../pugs/log/ is nice | |||
autrijus | knewt: mugwump's is lists.utsl.gen.nz/mailman/listinfo....gs-commits | 14:24 | |
knewt | autrijus: yeah, just found it thanks to the searchable irc logs :) | ||
autrijus | >1000 commits per month | ||
knewt | oh damn. just realised that since i don't have a static i'd have to pull the email down anyway. so i might as well just put together a cronjob that runs every 5 or 10 minutes and triggers a sync whenever a threshold of new commits is reached | 14:27 | |
autrijus | clkao: got some time? | 14:28 | |
clkao: I wonder if I can walk you thru in implementing times() ;) | |||
should take ~10min | 14:29 | ||
clkao | evil autrijus | 14:30 | |
ok let's start | |||
you have 10 min | |||
autrijus | cool | ||
so first, add the times() function to Prim. | |||
open src/Pugs/Prim.hs | |||
go to line 1175 | 14:31 | ||
copy that line | |||
change the return type from Num to List | |||
happy? | |||
clkao | ok | ||
autrijus | now, you want to return a 4-tuple | ||
loop up "time" | |||
clkao | btw times is not in s29 | ||
autrijus | right, so we need to ping that as well. | ||
anyway. add op0 "times" | 14:32 | ||
it ignores any input args | |||
so it's a const | |||
clkao | just below time is alright? | ||
autrijus | sure | ||
to return multiple values, use VList | |||
return $ VList [0,0,0,0] | |||
but that won't work, because 0 is not Val | |||
return $ VList [VNum 0, VNum 0, VNum 0, VNum 0] | |||
will do. | |||
now open another window and | 14:33 | ||
"make ghci" | |||
from pugs base path | |||
see if it compiles | |||
and type | |||
eval "times()" | |||
to see if it works | |||
if it does, commit it as phase 1. | |||
clkao | hate | ||
Shared object "libparrot.so" not found, required b | |||
autrijus | oh. do this | ||
perl Makefile.PL | |||
clkao reruns makefile | |||
autrijus | rm src/Pugs/Embed/Parrot.hs | ||
rm src/Pugs/Embed/Parrot.o | |||
and make ghci again | |||
i.e. do away with PUGS_EMBED | 14:34 | ||
clkao | i know. :) | ||
autrijus | now write a simple t/unspecced/times.t | ||
clkao | Prelude> eval "times()" | ||
<interactive>:1:0: Not in scope: `eval' | |||
autrijus | did you "make ghci" ? | ||
not "ghci" | |||
clkao | what? | ||
autrijus | type "make ghci" in cmd line | 14:35 | |
not "ghci" | |||
clkao | yes. | ||
oh it's because | |||
Could not find module `Pugs.Embed.Parrot': | |||
autrijus | you need to type "make" first then | ||
after it deals with Embed.Parrot you can "make ghci" again | |||
this whole embed parrot thing is hateful because parrot has no .so form | |||
blame (someone else, not me) | 14:36 | ||
clkao | ok.. slow slow slow | ||
autrijus | "make unoptimised" too | ||
when you wait for that | |||
you can write t/unspecced/times.t | |||
nothing fancy, just assign the result to a 4-elem my ($x, $y, $z, $w...) | |||
knewt | oh, while i think about it, autrijus++ # unoptimised as well as unoptimized | ||
autrijus | and test that they are sane or something | 14:37 | |
knewt: yeah, I've switched to the civilised form of spelling | |||
instead of the civilized form | |||
knewt | command-line completion of makefile targets is really nice for noticing things like that | 14:38 | |
autrijus | clkao: now, after both are done, implement the real thing by opening Compat.hs | ||
go to line 31ish, its export list | |||
add getProcessTimes | |||
knewt | me-- # pronouncing as zee-three rather than zed-three the other day | ||
autrijus | and goto line 122ish, add this stub: | 14:39 | |
getProcessTimes = failWith "times" | 14:40 | ||
we'll deal with win32 later. | |||
after that's done, type ":r" in the ghci prompt | |||
make sure it compiles, then commit it | |||
that's phase 2. | |||
stevan | wow this is a big changelog :) ... 50+ lines and I am only 3/4 of the way through the svn log | ||
lambdacamels++ | |||
autrijus | stevan++ # changelog | ||
clkao | sloooow | 14:41 | |
stevan | iblech++ # I have lost count of how many revisions are his | ||
autrijus | clkao: actually, come to think about it, we only need 4 of return value of the 5, so it's better to handle that in Compat.hs | 14:42 | |
see www.haskell.org/ghc/docs/latest/htm...ocessTimes | |||
stevan | oh, autrijus when you are done with this, I found another OO bug related to the nested use | ||
autrijus | clkao: but it's okay for a first cut... commit first | ||
clkao | both seems to work | ||
autrijus | as long as it compiles it's good to commit | 14:43 | |
ok, commit then :) | |||
make sure the test fails! | |||
jhorwitz | mornin | ||
autrijus | you can introduce a sleep 1 and make sure the time elapsed is >0, for example | ||
hm, but only system time, it sleep | |||
ah. you can introduce a small loop to force elapsed user time. | 14:44 | ||
so you can test for the first two. | |||
clkao | autrijus: the test doesn't fail | ||
autrijus | clkao: ok. commit anyway! | ||
clkao | ha i will make it fail | ||
svnbot6 | r3648, clkao++ | * Add the times() primitive. | ||
r3648, clkao++ | * Export getProcessTimes. | |||
autrijus | ok, you work on the test. I'll look at Compat | ||
heh, you added a semicolon | 14:46 | ||
return $ VList [VNum 0,VNum 0,VNum 0,VNum 0]; | |||
crazily, that is valid haskell. | |||
haskell++ # timtowtdi | |||
stevan | iblech: you should write a bot to add svn properties for you :) | 14:47 | |
clkao | bah. i was using ok ()... | ||
knewt | stevan: from the beginning of the repo, the top 5 are: 1408 autrijus / 421 iblech / 323 Stevan / 176 corion / 116 nothingmuch | ||
clkao | so it always okay'ed | ||
fuck the gap | |||
iblech | stevan: Yeah :) | ||
stevan | knewt: that looks about right | 14:48 | |
iblech | stevan: Ii might not be that difficult really -- the bot just has to fire two svn commands and has to search for files not ending in \n | 14:49 | |
s/Ii/It/ | |||
clkao | it has been almost 20 mins... where's my times() ? | ||
stevan | iblech: svnbot could fire that off for every commit | ||
knewt | stevan: and a total of 79 different committers | 14:50 | |
svnbot6 | r3649, clkao++ | More meaningful test for times(). | ||
autrijus | clkao: your times() is there | ||
r3650 | |||
stevan | knewt: I use this (which theorbtwo wrote) to check that info | ||
* `next` now re-evaluates condition in `loop` constructs; | |||
autrijus | but! it returns clock ticks | ||
stevan | damn wrong pastboard :P | ||
clkao | hte | ||
autrijus | anyone knows how to turn clock_t to seconds? | ||
clkao | it has child info too? | ||
stevan | svn log | grep '^r[0-9]'| cut -d'|' -f2 | sort | uniq -c | sort | ||
clkao | HZ iirc | ||
HZ | |||
/ HZ | 14:51 | ||
knewt | stevan: for me, svk log -n0 //pugs/trunk | perl -ne 'print "$1\n" if /^r\d+ \(orig r\d+\):\s+(\S+)/' | sort | uniq -c | sort -nr | ||
clkao | stupid client | ||
autrijus | 1000000 ? | ||
1000000 that is | |||
clkao | it hsould be a constant defined somewhere | ||
autrijus | ah, clocksPerSec | ||
jhorwitz | autrijus: CLOCKS_PER_SECOND in time.h | 14:52 | |
clkao | CLOCKS_PER_SECs | ||
autrijus | ok, done | 14:53 | |
committing | |||
clkao | yay test apssed | 14:56 | |
svnbot6 | r3650, autrijus++ | * turn processTimes into Val. | ||
autrijus | now write another test to make sure they are not out of proportion ;) | ||
i.e. should < 10 or something | |||
clkao | i am lazy | ||
stevan | wow,.. over 600 new tests have been added | ||
autrijus | do it now! :) | 14:57 | |
stevan | (perl6 rules tests I assume) | ||
autrijus is holding off commits until test is seen | |||
stevan | ouch | ||
clkao | aha | ||
stevan | withholding implementation for tests :P | ||
some tough-love from autrijus | |||
autrijus | stevan: I'm merely returning what I got from clkao in #svk | ||
stevan | :D | 14:58 | |
clkao | can't use cmp_ok .. '>' ? | 14:59 | |
iblech | No, but you can use ok ... > ..., ... | ||
stevan | clkao: you need to do &infix:[>] (if that works) | ||
autrijus | er | 15:00 | |
probably not. | |||
$ ./pugs -MTest -e 'cmp_ok(2,&infix:<<>,3)' | 15:01 | ||
this works | |||
svnbot6 | r3651, clkao++ | Test times for sensible increment. | ||
autrijus | not very readable | ||
$ ./pugs t/unspecced/times.t | |||
1..1 | |||
ok 1 - something changed in times() | |||
ok 2 - sensible time spent | |||
# Looks like you planned 1 tests, but ran 2 | |||
I'll fix this. | 15:02 | ||
clkao | gr. | ||
autrijus | cmp_ok(@end[0] - @start[0], &infix:Ā«<=Ā», 10, 'sensible time spent'); | ||
works | |||
clkao | does it report properly when failed? | ||
autrijus | I don't know, it should | 15:03 | |
clkao | it was getting got: undef, expectet: undef | ||
autrijus | it should probe for &code.name or something | ||
ah. then it's borked. not too worried though | |||
clkao | because cmp_ok doesn't give got and expected for proclaim | ||
autrijus | you can fix it if you want :) | ||
so it took 30 minutes... sorry for that ;) | 15:04 | ||
but you did get times(). | |||
clkao | $compare_func.name doesn't owrk ? | 15:05 | |
autrijus | looking | ||
implemented. committing | 15:06 | ||
svnbot6 | r3652, autrijus++ | * readjust times() return values by clocksPerSec, | ||
r3652, autrijus++ | which seems to be defined as 1M by POSIX. | |||
r3653, clkao++ | plan properly. | |||
r3654, autrijus++ | * use the real <= for testing | |||
autrijus | comt to think about it, I'll do .arity too | 15:07 | |
both done | 15:08 | ||
r3655, enjoy | |||
stevan | talk about moving target, 10 revisions have happened since i started the changelog ;) | 15:09 | |
autrijus | blame clkao and his Benchmark.pm ;) | ||
clkao | poor stevan | ||
autrijus | clkao: so you ready to commit Benchmark.pm for 6.2.4? | ||
stevan | clkao: its fun :) | ||
clkao | er, it depends | 15:11 | |
autrijus | you have ~24hrs. | ||
clkao | cmp_ok fixed | ||
autrijus | clkao++ | ||
clkao | things like: | ||
# Failed test (t/unspecced/times.t line 15, column 1-68) | |||
# Expected: '>= 10' | |||
# Got: '0.000069' | |||
autrijus | ooh pretty | ||
lol | 15:12 | ||
proclaim($test, $desc, $todo, $got, "{ $compare_func.name } $expected"); | |||
svnbot6 | r3655, autrijus++ | * &code.name, &code.arity | ||
r3656, clkao++ | Proper error failure when using cmp_ok. | |||
autrijus | I would've written | ||
clkao | why's that funny? | ||
autrijus | proclaim($test, $desc, $todo, $got, "$compare_func.name() $expected"); | ||
but that's bikesheding | |||
clkao | oh ok. i'm new to this bloody language | ||
autrijus | it's funny because the new interpolation thing seems to be confusing the hell out of everybody | ||
clkao | aha | ||
it was confused yesterday so i make use of it today | 15:13 | ||
iblech | autrijus: Is there a particular reason Main.doParse uses an emptyEnv and not tabulaRasa? | ||
stevan | autrijus: ChangeLog done, got a second to look at my nested "use" class issue? | 15:14 | |
autrijus | stevan: sure | ||
stevan | I already have tests :) | ||
t/oo/class/nested_use.t | |||
it fails to find the inherited methods | |||
autrijus | iblech: I don't quite recall a reason | ||
lookin' | 15:15 | ||
iblech | autrijus: Ok, I'll change it then, as it b0rks INIT and CHECK | ||
autrijus | please do | ||
iblech++ | |||
stevan: hrm, weird. seems like the opEval is not propagating Env up properly | |||
I'll attempt a fix... but shower first | 15:16 | ||
stevan | autrijus: ok thanks, I need to shower too and run some errands. I will check in later :) | ||
autrijus | =) | ||
stevan++ | |||
stevan | autrijus++ # cause I know he will fix it and commit from the shower :P | ||
autrijus | talk about subtle nudge :) | 15:17 | |
svnbot6 | r3657, Stevan++ | ChangeLog for 6.2.4 | ||
r3658, autrijus++ | * bikeshed patch to clkao++'s interpolation in Test.pm | |||
stevan | it is "thanks in advance" :) | 15:18 | |
autrijus | ok :) | ||
eric256 | Prim.hs fails to compile! ;( | 15:20 | |
Constructor `ProcessTimes' should have 4 arguments, but has been given 5 | 15:21 | ||
autrijus | oops | 15:22 | |
sorry. fixed, svn up | |||
eric256 | thanks. | ||
i just snuck an update in at the wrong time there? | |||
'svn up' sounds like a battle cry or something | 15:23 | ||
Corion | Hmmm. Does Perl6 have a LIST version of qx ? I want to do system(LIST) but capture the output without doing ugly trickery ... Hmmm - maybe I should Just do the ugly trickery ... | 15:24 | |
autrijus | I've always wanted that | 15:25 | |
Corion | autrijus: What is the Perl6 qx syntax anyway? :) | 15:26 | |
autrijus | q:x | 15:27 | |
iblech: r3660 has some style hints :) | |||
svnbot6 | r3659, autrijus++ | * oops, ProcessTimes stub was bad | ||
r3660, autrijus++ | * clean up iblech++'s FIRST block code. | |||
Corion | I think I'll simply create a second Perl6 file, which only runs the system(LIST), and "include" that file via q:x() then. | ||
autrijus | ooh hacky. | ||
Corion | resp. via system(STRING) :) | 15:28 | |
(because we don't have q:x yet, I think) | |||
autrijus | we don't yet. | ||
Corion | autrijus: I'm working on better tests for system(LIST), and it seems that Haskell is better there already than Perl5 (for Win32) | ||
autrijus | cool | ||
iblech | autrijus: Sure. BTW, style: Is there an easy way to foldl start_elem [elems] $ code? I.e. to place the code at the end of the list | 15:29 | |
autrijus | huh? | ||
iblech | I have: foldl (\a b -> ...) start_elem [elems] | ||
I want: xxx start_elem [elems] (\a b -> ...) | 15:30 | ||
Because the lambda may be long etc. | |||
autrijus | well... | ||
Corion | iblech: foldl do_fold start_elem [elems] where do_fold = ... | ||
autrijus | right. | ||
if you want it inline: | |||
(\f -> foldl f start_elem [elems]) $ \a b -> ... | |||
if you want to be very sick: | 15:31 | ||
flip (flip foldl start_elem) [elems] $ \a b -> ... | |||
iblech | Ah :) Thanks, that's it | ||
(Not the flip one :)) | |||
autrijus | whew :) | ||
clkao | can't use >>-<< ? but >>+<< works? | 15:39 | |
autrijus | clkao: you can hack Parser and Prim for one line each | 15:40 | |
to get >>-<< | |||
but the correct solution is to do what iblech did for [] metaoperators | |||
clkao | huh? | ||
* and / also works | 15:41 | ||
why doesn't - ? | |||
autrijus | clkao: Prim line 1314 | ||
clkao | ha | ||
autrijus | Parser line 889 | ||
commits welcome ;) | |||
clkao | i thought >> op << is something generic | ||
autrijus | yeah, just like [+] | ||
but only very recently iblech hacked in code for [...] | |||
I'm sure >>...<< will follow soon but it's not here yet | |||
clkao | cool | 15:42 | |
autrijus | eric256: is win32 happy now? | ||
clkao | i added >>-<, but it's not magically hooked to - ? | 15:43 | |
autrijus | hm? it should | 15:44 | |
commit for us to see? | |||
eric256 | yep thanks | ||
autrijus | cool, eric256++ | 15:45 | |
Corion: can you check if getProcessTimes is there or easily emulable on win32? | |||
if not, t/unspecced/times.t needs to be skipped entirely on win32 | |||
Corion | checking (but unlikely I think) | ||
Let's see what Perl5 does | |||
autrijus | nod. I'll bbiab | ||
Corion++ | 15:46 | ||
& | |||
Corion | Should be "easily" emulable as Perl5 knows it :) | ||
Ah. GetProcessTimes() in the Win32 API. | 15:47 | ||
GHC doesn't have it already? | |||
autrijus | look at the module help index | ||
clkao | autrijus: see hyper.t | ||
autrijus | on unix we have | ||
file:///usr/local/share/doc/ghc6/libraries/unix/System.Posix.Process.html#t%3AProcessTimes | |||
eric256 | well there ever be a .perl for objects that produces code that can actualy recreate the object? | 15:48 | |
autrijus | eric256: possible. not sure | ||
Corion | autrijus: If it's not already there, it should be easily written IMO | 15:49 | |
Corion syncs | |||
svnbot6 | r3661, clkao++ | Declare >>-<<. | ||
autrijus | Corion: would you do so? that will make Benchmark.pm happy on win32 | ||
Corion | autrijus: Eh - where does times() live yet? Or has it not been written yet? | 15:50 | |
Ah - my tree was out of date :) | |||
We should maybe propagate our Win32 enhancements upstream so the GHC folks have to worry about them instead of Pugs :) | 15:51 | ||
Corion sets out to (re)implement getProcessTimes from the Win32 API | 15:53 | ||
theorbtwo wonders who was talking about me. | 15:54 | ||
autrijus | Corion: when you have time, mail glasgow-haskell mailing list to tell them to take a look at Compat.hs :) | 15:55 | |
Corion | autrijus: Yeah ;) | 15:56 | |
Ewww. Win32 API GetProcessTimes() takes reference parameters :( | |||
So more buffer magic is needed ... | |||
autrijus | clkao: r3662, enjoy | 15:57 | |
jroc | join /pugs | 15:58 | |
autrijus | greetings jroc. | ||
jroc | hi! sorry 'bout the "join" noise | 15:59 | |
clkao happy | |||
iblech | Yay, CHECK {...} implemented, cleaning up and writing a test... | 16:00 | |
autrijus | iblech++ | ||
really bbiab :) & | 16:01 | ||
svnbot6 | r3662, autrijus++ | * >>-<< and ĆĀ»-ĆĀ«. | ||
clkao | when is 6.28.0 coming | ||
vcv- | hyperoperators work now?? | 16:06 | |
theorbtwo | Ah, read the log (more or less). | 16:07 | |
vcv- | sweet | ||
eric256 can't get into the grove working on his wizard.p6 project...anyone need some grunt work done anywhere? | |||
Aankhen`` | iblech++ | 16:08 | |
eric256 | guess i'll play prince of persian instead ;) | 16:11 | |
persia* | |||
vcv- | either Pugs.AST.Internals is really big, or my command window is frozen | 16:13 | |
iblech | It's really big :) | ||
vcv- | stilll.. it shouldnt take THAT long | 16:14 | |
ah it did | |||
knewt | hmm. did svnbot b0rk the utf8 in that last commit for anyone else, or is it just my config? | 16:15 | |
vcv- | its just you | 16:16 | |
iblech | kelan: svnbot, or more exactly "svn log" on the server svnbot runs on is b0rked | ||
err, sorry kelan | |||
svnbot6 | r3663, iblech++ | * CHECK {...} in void context and as a rvalue works. :) | 16:18 | |
r3663, iblech++ | * Added a test for CHECK (t/statements/check.t). | |||
r3663, iblech++ | * "." in interactive Pugs uses an prepared env now (tabulaRasa). | |||
r3663, iblech++ | * Usual svn properties. | |||
mrborisguy | can somebody help me with an operator... i'm thinking of the 'x' operator, but does it just work with strings now? what i want is @array = ("this") x 3, and @array.perl.say should be ("this","this","this"), but instead i get ("thisthisthis"). what operator should i be using? i couldn't find it in the synopsis. | 16:19 | |
vcv- | prepared env? | ||
mrborisguy: easy! | |||
Except I don't know :) | |||
pjcj | mrborisguy: xx I think | ||
mrborisguy | haha, yeah, i was thinking it's gotta be easy! | ||
iblech | mrborisguy: xx | ||
vcv- | yeah, thats the one | 16:20 | |
mrborisguy | yep | ||
thanks! | |||
vcv- | x is scalar context, xx is list :) | ||
iblech | vcv-: Previously, the "." command in interactive Pugs used an emptyEnv, i.e. an env with no variables in it | ||
vcv-: But that broke INIT and CHECK, as these push to the compiler array @?INIT and @?CHECK respectively | |||
vcv- | gotcha :) | 16:21 | |
iblech | vcv-: Now "." uses the standard preparedEnv too, which contains these vars | ||
vcv- | Awesome | 16:23 | |
Juerd | [~]++ | 16:24 | |
[~] @foo looks so much better than @foo.join('') | 16:25 | ||
iblech | Yeah | ||
Juerd | Take that, most other languages! | ||
masak | *lol* | 16:26 | |
clkao | i wonder which topioc to put svk under. linux or emerging.. i guess not perl, its so unpopular :P | ||
integral | do we have p6 SVN or SVK bindings yet? ;-) | 16:30 | |
clkao | integral: that depends on bridging parrot nci to native function | 16:31 | |
integral | hmm, maybe we need a Pugs/Perl6 NCI which can either use Parrot NCI or Haskell FFI | 16:32 | |
clkao | which will happen in 2 or 3 weeks maybe :) | ||
*nod* | |||
hcchien | 2 or 3 weeks for p6 SVK? | 16:33 | |
clkao | bridging parrot nci to native function | ||
Juerd | Perl 6 needs a 99.97% speedup :) | ||
iblech | Hmm... is >>[>>+<<]<< allowed? | ||
Or rather, [>>+<<]<< | 16:34 | ||
Juerd | iblech: No, [op] is prefix, not infix. | ||
iblech: That, should. | |||
iblech | Ok | ||
clkao | hyper operator makes Benchmark.pm so easy | 16:37 | |
Juerd | Why? | 16:39 | |
cognominal | hi, what is the meaning of @ in Haskell sources? | ||
vcv- | hyperoperators, metaoperators, and context operators make me giddy | ||
Juerd | (Perhaps this is a nice subject for a Perl Monks post, comparing 5 vs 6? Advocacy!) | ||
clkao | because it needs to subtract realtime, usertime, cputime, child usertime, child cpuytime | ||
which is stupidly hateful everywhere | 16:40 | ||
integral | cognominal: you use it in a pattern to both bind a var to the thing being matched, and to match things inside that | ||
Juerd | clkao: Do you have a code example, with its old counterpart? | ||
clkao | i will soon | ||
Juerd | Neat | ||
iblech | cognominal: @ allows you to, um, specify an argument in more detail. For example: name@('I':_) would match only if the name begins with 'I' | ||
integral | cognominal: eg. v@(VStr str), that binds v to the (VStr _) value, and binds str to the value boxed in the VStr | ||
Juerd | I love these practical examples | ||
clkao | anyway | 16:41 | |
for (my $i=0; $i < @$a; ++$i) { | |||
push(@r, $a->[$i] - $b->[$i]); | |||
} | |||
was like this | |||
so @a >>-<< @b. | |||
Juerd | Oh, that *is* nice. | 16:42 | |
cognominal | do you know where is the documentation for that feature? | ||
iblech | [Haskell] Is there a function like map, but of type (a -> [b]) -> [a] -> [b]? | ||
integral | iblech: concatMap | ||
iblech | integral: Thanks :) | ||
integral | iblech: or >>= in a monad | ||
flip >>= :: (a -> m b) -> m a -> m b | |||
vcv- | hyperoperators, metaoperators and context operators oh my! | 16:43 | |
Hm. I've seen :: used in different contextes. what is that context for, integral? | |||
integral | just declaring a type | ||
vcv- | oh thats haskell, oops | 16:44 | |
haskell still confuses me. im learning it very slowly :) | 16:45 | ||
svnbot6 | r3664, Juerd++ | add docs/quickref/reduction | 16:50 | |
vcv- | props to you guys for a painless build/install process for pugs on Win32 :) | 16:52 | |
Juerd | heh, [.] < Some::Class method method method > | ||
Some::Class.method.method.method | |||
iblech | Hm... I think this should rather call "Some::Class".method.method.method | 16:54 | |
Juerd | Same thing. | ||
iblech | To do want you want you've to write [.] Some::Class <method method method> | ||
Juerd | A string value can be used in a class's name's stead. | ||
This doesn't mean "".method is valid syntax for that | 16:55 | ||
But $foo.method is, isn't it? | |||
Hm, never realised. It no longer CAN. | |||
clkao | hyper uniary is too evil | ||
svnbot6 | r3665, Juerd++ | more reduction | ||
iblech | Really? How does the compiler know which method to call in the following example: "SomeClass".method or SomeClass.method | ||
Juerd | iblech: You're right. | 16:56 | |
iblech | (Class objects)++ | ||
Juerd | And if you love them individually: (Class objects)>>++ | 16:58 | |
:) | |||
mrborisguy | vcv-: did you get pugs to install on Win32? | 16:59 | |
vcv- | Yes | ||
iblech | Juerd: :) | ||
mrborisguy | I couldn't get it to work... what version? the latest released, or a snapshot of some sort? | ||
vcv- | latest. i just now updated through svn and rebuilt | ||
Corion | getProcessTimes for Win32 will be delayed - I don't know if I'll finish it today (that is, within the next 4 hours or so) ... | ||
mrborisguy | did you use nmake? | 17:00 | |
vcv- | What's that do Corion? maybe i can help | ||
ihb | is there any installation docs for pugs installation for Win32? i took a quick glance at pugscode.org and in the dist, but didn't find any. shall i go look again? | ||
vcv- | yes mrborisguy | ||
mrborisguy | huh... alright | ||
Juerd | Why are so many programmers using Win32? | ||
vcv- | i use vs.net2003 tools (cl and link), not the free toolkit though | ||
that may be why | |||
Juerd | I'd expect more sanity. | ||
Arathorn | is ^ still used as a prefix for hyperoperators? | ||
Juerd | Arathorn: No | ||
vcv- | Juerd: lets not get into this :) | ||
Corion | Juerd: Just because you don't know it, Win32 isn't hard/ugly | ||
vcv- | win32 is easier to program for, i would say | ||
Juerd | Arathorn: It's >>+, >>+<<, +<< | ||
Arathorn | it's ōæ½xBB and ōæ½xAB all the way now? | ||
cool | 17:01 | ||
Juerd | Corion: It's ugly and hard. | ||
Corion | vcv-: It's a simple wrapper around the Win32 GetProcessTimes() call. The tricky thing about it is that it needs some buffers and I am lazy/not in the mood at the moment | ||
Juerd: Bah | |||
Juerd | Corion: I know Windows all too well. I've used it longer in my life than I've used other OSes, and I still see the result of its stupidity almost daily, in my work as sysadmin. | ||
vcv- | Corion: ok, well would you mind if i took a stab? though you'd have to point me in the right direction in the pugs code. win32 api im good with though | ||
integral | MFC isn't easy either | ||
Corion | vcv-: In principle, it can be mostly cloned from the other stuff in src/Pugs/Compat.hs | ||
vcv- | hm.. | ||
Corion | vcv-: Not at all - I'm pointing you in the direction ;)) | ||
vcv- | Juerd: lets not get into OS wars, please. | ||
Juerd | vcv-: Why not? | 17:02 | |
vcv- | because its stupid | ||
ihb | Juerd: not all programming is OS-close. :-) | ||
Juerd | Why is it? | ||
Khisanth | speaking of hyperops are there shorten forms of them? Like $a = $a + $b can be $a += $b, is there >>+<< version of that? | ||
vcv- | ive been through it many times before. | ||
i get annoyed with people insult me for using windows | |||
Corion | vcv-: getEnv is an ugly hack that allocates a string buffer. Did you see how getProcessTimes() is implemented in Perl5 ? win32/win32.c | ||
integral | Khisanth: >>+=<< ? | ||
vcv- | no i did not, ill take a look | ||
Khisanth | integral: sorry I asked ... | 17:03 | |
that looks too horrible to be true! | |||
autrijus | hm, >>+=<< is probably always the same as >>+<<=, tight? | ||
Corion | vcv-: I plan on cloning the Perl5 implementation, basically - I'll nopaste what I currently have | ||
vcv- | ok, cool :) | ||
integral | Khisanth: you can slap the meta-operators on any appropiate op | ||
Arathorn | >>+<<= seems intuitive... | ||
autrijus | [+=] $a, $b, $c; | ||
Juerd | autrijus: I don't think >>+<<= is valid. | ||
autrijus | Juerd: yeah, I think so too | 17:04 | |
pasteling | "Corion" at 84.176.48.225 pasted "Implementation of getProcessTimes" (18 lines, 805B) at sial.org/pbot/10322 | ||
integral | that doesn't look right :-/ | ||
Juerd | Meta-ops play at different levels. | ||
First, = metas to +, then >><< to += | |||
vcv- | Juerd: just one thing i will say. for a contract i just finished, ihad to program for linux (debian). i hated it. its not even POSIX compliant, and its debugging tools are very poor. | ||
Khisanth | Arathorn: >>+=<< would be more intuitive if you consider += to be an operator | ||
autrijus | hm, that ends up as (($a += $b) += $c), which doesn't make much sense | ||
Juerd | vcv-: I see. | ||
integral | vcv-: hmm, which bit of POSIX did you find missing? | ||
Corion | vcv-: That declaration should import GetProcessTimes() as win32GetProcessTimes, and the call already is there as well, all that's missing is some call to mallocBytes(), some pointer arithmetic (incPtr, decPtr) and you're done | 17:05 | |
Arathorn is trying to work out whether there's a way to calculate a dot-product on two vectors with a single hyperop | |||
vcv- | integral: with pthreads | ||
integral | Arathorn: [+] (@a >>*<< @b) ? | ||
Corion | I'll be away for some time now, but mention any questions you have, I'll see them ;) | ||
Arathorn | or do you have to just sum(@a >>*<< @b) with a reduction? | ||
Juerd | vcv-: So would you say Win32 was any bit nearer to POSIX compliancy than Linux? | ||
integral | vcv-: ah. I never use threading :-) | ||
vcv- | k, thanks :) | ||
Arathorn | integral: ah, okay | ||
vcv- | Juerd: no, but at least it doesnt claim to be | ||
integral | Linux claims that it's been certified as POSIX compliant? 8-) | 17:06 | |
Juerd | vcv-: So in your world, is not-trying better than trying and fail? | ||
integral: No. | |||
vcv- | grr. why are you being so so persistant about it? i dont think there is anything wrong with people using linux, why should you care if others use windows? | ||
Juerd | vcv-: Well, I find it REALLY WEIRD that you let POSIX compliancy enter a discussion about linux vs win32, in windows's favour. | 17:07 | |
vcv- | not in windows favor at all | ||
that wasnt the point | |||
Juerd | Then I probably agree. | ||
But i'm much more interested in windows versus rest of the world | 17:08 | ||
vcv- | maybe its partly my fault, but when i was looking up information on pthreads, one site i found that had good info said it wa POSIX compliant | ||
Juerd | Rest of the world including mac osx. | ||
vcv- | so i went with that and wrote the code around that. then bam, i had issues, and turns out something involving child/parent threads wasnt posix compliant | ||
so i had to rewrite | |||
integral would blame that more on the web spreading wrong information again | 17:09 | ||
vcv- | BSD and OS X i admire. linux i do not | ||
right | |||
ubuntu is very nice though. i have that installed. but i still prefer windows as my desktop os. | |||
Juerd | Note that Linux is usually described as *mostly* POSIX compliant. | ||
vcv- | yeah. which is sort of stupid to me | 17:10 | |
Arathorn | hmm - is it a feature or a bug that the reduce op doesn't work on say( [+] (@a >>*<< @b) ~ "foo"); ? | ||
Juerd | vcv-: Gnome sucks. Kubuntu is nicer, imnsho. | ||
vcv- | juerd: i agree. havent tried kubuntu yet though | ||
Arathorn | (r3633) | ||
vcv- | is it updated in parallel to hoary? | ||
Juerd | Arathorn: That's [+] $one_thing | ||
vcv-: Yes. | 17:11 | ||
vcv-: In fact, kubuntu is a meta-package, available in hoary's repository. | |||
vcv-: apt-get install kubuntu | |||
That changes an existing ubuntu installation into kubuntu. | |||
vcv- | ah. | ||
ill try it. | |||
anyway, Juerd.. i do sort of understand why you're confused why people who like perl so much would also use Windows. linux is very similar to perl in a way. but personally, i want my os to just work and not have to dig into config files all the time, and compile stuff myself. you know? | |||
Juerd | Do note that to really get kubuntu, you have to install some extra packages manually (like kmail) and remove the originals (evolution) | ||
vcv-: Then Mac OS X and Kubuntu are great alternatives. | 17:12 | ||
stevan | autrijus: any progress on the nested "use" issue? no pressure, just checking :) | ||
Juerd | Apart from the fact that the former doesn't work on non-ppc | ||
Arathorn | ah - i see; the (@a >>*<< @b) gets autojoined in the scalar context for concatting with "foo" | ||
and then there's only one thing to add up | |||
cool | |||
vcv- | right. which is why i do use ubuntu | 17:13 | |
but im a windows programmer :) | |||
Arathorn | (how come it gets autojoined with spaces in between, though?) | ||
vcv- | and i still hate fonts on linux :) | ||
Juerd | Arathorn: Array stringification is like that. | ||
Arathorn | but @a=(1,2,3); say scalar(@a); # gives 123? | 17:14 | |
Juerd | It shouldn't | ||
Although perhaps say then returns an arrayref which it knows how to dereference. | |||
s/returns/gets/ | |||
Arathorn | and dereferencing doesn't get autojoined with whitespace? | ||
Juerd | Any dereferencing done is done by say() itself. | 17:15 | |
vcv- | Now Juerd, dont question why I use Windows ever again ;) | ||
Juerd | vcv-: Why the hell do you use Windows? | ||
vcv- | :p | ||
Juerd | That is, if for anything more than games. | ||
iblech | Arathorn: And say() doesn't autojoin with whitespace. If you want to have spaces, you say ~@array | ||
Arathorn | hang on, scalar() does still exist, right? | ||
Juerd | Or Windows-specific development. | ||
Arathorn | right | ||
Juerd | Arathorn: It should | 17:16 | |
Arathorn | ~ being unary string concat, or forcing a stringy context? | ||
Juerd | And say should not do anything with references except stringify and print. | ||
vcv- | lots of reasons, but i dont like having to justify why i use it to other people | ||
Juerd | scalar(@foo) is the same as \@foo | ||
vcv- | like i said.. fonts is a big one :) | ||
Juerd | Arathorn: Forcing stringy context. There is no unary string concat, except perhaps [~] | ||
vcv-: How, fonts? | 17:17 | ||
Arathorn nods | |||
okay - i need to go and revise my apocalypses, methinks ;) | |||
Juerd | vcv-: I have a shitload of truetype fonts loaded in Linux. It works very well. | ||
vcv- | Not as well as cleartype | ||
Juerd | Arathorn: Synopses. | ||
vcv-: Oh, I *hate* cleartype. | |||
vcv- | thats debatable i suppose, but cleartype looks MUCH better to my eyes | ||
Juerd | It makes otherwise beautiful fonts into ugly bundles of over-smoothness. | ||
vcv- | most people hate it because theyve never used the tweak tool | ||
Juerd | That can only improve it so much | 17:18 | |
Arathorn | i thought truetype font hinting was still buggered under X because of Apple's patents? | ||
Juerd | Not enough. | ||
vcv- | it is Arathorn | ||
BCI is nice, but still not enough | |||
Juerd | Arathorn: I have no idea, but I like freetype's anti aliasing much more than Windows's or Mac OS X's | ||
Arathorn | eye of the beerholder and all that, i guess :) | ||
vcv- | i like it the least | ||
Juerd | Especially Apple makes the fonts too smooth, anti-aliasing even straight lines (Why? Hate my eyes, or something?) | 17:19 | |
vcv- | whats it matter what os i use anyways. we're all here for perl, thats all that matters. the one true language | ||
Juerd | vcv-: Really? I'm here only to bash Windows and PHP | ||
vcv- | :/ | ||
i cant tell if you're being serious or not | |||
php i will bash with you though.. | 17:20 | ||
Juerd | A bigger problem is that I myself cannot tell either. | ||
vcv- | All I ask is that you dont bring it up anymore. | ||
Juerd | I can't promise you anything | ||
vcv- | well if you do when im in abad mood, i will rant and tear linux apart :p | 17:21 | |
Juerd | Oh, go right ahead. | ||
gaal | hi. anyone have any luck building parrot on msys? | ||
vcv- | but im not kidding..if you keep doing it, im just straight out ignoring you | ||
Juerd | Your ranting can't take down the numerous Linux based servers I admin, while my even looking at the enclosures can crash the few Windows ones. | 17:22 | |
Arathorn does the obligatory Jack Nicholson "why can't we all just get along" line from Mars Attacks | |||
vcv- | alright.. fine | ||
Arathorn | (nak nak nak) | ||
Juerd | :) | ||
vcv- | * Added Juerd!*@* to ignore list | ||
stevan wonders why Juerd is trolling today? | |||
Juerd | That's not fair. I read your ignoring thing after I typed that line :) | ||
vcv- shrugs. he was nice to me before | 17:23 | ||
Juerd | stevan: No more today than any other. | ||
vcv-: I'm still nice to you, just not to your platform of choice. | |||
stevan thinks maybe Juerd got a bad cup of "coffee" at the local Coffee shop | 17:24 | ||
vcv- | Sounds like it :/ | ||
Juerd deeply hates microsoft and windows. | |||
vcv- | Probably someone who hasnt used windows since the 9x series :) | ||
Juerd | stevan: I don't visit coffee shops. I don't like any of the stuff they sell, and I don't like the beverage they're named after either. | ||
stevan does too, but cares so little about it he doesn't care to discuss it | 17:25 | ||
Juerd | vcv-: I switched to Linux for my main platform after using Windows 2000 for a year. I've actively used Windows XP, and I very regularly use other people's Windows XP boxes. | ||
vcv- | oh well. maybe ill take him off in a few days and he'll be in abetter mood | 17:26 | |
Juerd | My mood is alright, thank you. | 17:27 | |
japhy | what do I need to download/compile to start testing perl 6? | 17:28 | |
pugs? parrot? what...? | |||
stevan | GHC | 17:29 | |
Pugs | |||
then probably parrot if you want Rules | |||
revdiablo | ghc 6.4 or higher | ||
Juerd | japhy: Well, first, svn or svk :) | ||
stevan | I think actually most of this is in README :) | ||
Juerd | japhy: As Pugs *releases* lag too far behind to be a good target for development. | ||
Arathorn | hm, I assume the hyper/reduction-metaops don't work with the parrot backend? | ||
stevan | yes, svn/svk does help | ||
japhy | what is svn/svk? | ||
vcv- | svn is very simple too. and it doesnt like as bad as cvs | ||
Juerd | japhy: Versioning tools. | 17:30 | |
vcv- | version control system | ||
stevan | japhy: a better CVS | ||
Juerd | japhy: Are you familiar with cvs? | ||
japhy | yeah, a bit. | ||
Juerd | japhy: It's much like that, but better. That's enough to know at this point :) | ||
stevan | svn is really easy, you will like it | ||
japhy | I'm not very concerned with that right now, though. I just want a snapshot that I can play around with. | ||
when I said "test", I meant "fool around with" | |||
Arathorn has an $P15 = $P16 >>*<< $P17 in his AST which surely cannot be valid parrot... | |||
stevan | japhy: best snapshot is from svn | ||
Juerd | japhy: Go to the pugs homepage, there's a "svn co" command line to copy and paste. | ||
japhy | my gf's not around for me to "test". | ||
vcv- | does perl5 still use cvs, or svn now? | ||
Juerd | japhy: That'll "check out" (download) the current version | 17:31 | |
stevan | japhy: here is a good svn book svnbook.red-bean.com/en/1.0/index.html | ||
Juerd | japhy: To upgrade your local copy, run "svn up" | ||
stevan | vcv-: I think perl is on svn now | ||
svnbot6 | r3666, iblech++ | Added [*], [//], [||], [,], and the usual svn properties to | ||
r3666, iblech++ | docs/quickref/reduction. | |||
r3667, Stevan++ | Perl::MetaModel - more work on the meta-meta-hierarchy document. I think I am starting to finally get this all into place (NOTE: its still pretty rough though) | |||
Juerd | japhy: And to commit changes back to the central repository, use "svn commit" (if you add new files, use "svn add filename") | ||
japhy: Don't worry about making mistakes. Everything is revertible. | 17:32 | ||
japhy | I wasn't going to be *changing* things | ||
I just want a copy of perl6 so I can try it out. get myself into the perl6 mindset. | 17:33 | ||
Juerd | Oh, you will. | ||
japhy | s/mind/operator/ | ||
Juerd | Because whenever you find a bug, you will be asked to write a very small test script :) | ||
japhy | heh | ||
Juerd | And explaining you how to use svn once is easier than copying and pasting your patches repeatedly | 17:34 | |
For you too, I add :) | |||
vcv- | for juerd, the man on ignore: 2os[Windows Server 2003 (5.2 - 3790)] 2uptime[66d 3h 52m 54s] | ||
Juerd | vcv-: Impressive. | ||
revdiablo | ooh, color and dick measuring in one message! | 17:35 | |
vcv- | heh :p | ||
sorry about the coloring | |||
japhy | ok. once I get used to perl 6, I'll get into that whole SVN thing. | ||
Juerd | vcv-: Does this mean you have neglected to install recommended critical security updates for over two months? Really? | ||
japhy: Okay | |||
japhy: Do you have GHC? You'll need a recent version (6.4 or later) | |||
japhy | GHC is Haskell, I'm assuming... | ||
Juerd | Yes | ||
jroc | Juerd: why 6.4 or later? | 17:36 | |
japhy | right-o. if I don't have it, I'll get it. | ||
Juerd | japhy: See pugs.kwiki.org/?Perl6Nomenclature | ||
revdiablo | pugs uses some features that only exist in ghc 6.4 and up | ||
Juerd | jroc: Because Pugs uses some of the new features. | ||
jroc: This project isn't aimed at production code, so there's absolutely no motivation to waste time keeping things backwards compatible :) | |||
jroc | Juerd: maybe this isn't the right place, but, examples of new features? | ||
Juerd | jroc: I have no idea, sorry. | 17:37 | |
jroc | Juerd: no worries... just curious | ||
Juerd | japhy: What platform do you use? | ||
autrijus | Juerd: | 17:38 | |
undef<< @foo; | |||
is that legal? | |||
i.e. undef is a prefix op, isn't it? | 17:39 | ||
Juerd | Yes, that should undef for @foo | ||
japhy | ok, I'm downloading GHC 6.4 now. | ||
17:39
bd__ is now known as bd_
|
|||
japhy | while I'm waiting... | 17:39 | |
Juerd | As should foo << @foo, given sub foo ($bar) { ... } | ||
japhy | does %hash{@keys} >>++ do what I think it does? | 17:40 | |
Juerd | As "unary named ops" and "functions" are generally indistuinguishable. | ||
autrijus | japhy: yes it should. | ||
Juerd | japhy: Depends on what you think it does, really. | ||
japhy | I expect it to act like: | ||
$hash{$_}++ for @keys; | |||
Juerd | Yes, that it does. | ||
japhy | awesome. | ||
Juerd | Except it's %hash{$_} in Perl 6 | ||
Sigils don't change anymore. | |||
autrijus | Juerd: what about listops? | 17:41 | |
Juerd | $hash{$_} is short for $hash.{$_}, which is what was $hash->{$_} in Perl 5. | ||
autrijus | do they get hyper form as well? | ||
Juerd | autrijus: I hope so, just for overall consistency. | ||
autrijus | say<< @blah; | ||
japhy | I was showing Perl 5 code. | ||
Juerd | japhy: Then disregard what I said. | ||
autrijus: The problem is having multiple arguments, of which you want only one hypered. | |||
autrijus | Juerd: what about listfix? | 17:42 | |
Juerd | autrijus: Damian has been fighting all syntaxes for that, but I haven't read good explanation yet. | ||
autrijus: What's listfix? | |||
vcv- | say << @blah; #<-- passes each item of @blah to say? | ||
Juerd | vcv-: One by one, yes. | ||
vcv-: It's like (say(@blah[0]), say(@blah[1]), ...) | 17:43 | ||
autrijus | Juerd: Y | ||
and chainops like eq | |||
Juerd | autrijus: I don't know how that can be useful, so I have no answer ready | ||
autrijus | >>eq<< | ||
Juerd | eq should definitely be hyperable | ||
autrijus | okie. | ||
Juerd | As should ~~ | 17:44 | |
vcv- | hm. i assume the answer is yes. | ||
japhy | at the risk of asking a FAQ... why Haskell? | ||
Juerd | japhy: Because it has the features. | ||
vcv- | japhy: good for parsing | ||
Juerd | japhy: And see what was possible in 100 days. | ||
japhy | easier than lex/yacc? | ||
japhy has never used Haskell | 17:45 | ||
Juerd | japhy: Oh, much. See Parser.hs | ||
Neither have I. Using pugs doesn't require understanding of Haskell, fortunately. | |||
autrijus | japhy: like, 1000 times easier than lex/yacc :) | ||
japhy | hmm, cool. | ||
juerd - Oh, I didn't think it did. | |||
juerd - I'm just saying, I know nothing about it | 17:46 | ||
vcv- | lex/yacc is nasty :) | ||
jroc | how does Haskell compare with Common Lisp w.r.t to doing pugs? | ||
autrijus | jroc: I havn't used common lisp, so I can't say anything about it | ||
Juerd | jroc: Superficially, it has a much nicer set of operators :) | ||
jroc | fair enough... I'm just trying to learn CL but perhaps I should switch to Haskell | 17:47 | |
Juerd | japhy: svn.perl.org/perl6/pugs/trunk/docs/...rview.html | ||
japhy: Answers these faqs | |||
autrijus | jroc: Haskell has this, more "research" feel about it. | ||
japhy | wow. I can understand Haskell. | ||
autrijus | japhy: I suspect your brain is lambda shaped. :) | 17:48 | |
japhy | I don't exactly know the syntax, but just looking at the "aboutHaskell.html" page at haskell.org, I know exactly what it's doing. | ||
Juerd doesn't understand how "apocryphos" is written with -n in English | |||
And how its plural "apocryphoi" got to be -a. | |||
japhy | English sucks. | ||
learn American. ;) | 17:49 | ||
its much easier, and the syntax is loser. | |||
jroc | blech American :o) | ||
Arathorn | crappy brits making greek nouns sound more like 3rd declension latin ones :) | ||
japhy | [sic] | ||
jroc | s/loser/looser/ | ||
japhy | jroc - [sic] | ||
Juerd | jroc: "[sic]" | ||
jroc | haha | ||
autrijus | iblech: I did >>...<<! in 20 minutes! :) | ||
japhy | note also the "its" which should be "it's" | ||
autrijus | iblech++ # did the hard part for me | 17:50 | |
iblech | autrijus++ :) | ||
Juerd | autrijus: Wow, hyper failure?! | ||
autrijus | Juerd: no, hyper metaoperator | ||
Juerd | Oh, for any op in ... :) | ||
I read yada :) | |||
Sweet. | |||
autrijus | ā op. >>op<< | ||
Juerd | autrijus: >>op and op<< too? | 17:51 | |
autrijus | Juerd: they are parsed, not yet executed | ||
you want those? :) | |||
vcv- | oi oi oi | ||
Juerd | autrijus: I have no special need for them | ||
svnbot6 | r3668, autrijus++ | * generalised hyper op handling landed. | 17:53 | |
vcv- | sheesh. why is it so difficult to find the perl5 source code | 17:54 | |
Juerd | vcv-: apt-get source perl | ||
autrijus | vcv-: huh? search.cpan.org/dist/perl/ | ||
gaal | search.cpan.org/~nwclark/perl-5.8.6/ | ||
Juerd | vcv-: Or search.cpan.org | ||
vcv-: Or perl.com | 17:55 | ||
vcv-: Or... oh, this is useless. You're ignoring me still. | |||
vcv- | thanks autrijus. google didnt give me that :) | ||
autrijus | :) | ||
*Main> eval "sub infix:<Z> { 3 }; (1..5) >>Z<< (1..5)" | 17:56 | ||
(3, 3, 3, 3, 3) | |||
Juerd | Wow, that's a wildly obfuscated way to write 3 xx 5 ;) | ||
autrijus | :D | ||
but the important thing is it works :) | 17:57 | ||
japhy | what was the file I was told to look at to see how much cleaner Haskell is? | ||
"easier than lex/yacc?" | |||
and then a file was mentioned... | |||
iblech | Parser.hs | 17:58 | |
Juerd | japhy: Parser.hs | ||
japhy | ok | ||
thanks | |||
Juerd waits for signs of utter amazement | |||
gaal | anyone know if jonathan's binary parrot was built with msys or with msvc? and is 0.1.2 new enough? | ||
japhy | AWWW. | ||
ghc-6.4: out of memory (requested 1048576 bytes) | |||
that's not cool. | |||
integral | make unoptimised :-) | ||
Juerd | Oh, yes, haskell is very memory hungry | ||
svnbot6 | r3669, autrijus++ | * hyperoperator for user-defined infix ops | ||
Juerd | japhy: How much memory does your box have? | ||
I'd advise 512 or more | 17:59 | ||
(Or make unoptimized) | |||
japhy | I don't know. I'm on perlmonk.org | ||
Juerd | japhy: In a shell, type free | ||
integral | ouch, I wouldn't advise using ghc on a shared system | ||
Juerd | japhy: It may be that more limits are imposed on users. | 18:00 | |
japhy | ah, ok. | ||
well, it was a nice try. | |||
Juerd | integral: I'm considering putting up a shell server for Perl 6 people | ||
integral knows his local admins would hunt him down with crossbows | |||
japhy | I'll find some other solution. | ||
integral | ooh, yes. Just needs ccache for haskell though | ||
Juerd | integral: It's very expensive though, so I have to think this over a couple of times | ||
japhy | ok, later folks. | 18:01 | |
thanks for the assistance. | |||
Juerd | I'm thinking maybe my business can sponsor it. | ||
Arathorn | gaal: it's built with MSVC iirc | 18:02 | |
vcv- | uh oh. msvc? watch out for juerd. | ||
autrijus | 0.1.2 is definitely not new enough | ||
there's a rar build somewhere. | |||
gaal | well, i'm sad to say that pugs essentially depends on msvc now on win32. :( | ||
vcv- | sucks | 18:03 | |
autrijus | wiki.kn.vutbr.cz/mj/attach/parrot/binary/ | ||
gaal: why? | |||
vcv- | would be nice if it compiled on the intel compiler | ||
gaal | autrijus, i've tried to build it with msys with three different snapshots, they all failed. | ||
it == parrot | |||
svnbot6 | r3670, autrijus++ | * mention the RAR binary build. | ||
autrijus | gaal: oh. then parrot depends on msvc, not pugs | 18:04 | |
you can grab a binary from the url above I think | |||
gaal | pugs doesn't harddepend on parrot yet.. | ||
but w/o rules... | |||
i'll try that, thanks! | |||
autrijus | =) | ||
gaal | do i want the without-icu or the other one? | ||
vcv- | without! | ||
autrijus | without | 18:05 | |
doesn't matter for now anyway | |||
gaal | it wants icuuc32.dll | 18:07 | |
autrijus | even the -without one? | 18:08 | |
gaal | yes. | ||
c'mon autrijus, port it to haskell, we know you it won't take a minute. :-p | 18:09 | ||
autrijus | ;) | 18:10 | |
you can download binary build of ICU ;) | |||
gaal | pointer? | ||
autrijus | icu.sf.net | 18:11 | |
gaal | oh, icu's that ibm unicode thing? | ||
no wonder it soudned familiar. | |||
i wonder, ibm | 18:12 | ||
's binaries are msvc, any chance of that working? | 18:13 | ||
autrijus | sure, it just wants the dll visible | ||
I'm surprised that -without-icu still wants icuuc. | |||
this is too painful | |||
gaal | yes. | 18:14 | |
if someone can tell me they tried coLinux and got it to work, i'll stop fighting msys :) | |||
svnbot6 | r3671, autrijus++ | * some more work for hyper prefix/postfix -- not there yet | ||
autrijus | what's coLinux? | 18:15 | |
# wiki.kn.vutbr.cz/mj/index.cgi?Build...th%20MinGW | |||
gaal | linux as a ring 0 process on windows. | ||
autrijus | # wiki.kn.vutbr.cz/mj/index.cgi?MS%20...20Download | ||
may be useful. | |||
gaal | yes, but needs tweaking to work with networking.. and still in early dev so i'm not sure it's worth it | 18:16 | |
did i just say ring 0 process? silly me :) | |||
yay, after tweaking PATH and stuff this works! autrijus++ | 18:18 | ||
autrijus | :D | 18:19 | |
svnbot6 | r3672, autrijus++ | * change address to the wiki page | ||
gaal | known? src/Pugs/Compat.hs:73:0: Warning: Definition but no type signature for `failWith' | 18:21 | |
(same for warnWith in the next line) | |||
why is that a warning, anyway? aren't type sigs always optional? | 18:22 | ||
autrijus | gaal: yeah, but somebody turned up the warning | 18:23 | |
gaal: add sig for it? | |||
gaal | sure. | ||
mrborisguy | i installed subversion on my computer. anybody mind telling me the simple way to get the latest pugs source using it? | 18:24 | |
or better... have a good reference | 18:25 | ||
revdiablo | mrborisguy: svn co svn.openfoundry.org/pugs | ||
gaal | also, pugs.kwiki.org/?FrequentlyAskedQuestions | ||
mrborisguy | revdiablo, gaal: thanks! | ||
svnbot6 | r3673, iblech++ | Unbreak eval_ok and make haddock. | 18:32 | |
autrijus | hm, I don't think I have tuits to finish op1HyperPrefix and op1HyperPostfix today | 18:38 | |
svnbot6 | r3674, gaal++ | Add type signatures to three functions, eliminating warnings. | ||
autrijus | iblech is certainly welcome to try though :) | ||
iblech | Maybe :) | ||
gaal | for pick.t: pugs.exe: src/Pugs/Parser.hs:44:8-39: Irrefutable pattern failed for pattern Pugs.AST.Internals.Val (Pugs.AST.Internals.VList sublist) | 18:40 | |
known? | |||
autrijus | gaal: iblech just fixed it | 18:41 | |
and I fixed it independently | |||
but iblech's is better and he checked it in first :) | |||
gaal | ah :) | ||
iblech | autrijus: Just curious, how did you fix it? | 18:42 | |
gaal | i'd been away for a while, i forgot you guys always accomplish six impossible things before breakfast | ||
irrefutable things, in this case. | |||
autrijus | iblech: slapping a Syn "*" to the Var. | ||
Syn "*" [Var "@?CHECK"] | |||
iblech | autrijus: ah, ok | ||
autrijus | "Impossible things should be easy, irrefutable things should be trivial" | ||
iblech: t/pugsrun/04-dash-ce.t | 18:43 | ||
pugs: *** Undeclared variable: "@?CHECK" at -e line 1, column 1 | |||
the -e form not handled? | |||
iblech | pugs -we 'say CHECK { say "In CHECK"; 42 }; BEGIN { say "In BEGIN" }' works here fine | 18:44 | |
Will investigate | |||
japhy | which document should I use as a base for Perl 6 rules? | 18:47 | |
apocolypse/exegesis, or some other source? | 18:48 | ||
gaal | S05? Damian's draft on captures posted recently on p6-l? | ||
japhy | I mean only so far as their syntax. how they look. | ||
gaal | Synopsis 5 | 18:49 | |
japhy | ok | ||
iblech | Fixed, I think, but I can't recompile ATM to check if it works as I've got a smoke running currently. Give me five minutes or so :) | ||
japhy | thanks, gaal. | 18:50 | |
gaal | sure | ||
iblech | pugs hang (hung?) at t/rules/named_rule_capture.t | 18:51 | |
gaal | iblech, golf.t is hanging for me too | 18:53 | |
Corion | Hmmm. Why is there withCWString() but not withAllocABytes() in Haskell ... Weird ... | ||
gaal | hey Corion :) | ||
Corion | Hi Gaal! | ||
iblech | gaal: Hm, golf.t ran fine (6/10 tests failed, though) | 18:54 | |
iblech guesses it's some kind of external vs. embedded Parrot | |||
iblech guesses it's some kind of external vs. embedded Parrot bug | |||
gaal | oh, my bad, i forgot the crappy windows terminal XOFFs when you mouse in it. | ||
btw, anyone look into the weird synchrinization issue for concurrent smoke while i was gone? | 18:57 | ||
iblech | Ok, -c bug fixed, committing | ||
weird synch issue? | |||
gaal | yes, on windows at least, when you'd -j 3 the smoke test, sometimes the last batch wouldn't be waited for | 18:58 | |
so the harness would end without gathering all the test results | |||
i *think* it may be a bizzarro cygwin issue, but i'nm not sure. | 18:59 | ||
svnbot6 | r3675, iblech++ | Unbreak -c. | ||
iblech | gaal: Never happened here (Linux 2.6) | 19:00 | |
gaal | iblech, i couldn't reproduce it on linux myself either. | ||
autrijus | I'm fixing named capture hanging | ||
gaal | btw, it didn't hang on my box, autrijus. | 19:01 | |
cygwin. | |||
iblech | Hangs here reproducible, external Parrot | 19:02 | |
gaal | pugs -V should say what parrot it has :) | 19:03 | |
i'll add that. | |||
mrborisguy | Will pugs always depend on parrot for rules? Or will that change sometime? | 19:06 | |
gaal | forum2.org/gaal/pugs/smoke-cygwin.html # r3674 | 19:07 | |
svnbot6 | r3676, iblech++ | Test fixes (mostly unEVALs). | ||
Corion | Yay. unEVALs++ | ||
mrborisguy: Pugs will one day move onto Parrot. | |||
So then, Pugs will depend on Parrot for everything. | |||
(I hope that by that time, Parrot has become a single K&R C file that bootstraps the rest) | 19:08 | ||
autrijus | So then, "in parrot mode", pugs will depend on parrot fe) | 19:09 | |
So then, "in parrot mode", pugs will depend on parrot for everything :) | |||
<- still had not ruled out direct Perl6->(Non-PIR) possibilities | |||
it needs to share as much as code as possible, of course | |||
btw, named rules should be ok now | 19:10 | ||
gaal | what's :t error "something" ? | ||
autrijus | gaal: forall a. a | 19:11 | |
or just: a | |||
gaal | thanks. | ||
autrijus | np :) | ||
shower, bbiab | 19:12 | ||
svnbot6 | r3677, autrijus++ | * unbreak named rules for external parrot | ||
r3678, gaal++ | Another stray missing signature added | |||
gaal | (i asked ghci, but the sig i got was so surprising i concluded it must have been the wrong error :) | 19:13 | |
iblech | autrijus: Yep, named_rule_capture.t works now (2/2 fails) | 19:16 | |
Juerd | THEY CLOSED THE 24/7 GROCERIES ROBOT MACHINE THINGY | 19:17 | |
The bastards! | |||
This must be part of some conspiracy against hackers. | 19:18 | ||
pasteling | "Corion" at 84.176.48.225 pasted "How do I make "res" visible to GHC?" (39 lines, 1.4K) at sial.org/pbot/10330 | 19:19 | |
Corion | Haskell Help Needed ;) | ||
gaal | where is res even declared? | 19:20 | |
Corion | gaal: Nowhere - I guess that's my problem ;) | ||
How do I declare a variable of a certain type? | |||
autrijus | you just use it. | ||
return $ ProcessTimes 0 user kernel 0 0 | |||
is the solution | |||
Corion | That's what I tried, but I either tried it wrong or ghc doesn't want it that way ... | ||
D'oh :) | |||
autrijus: You make it seem so easy :) | |||
autrijus | because it is :) | 19:21 | |
mrborisguy | haha | ||
autrijus | (it's the learning part that's difficult) | ||
Corion | I was stuck in the perlish way of hash handling instead of looking at the type as a list | ||
autrijus: :)) | |||
gaal | hmmm, but that raises a question, can't i do that with named params? | ||
autrijus | hm? | ||
return $ ProcessTimes | |||
{ elapsedTime = 0 | |||
, userTime = user | |||
... | |||
} | |||
Corion | I think one could do that somehow with named params, but I failed doing that ... | ||
autrijus | er, misindent | ||
Corion | Ah - like autrijus shows :)) | 19:22 | |
autrijus | but sure, you can do that too | ||
you don't even need the $, I think | |||
Corion | Ah - the golfer strikes again ;) | ||
autrijus | lol | ||
gaal | heh | ||
Corion | Oooo. It Compiles Therefore It Must Be True! | 19:33 | |
gaal | latest smoke up at forum2.org/gaal/pugs/smoke-cygwin.html . good night! | 19:36 | |
svnbot6 | r3679, iblech++ | util/livecd/splashscreen.txt -- Typo fixes | ||
gaal | drats, "latest" does reamain true long around here :) | ||
Corion | gaal: I'm about to commit another patch ;) | 19:38 | |
gaal | :) i'm off though. see 'ya! & | ||
Corion | vcv-: You there? I just committed a version of getProcessTimes() | 19:39 | |
svnbot6 | r3680, corion++ | getProcessTimes() implemented on Win32 | 19:42 | |
iblech | gaal: FYI, the design of that smoke is borked (things aren't aligned left) | 19:43 | |
Corion | iblech: It's for me too, but simply changing the (generated) link to the old CSS fixes it all for me. It's a manual step tho' | 19:44 | |
Eh - no, that design looks much better than what brokenness happens in my smokes... | 19:45 | ||
(I'm not sure if I don't cause that brokenness myself though) | |||
iblech | I think it's because of the XHTML DTD, which doesn't allow inlined stylesheets or so. I remember having read something about this problem | 19:47 | |
Corion | iblech: Aaah - that could be a good explanation | ||
gaal | the design is borked? tell that to the maintainer of HTMLMatrix! Oh crap, that'd be me. :) | 20:02 | |
good thing i'm not really here. | 20:03 | ||
iblech | :) | ||
Corion | Whooops. Perl5.t is an infinite loop I guess ... | ||
... it's running quite a while already ... | |||
gaal | anyway, what browser, Corion? | ||
Corion | gaal: FireFox | 20:04 | |
gaal | works great for me on ff1.04/win | ||
Corion | gaal: Your version worksforme too, I was too hasty | ||
gaal: My version is broken for me | |||
gaal | ahhh | ||
k | |||
iblech | gaal: Your's is borken on FF 1.03 | ||
Corion | See datenzoo.de/pugs/win2k.html - the external link gets generated wrongly, and the inline CSS doesn't seem to catch | 20:05 | |
gaal | one day i should see why the build_info sucks when created on windows (\r\n) | ||
Corion | FF1.04/win32 here | ||
gaal: Cygwin problem I guess. Or YAML problem. But \r\n is the One True Linefeed Style :) | |||
Juerd | No, it's the one true Carriage Return AND Line Feed style. | 20:06 | |
Line Feed is LF is chr 10 | |||
gaal | Corion, what link do you see broken? | ||
Juerd | And \r\n is dangerous, as \n itself can be CRLF, \r\n resulting in CRCRLF | ||
gaal | looks good to me using your html | ||
Juerd | s/can be/can be written back as/ | ||
Corion | gaal: The link to the CSS file is some absolute file:// link on my Win32 machine ;) | ||
gaal | Juerd, can we fight about endianity instead? it's much more important. | 20:07 | |
iblech | Corion: perl5.t did not hang here, but did took long to execute | ||
Corion | Looks all warped to me, unless I fix the link to the CSS to be nonbroken. iblech could be right about this one, and maybe it only happens with FF. | ||
iblech: It took 1min CPU time, so maybe I was just impatient. I should take those V14gr4 that the email always tells me about. | 20:08 | ||
gaal | i'm using ff and don't see breakage anywhere :( | ||
Corion | They help against impatience I heard. | ||
Juerd | gaal: Fine with me. | ||
Corion | Maybe they introduced that with 1.04 ... | ||
iblech | Corion: lol :) | ||
Juerd | gaal: But first we have to establish that the correct word is endianness ;) | 20:09 | |
nothingmuch | brrr | 20:10 | |
what a wonderful feeling | |||
good food | |||
gaal | actually no, let's not fight. i'm off to bed. hi nm btw, and bye! | ||
iblech | Prefix hyper ops implemented :) | ||
nothingmuch | ciao! | ||
Juerd is enjoying the wonderful feeling of autodrop pittigzoete sneker zoethoudertjes. | 20:11 | ||
nothingmuch | fair amounts of alcohol, enough to still make sense out of speech | ||
iblech++ | |||
Corion | $^iblech++ | ||
nothingmuch | Juerd: what's that? | ||
webmind | hmmm autodrop | ||
het zou verboden moeten worden | |||
Juerd | Good night, gaal | ||
webmind | :) | ||
Juerd | nothingmuch: A kind of drop | ||
nothingmuch: And drop is a kind of dutch candy | |||
webmind | licorish | 20:12 | |
or something | |||
Juerd | licorice | ||
webmind | yes :) | ||
Juerd | And no, it's not what most people think of when they hear that word. | ||
webmind | although you have combinations | ||
Juerd | licorice is zoethout, webmind | 20:13 | |
Now, obviously sneker zouthoudertjes have everything to do with that | |||
But drop in general much less so. | |||
s/zouthoudertjes/zoethoudertjes/ | 20:14 | ||
webmind | Juerd, ik dacht drop ? | ||
Juerd | nee, drop in deze vorm bestaat nauwelijks in engelse landen | ||
webmind | hmm | 20:15 | |
staat mij iets anders van bij | |||
mgoe | |||
Corion | Ooooo. I even got one unexpected success by implementing times() :) | 20:16 | |
iblech | :) | 20:17 | |
webmind | 2: a black candy flavored with the dried root of the licorice | ||
plant [syn: {licorice}] | |||
Juerd | Yes, it's used for that, but it's inaccurate. | ||
It's an important ingredient, not the thing itself. | 20:18 | ||
Drop is sometimes called black licorice candy | |||
svnbot6 | r3681, iblech++ | Prefix hyper ops implemented. | ||
r3681, iblech++ | But some don't seem to parse yet (++<< for example), and &::("prefix:+<<") | |||
r3681, iblech++ | doesn't work yet, either. | |||
Juerd | But most foreigners will only recognise that as those awful sweet things, while our typical salt candy isn't found there. | 20:19 | |
Corion | Aaah. I think I'm stupid. I think I know why perl5.t took so long - I was running the unoptimized version! | ||
webmind | Juerd, wikipedia seems to also have a good english article on it? en.wikipedia.org/wiki/Liquorice | ||
hmk | |||
Juerd | Think of the black parts of engelse drop. | ||
That's what they think of. It has a very different taste. | |||
(It's rather tasteless) | |||
That's why I don't translate drop. | 20:20 | ||
webmind | Juerd, hmm in scandinavia they have something with Liquorice in it.. sweet varient.. but still similar to the dutch stuff | ||
chocolate covered drop | |||
Juerd | yuch | ||
That's like mixing religions :) | |||
webmind | no.. it's good.. just ask tuxje :) | 20:21 | |
Juerd, i know.. but it strangly tastes good | |||
Juerd | I guess it must be overwhelmingly good. It's a combination of two of the world's greatest candies. | ||
webmind | well it could be.. if it wasn't that the chocolate is really bad | ||
Juerd | aw | ||
Hm | |||
webmind | I don't think it could be sold as chocolate here anyway | 20:22 | |
Juerd | Let's melt some ourselves. | ||
webmind | hmm | ||
could try yes | |||
Juerd | And try and recreate it, but with some sense of perfection added. | ||
webmind | especially since I don't have any housemates left to complain about cooking experiments in the kitchen :) | ||
Juerd | Grin. | ||
At least they weren't cafeine experiments anymore :) | 20:23 | ||
webmind | no.. but I have a -very- evil one in the planning | ||
thanks for reminding me btw.. I completely forgot.. | |||
Juerd | Like your famous asphalt/tar... thing. | ||
svnbot6 | r3682, corion++ | Promoted a :todo test for times() | ||
r3683, iblech++ | Correctly parse +ĆĀ« (one char patch! :)). | |||
webmind | busy weekend :) | ||
Juerd, ah.. yes :) | 20:24 | ||
Juerd, did you ever taste it? | |||
iblech | [1,2,3]>>... should yield [1..., 2..., 3...], right? | ||
Juerd | webmind: No, I have death planned in 2038 | ||
And not before then. | |||
iblech: I think not. | 20:25 | ||
webmind | 2038? is that defined by a site? or is there something special? | ||
Juerd | iblech: It ought to work with lists, not references to arrays, I think. | ||
iblech | Juerd: Ok, but when tr/[]/()/ it will work, right? | ||
Juerd | iblech: Because otherwise you *can't* apply something to a list of references | ||
iblech: I think so. | |||
iblech | Ok | ||
Juerd | webmind: I usually don't write sites about the visionary future. | 20:26 | |
webmind | Juerd, good plan... | 20:27 | |
ingy | seen schwern | ||
webmind noticed the future tents to change anyway | |||
tends? | |||
Juerd | tends. | ||
It has nothing to do with camping. | |||
webmind | well I can see myself camping in the future.. ;) | 20:28 | |
nothingmuch | mmmm... camping | ||
my friends are so spineless. over the last 5 years i've tried so many times, never got them to go once. | 20:29 | ||
at least my family has character =) | |||
webmind camped out last weekend... didn't bring anything to lay on... | 20:30 | ||
it was -cold- | |||
and not smart enough to take the ladies offer to share a tent :) | |||
nothingmuch | hah | 20:31 | |
the american south west was a hell of an experience in that respect | |||
we spent a night in arches national camp | |||
hot, dry desert, | |||
almost overwhelming | |||
and then we drove an hour and a half into colorado | |||
it was around 35Ā° F at night | 20:32 | ||
webmind | how much Ā°C is that ? | ||
nothingmuch | just over 0 | ||
webmind | ouch | ||
well here it's still early.. and it rained aswell | |||
so -cold- floor | |||
and only had a crappy sleepingbag and a decent tent | |||
nothingmuch | actually i was converting C to F for the sake of universality, on the assumption that most people here are american | ||
webmind | hell of a lot of fun though... just -cold- | ||
nothingmuch | actually, that's a pretty dumb assumption looking at the AUTHORS file | 20:33 | |
webmind | Ā°C is more universal then Ā°F | ||
Juerd | qpsmtpd++ | ||
Corion | nothingmuch: I guess there aren't that many americans :) | ||
(here, I mean) | |||
nothingmuch | webmind: the interesting part was that it was the middle of july | ||
webmind | nothingmuch, ah.. ok | ||
nothingmuch | webmind: yep, C *is* more universal... but with english being the common tounge here, i tend to make too much of an effort | ||
Juerd | nothingmuch: Let the people who choose to use weird standards be the ones converting ;) | ||
svnbot6 | r3684, iblech++ | Postfix hyper ops. | ||
nothingmuch | Juerd: words I can live by. Let it be metric from now on then =) | 20:34 | |
webmind | indeed | ||
Juerd | nothingmuch: megagood. | ||
nothingmuch tries to write up a bit more of PA02 | |||
webmind | metric all the way | ||
osfameron_ | metric++ | 20:35 | |
webmind | all these feet, inches and yards don't make any sense | ||
nothingmuch | the only grudge I have with the metric system is dad's fault | ||
Juerd | Yeah, what the hell is a "foot" if they don't specify the shoe size? :)) | ||
webmind | hm? | ||
Juerd, heh | |||
nothingmuch | but then he said that 12 actually makes much more sense | 20:36 | |
Juerd | And when someone mentions a number of gallons, then which of the many kind of gallons are they referring to? | ||
webmind | Juerd, or yard.. if they don't specify the neighbourhood | ||
nothingmuch | when I was 8 or so i asked him why the decimal system is in place | ||
he told me about fingers and all | |||
it's divisable by 1, 2, 3, 4, 6, goes well with 8, 9 | |||
so on the whole it should have been easier to grok | |||
Juerd | Well, the metric system works because we use the decimal system. | ||
If we were used to a duodecimal (base 12) system for numbers, then some imperial units would make more sense | 20:37 | ||
nothingmuch | Juerd: btw, interestingly the "foot" in biblical hebrew is sort of equivelent to an "ama", or the part of the arm between the elbow and the wrist | ||
that's much more consistent | |||
Juerd | Of a child? David? Goliath? | ||
nothingmuch | especially with people counting lengths of fabric or string | ||
webmind | Juerd, only a few | ||
nothingmuch | Juerd: Most average adults are roughly the same | 20:38 | |
around a foot ;-) | |||
webmind | Juerd, I see little consistency in imperial units | ||
Juerd | nothingmuch: For units, precision is preferred. And that asks for precise definition, where "most" can't have any place. | ||
vcv- | Taking a break from outside. im too told for running around all day | ||
svnbot6 | r3685, autrijus++ | * prettify VError when propagating up. | ||
Juerd | nothingmuch: I agree that in ancient times, body based units were perhaps more useful | 20:39 | |
nothingmuch | Juerd: well, in biblical times I guess percision was not very practical | ||
webmind is going to get his tired head away from his laptop and fry some random contents of his fridge... cya | |||
Juerd | nothingmuch: It is now, though. | ||
webmind: Have fun frying ice cream! | |||
nothingmuch | Juerd: don't worry, I don't count rope lenghts with my arm | ||
Juerd | Do you ever measure rope? | ||
nothingmuch | nope =) | ||
Juerd | I measure UTP quite often. But never rope. | 20:40 | |
nothingmuch | define: UTP | ||
Juerd | unshielded twisted pair. | ||
nothingmuch | ah | ||
Juerd | The nowadays standard ethernet cable. | ||
nothingmuch calls it cat-5 | |||
Juerd | The thing you terminate with RJ45 connectors | ||
I would, but it's cat 5*e* | |||
webmind | Juerd, how do you know I have icecream in my fridge? | ||
Juerd | And cat 5 can be STP or FTP as well. | 20:41 | |
nothingmuch | yep, yep | ||
Juerd | webmind: I know where your house lives. | ||
nothingmuch | what's FTP? | ||
Juerd | nothingmuch: Foiled | ||
nothingmuch | isn't that the std? | ||
Juerd | No | ||
webmind | Juerd, hmm you could have eaten it aswell.. I have little trust in cherry/chocote icecream | ||
Juerd | UTP is just plastic. | ||
webmind | but now gone | ||
Juerd | No metal, except for the copper conductor | ||
nothingmuch | most cables I cut had a foil, some nylon, a nlon thread, some grounding wire, and the 4 pairs | 20:42 | |
Juerd | nothingmuch: That's not UTP then :) | ||
nothingmuch | i guess that's why I call it cat-5 =) | ||
Juerd | UTP is much cheaper, and in most cases sufficient. | ||
nothingmuch | Beer Sheva is technologically deprived | ||
and this stuff was the cheapest I found | |||
Juerd | For simple 100base-tx use, cat5e utp is already overkill. | 20:43 | |
nothingmuch: What did it cost per meter? | |||
nothingmuch | i don't recall | ||
integral found the hard way that getting the twists right is the difference between GigE working and not | |||
Juerd pays around EUR 40 per 305 meters (1000 ft... sigh...) | |||
nothingmuch | probably about 20-30 euro cents | ||
Juerd | My cable costs 13 cents :) | 20:44 | |
nothingmuch | 305 meters? what do you network? | ||
Juerd | nothingmuch: Almost everything. | ||
webmind | Juerd, imported from the empire / | ||
Juerd | webmind? | ||
webmind | Juerd, imperial? | ||
Juerd | nothingmuch: It can be quite practical at lan parties and the like as well. | 20:45 | |
nothingmuch | Juerd: don | ||
't have many of those | |||
Juerd | I have a box of UTP in my car, standard. | ||
nothingmuch | only at work, and we have a pretty good infrastructure | ||
oh my | |||
Juerd | Many small companies don't have good infrastructure, and are housed in old buildings | ||
nothingmuch | i just networked my house, and that's it | 20:46 | |
Juerd | That's where simpler cabling is nice to have. | ||
Oh, I networked house and office too | |||
In fact, there are 7 ethernet connections spare that don't get used | 20:47 | ||
webmind networked without cable | |||
much easier | |||
Juerd | In my office that is | ||
webmind | well | ||
at home | |||
Juerd | Just because cable is cheap and opening up the ceiling is a lot of work, and messy too | ||
Ooh | 20:48 | ||
Yesterday was a profitable day, advertisement-income-wise | |||
$27 :) | 20:49 | ||
That's exceptional. | |||
nothingmuch | What's your line of work? | ||
Juerd | Computers in the broadest sence | ||
sense even | |||
nothingmuch | so basically contract jobs for whoever pays you to do _? | ||
Juerd | Yes | ||
I was originally going to create wonderful business software | 20:50 | ||
But then RSI came, fucking up those plans | |||
nothingmuch | hehe | ||
Juerd | Now I take all work I can get and handle. | ||
:( | |||
stevan | autrijus: ping? | ||
nothingmuch | I realized that software must be maintained | 20:51 | |
for me it was much more pathetic, the realization that wasn't going to work out | |||
Juerd | Of which I think I only really enjoy building and configuring servers | ||
nothingmuch | sorry about the 'hehe', came before the 'RSI' comment. Didn't plan to sound like an arse | ||
Juerd | I guessed that | ||
nothingmuch | my work is actually pretty fun, on the whole. Lots of variation | 20:52 | |
Juerd | I'm stupid in my sysadmin work, though. I like doing it, but I use Debian, so the boxes need very little maintenance. | ||
nothingmuch | "hey, do you think you could do this and that?" | ||
Juerd | Oh, I get variation alright. | ||
autrijus | stevan: pong -- sorry I got distracted | ||
Juerd | One day I can be ridding a Win32 network of viruses, another trying to figure out a solution to spam floods, and the day after that I'm selling hardware. | 20:53 | |
stevan | autrijus: thats okay | ||
Juerd | I wish there was more demand for Perl here. I'd love to teach. | ||
It's something I could do without using my hands, and it is much closer to my original plans. | |||
stevan | autrijus: hyperops and such are much cooler :) | ||
autrijus | exactly. | ||
mugwump | moinmoin | 20:54 | |
autrijus | I just implemented ??? !!! ... | ||
stevan | hola mugwump | ||
pjcj | do we have a !!!1!l!one operator? | 20:55 | |
Juerd | pjcj: That's just too many arguments for !!!. | ||
pjcj: it takes none. | |||
nothingmuch goes back to formulating a PA02 sentance | 20:57 | ||
Juerd | What is PA? | ||
A8n? | 20:58 | ||
(Just TRY and convince people that the plural for A8n is A7a :)) | 20:59 | ||
mugwump | pugs architecture? | ||
Aankhen`` goes to sleep. | |||
G'night. | |||
osfameron_ | apocryphon iirc | ||
Juerd | Good night, aankhenbacktickbacktick | ||
mugwump notes that a8n could also be admonition, apparition or aspiration | 21:01 | ||
Juerd | Thanks for that insight. | ||
mugwump | np | ||
nothingmuch | Juerd: docs/02Internals.pod | 21:03 | |
Juerd | So, yes, apocryphon. | ||
Line 32 is 81 characters | 21:04 | ||
nothingmuch | fixed | ||
Juerd | =pod and =cut are entirely redundant | ||
nothingmuch | They are just a habit, I think | 21:05 | |
Juerd | =pod is always redundant before =anything, and =cut makes no sense in a .pod file | ||
nothingmuch | removed | ||
Juerd | Doesn't svn have a means of tagging the file with the latest revision? | ||
autrijus | yes, $Id$ | 21:06 | |
I don't really use that though. | |||
Juerd | I was thinking it could save a lot of work eventually for the "this document was last updated..." lines | 21:07 | |
nothingmuch | $Id$ is noise... =( | ||
autrijus | Juerd: grammar fixes. | ||
Juerd | Are revisions as well :) | ||
nothingmuch | Juerd: I disagree... Someone might fix a typo, or change slightly, but it could remain out of date | ||
autrijus | and will confuse people :) | ||
Juerd | Okay. | ||
nothingmuch | I think that comment will go away soon, too | 21:08 | |
soon = when pugs is 2-3 times as old as it is now ;-) | |||
Juerd | That's like, long time away. | ||
nothingmuch | Only relatively =) | 21:09 | |
Juerd wonders if summer holidays will increase of decrease pugs development | |||
autrijus | increase, I think. | ||
svnbot6 | r3686, autrijus++ | * ??? !!! ... | ||
r3686, autrijus++ | * `fail_` should be fine outside subroutine too | |||
r3687, autrijus++ | * minor cleanup to ChangeLog | |||
ihb | Juerd: yeah, that could be interesting. | ||
autrijus | but honestly I can't see anything decreasing pugs development in the coming months :) | 21:10 | |
other than, say, me hitting by a bus | |||
(but even that will only decrease it temporarily) | |||
Juerd | autrijus: Well, people go to far away places, with more sun than internet connection | ||
stevan | you AND iblech getting hit by buses | ||
*that* would be bad | |||
autrijus | I'm sure integral Corion gaal and nothingmuch etc will carry on :) | 21:11 | |
stevan | slow but never stop :) | ||
Corion | Ah, I will go to Braga, and thus won't be hacking on Pugs, at least not during the day for two weeks | ||
ihb | yeah! keep up the fight! | ||
oh, this isn't #politics. sorry. | |||
Juerd | ihb: What makes you think that? | 21:12 | |
Corion | Oooo. ... is in ??? Yay !!! | ||
ihb | the channel name says #perl6. | ||
Juerd | ihb: How does that make you feel? | ||
Juerd is the new eliza | |||
ihb | Juerd: eliza bot mode? | ||
haha | 21:13 | ||
autrijus | Corion: touchƩ | ||
Juerd | Are you sure? | ||
autrijus | now... what does the "Oooo" operator do? | ||
;) | |||
Corion | ;)) | ||
autrijus | it's a shorthand for capitalize()! | ||
mugwump | forward the enclosing source file to Perlmonks? | 21:14 | |
Juerd | autrijus: Hm! Perl 6 can natively support OokOok if it has macros! | ||
Imagine this, INLINE OOKOOK | |||
Corion | Juerd: You're thinking of COBOL again :) | ||
Juerd | No, not cobol | ||
autrijus | I wonder if there is a capitalise() form in addition to capitalize() | ||
is this the first builtin that has the -ize suffix? | |||
Juerd | www.dangermouse.net/esoteric/ook.html | ||
autrijus: I'd just call it caps. | 21:15 | ||
nothingmuch | i think the most amusing esoteric language to me is beatnik: www.cliff.biffle.org/esoterica/beatnik.html | ||
ihb | gah, do i have to spell that long anme? i want an operator! | ||
Juerd | To also indicate that it adds multiple. | ||
Corion | Bah. One must subscribe to glasgow-haskell-users. Is anyone subscribed to [email@hidden.address] and can forward my message? | ||
mugwump | capitalise is the canonical form of course :) | ||
oh, actually I lie | 21:16 | ||
Juerd | compared to uc, lc, lcfirst and ucfirst, capitali<[sz]>e is too long. | ||
caps is just about right, length wise, and wrt meaning | |||
autrijus | why do we want that builtin anyway :) | ||
mugwump: hm? what is actually the canonical form? | |||
Juerd | autrijus: For English and Americans who want their silly "title case" | ||
autrijus: Which this doesn't even properly implement. | 21:17 | ||
autrijus | exactly! | ||
Juerd | autrijus: In other words: I have absolutely no idea why anyone would use this, even if it were a module. | ||
mugwump | autrijus: I was just looking at whether "capitalise" was ever 'correct' English, and given the results of putting 'capitalise' into askoxford.com, I don't think so | ||
nothingmuch is disappointed that lazy context did not receive any feedback from @Larry | |||
autrijus | mugwump: ah. well, the canonical form is é¦å大åÆ« anyway | ||
;) | 21:18 | ||
ihb | there already exists such a module: Text::Capitalize -- capitalize strings ("to WORK AS titles" becomes "To Work as Titles") | ||
clkao | 大é¦('orz') | ||
ihb | (to Juerd) | ||
autrijus | clkao: indeed! that makes the head bigger! | ||
clkao: talk about DWIM! | |||
clkao | bwahaha | ||
Juerd | ihb: Yes, but that's not what Perl 6's capitalize does | ||
ihb | Juerd: oh, i thought you said it was used for titles. | 21:19 | |
Juerd | ihb: And, something that does title case should probably be rude and claim tc, to go with lc and uc | ||
Arathorn | presumably p6's capitalize has no idea that prepositions shouldn't be capitalised... | ||
autrijus | Juerd: I wonder who brought up .capitalize | ||
mugwump | now that we've got unicode, should uc("Ƥ") be "Ć" ? | ||
mugwump bahs at encodings | 21:20 | ||
Juerd | ihb: capitalize simply s/^|<after ws>./{ uc $/ }/'es | ||
ihb | how often do you use ucfirst()/lcfirst(), btw? | ||
Juerd | Often. | ||
ihb | when? | ||
autrijus | I often use the interpolation form. | 21:21 | |
Juerd | lcfirst never, ucfirst quite often | ||
nothingmuch noticed he drifted very far away from those things | |||
Juerd | Me too | ||
clkao | oRZ | ||
nothingmuch | it's been sooo long since i've done math in perl, more than basic addition/incrementing, or related arith | ||
or "pretty" string formatting | |||
except for progress reports | |||
Juerd | ihb: capitalize simply s/[ ^ | <after ws> ]./{ uc $/ }/'es | ||
Sorry about the previous version. It was wrong. | 21:22 | ||
ihb | i survive. | ||
Arathorn | dude, you've got ^b's in your regexp... :) | 21:23 | |
Juerd | Of course, it's even clearlier written as s/<after ^|ws>./{ uc $/ }/ | ||
Arathorn: Dude, your irc client must really suck ;) | |||
Arathorn | hehe | ||
Arathorn no comment | |||
Juerd | ihb: In normal language, in a somewhat more grokkable world without chromatics and brian d foys, every sentence begins with a capital. | 21:25 | |
Arathorn | latin doesn't... | 21:26 | |
Juerd | ihb: So for titles in web pages, as entered by users, I often apply ucfirst because the users themselves are to stupid to remember to do this. | ||
Corion | Example sentences: paris is in france. washington is in the US of A. | ||
Juerd | Arathorn: LATINHASNOLOWERCASELETTERSANDITHASNOSPACESANDITHASNODIFFERENCEBETWEENVANDU | ||
ihb | Juerd: haha, of course. yeah. i don't have to deal with stupid users :-) | ||
Juerd | Arathorn: Real latin, that is :) | ||
nothingmuch | atin-lay | 21:27 | |
Arathorn | carved latin, perhaps - cursive latin script had cases :) | ||
Juerd | Corion: Thank you for the visual support :) | ||
Corion | Juerd: Both sentences begin with a capital! | ||
Juerd | Corion: And yet they don't! Whoa! | ||
Corion | :) | ||
mugwump | so. ext/Perl-MetaModel/lib/Perl/Cxt.pm. Succint translation of Haskell to Perl types or missing the point? | 21:29 | |
nothingmuch | autrijus: I forgot what doBind does | ||
stevan | mugwump: can you svn up and take a look at docs/perl6_meta_meta_class_hierarchy.pod | ||
r3688 | |||
autrijus: if you could take a look too that would be cool | 21:30 | ||
svnbot6 | r3688, Stevan++ | Perl::MetaModel - More diagrams, better pseudo code examples; I think this is getting close :) | ||
stevan | and anyone else for that matter :) | ||
autrijus | nothingmuch: it binds stuff. | ||
nothingmuch: and takes care of name shadowing in | |||
sub foo ($x, $y=$x) | 21:31 | ||
by special casing for Syn "default" | |||
nothingmuch | ah | ||
autrijus | it's the [ApplyArg] generator | ||
Juerd | Is ($x = $y, $y) valid? | 21:32 | |
How about ($x = $y, $y = $x)? | |||
autrijus | Juerd: it's valid but does not mean what you think it means. | ||
mugwump | stevan: why say, a Role is "flattened"? Surely if you add behaviour to a role after attaching it to classes etc, you want those classes to be updated already? | ||
Juerd | I'm not thinking much of it | ||
autrijus | Juerd: the $y in ($x = $y) is an outer scope. | ||
Juerd | I see | ||
stevan | mugwump: hmmm, that is an interesting case | 21:33 | |
Juerd | I'm beginning to think it may be fruitful to separate arguments using semicolons, in signatures. | ||
stevan | mugwump: however, roles are supposed to be flattened into the class | ||
Juerd | This probably won't get broad support. | ||
stevan | when a role is added at runtime it creates an anon class | ||
autrijus | Juerd: I'll support it. | ||
nothingmuch | pascal traumas may surface | ||
i think it works well when the params are complex | 21:34 | ||
mugwump | when it is added at runtime to a *variable* it creates a new anon class | ||
nothingmuch | but that it's asymetric with: | ||
stevan | I ended having to go back and read more about them and the Traits paper from which they were originally spawned | ||
mugwump | aiui | ||
Juerd | Currently, argument definitions look too much like expressions | ||
nothingmuch | function(1, 2); | ||
Juerd | Simply changing , to ; can fix that instantly. | ||
nothingmuch | sub function ($one; $two); | ||
stevan | mugwump: yes, to a variable | ||
Juerd | nothingmuch: Yes, but it's already asymmetric with everything else in Perl, so that can't be a good reason. | ||
stevan | however everything i read indicated that roles are composed/flattened at compile time | 21:35 | |
Juerd | Signatures are a mini language, like regexes | ||
nothingmuch | Juerd: but this could be *really* confusing to newbies | ||
Juerd | nothingmuch: All the better. | ||
nothingmuch | better? | ||
Juerd | Yes | ||
If there's one important lesson every newbie must learn, it's: don't guess, don't assume. | |||
nothingmuch | rationalize please =) | 21:36 | |
stevan | mugwump: it is dangerous to think of Roles as being too much like classes | ||
because they really are different | |||
nothingmuch | i think that the common case, sub foo ($a, $b) should stay trivial | ||
because there's just too much context | |||
Juerd | nothingmuch: The symmetry between foo(a, 3) and an ($a, $b) signature is dangerous. | ||
nothingmuch | every language on earth does it that way | ||
Juerd | nothingmuch: So I think breaking the symmetry is a good idea. | ||
nothingmuch: You can write foo($a, $b) and foo($a + 3, $b), but not have a signature of ($a + 3, $b). | 21:37 | ||
nothingmuch: Neither can you write my $a + 3 = 5; | |||
wolverian | why not? :) | ||
autrijus | indeed, why not. :) | 21:38 | |
it has a very precise meaning. | |||
nothingmuch doesn't have a real reason to go against ; in params except for asymetry | |||
autrijus | my $a + 3 = 5; | ||
say $a; # 2 | |||
Corion | Because Pugs is not Prolog :) | ||
Juerd | nothingmuch: I havo no real reason to go *for* ; except asymmetry. | ||
mugwump | stevan: ok.. but is there a good reason, other than dispatch optimisation, that roles should be flattened? | ||
autrijus | Corion: s/not/not yet/ | ||
nothingmuch | i think the mapping symetry brings is very useful | ||
Corion | autrijus: ;) | ||
Juerd | autrijus: That doesn't actually work like that, does it? | ||
Corion | Ovid should port his WAM :) | 21:39 | |
autrijus | Juerd: in some languages it does. | ||
nothingmuch | but dunno... p6l?. | ||
Juerd | autrijus: Now, sqrt($x) = 4, $x == 16?! | ||
autrijus: Perl is not some languages in that respect | |||
autrijus | Juerd: yeah. | ||
stevan | mugwump: because they are meant to be reusable chunks, when we start dispatching then we begin to get into a whole mess of other things | ||
autrijus | it would be kind of fun for it to do that via a module, though :) | ||
Juerd | autrijus: This means every expression needs to be an lvalue, which ... makes my head spin. | ||
autrijus | Juerd: Curry and Oz does that happily :D | ||
clkao | e/win23 | 21:40 | |
nothingmuch | in p5 can overloaded operator methods be lvalue? | ||
Juerd | just_make_it_so_that(sqrt($x) == 16); # grin | ||
wolverian | $a + $b = 5; $b = 2*$a; say $a; | ||
stevan | mugwump: remember any reference to $?CLASS or $?SELF in a Role is deffered to runtime and is taken to mean "the class which implemented the role" | ||
autrijus | Juerd: right, just_make_it_so_that is a primitive in those languages. | ||
stevan | mugwump: that alone makes me think we should be flattening | ||
Corion | autrijus: Are you subscribed to glasgow-haskell-users ? | ||
mugwump | sure, this is the difference between is and does | ||
autrijus | Corion: no | ||
Juerd | autrijus: Not Perl, please. | ||
autrijus | Juerd: not by default, sure :) | ||
Juerd | This sort of thing doesn't work well with sequential execution, I think. | 21:41 | |
stevan | mugwump: yes it is, but it will get really hairy | ||
Corion | Gah. So I'll have to subscribe to fire off that one message, and then unsubscribe again ... | ||
autrijus | Juerd: neither does Rules, really... | ||
stevan | mugwump: have you read the original Traits paper? and the Formal Trait model paper? | ||
mugwump: they make a very good case for flattening | 21:42 | ||
mugwump | can you summarise why that is more than an implementation detail? | ||
stevan | mugwump: not easily :) | ||
mugwump: Roles are all about composition | 21:43 | ||
and to me composition makes more sense when we are flattening | |||
mugwump: part of the problem I see with allowing runtime Role manipulation to affect classes | 21:44 | ||
is that you have to deal very specifically with conflicts | |||
and a change in a Role would require all classes which implement the Role to re-evaluate their relatioship | |||
a Role conflict is a fatal error | |||
(IIRC that is) | |||
so by altering a Role at runtime and expecting Classes to update | 21:45 | ||
mugwump | is that a problem? if you play with stuff like that at runtime you expect a lot to happen | ||
stevan | mugwump: well, if I played with a class like that | ||
I would not expect it to die | |||
I would expect weirdness | |||
but not death | |||
mugwump: what do you see as the advantage of being able to do this? | 21:46 | ||
if it is useful, then I can see trying to make it work | 21:47 | ||
but if it is just a black hole of problems waiting to happen | |||
why support it? | |||
kelan | because someones black hole of problems is someone else's useful? | 21:48 | |
mugwump | largely because I can't see the black hole yet. | 21:49 | |
stevan | kelan: I am not sure i agree with you in this case | 21:50 | |
mugwump: ok, thats fair | 21:52 | ||
Let me explain what I see :) | |||
mugwump | It is a good question, and I don't think we know enough yet to decide on it tbh | ||
stevan: have you tried using Umbrello before? | 21:53 | ||
stevan | mugwump: no, i am not familiar with it | ||
nothingmuch | good night | 21:54 | |
mugwump | it's just I think that this ascii art can be a little confusing with so many items | ||
stevan | mugwump: I agree, however I am not on Linux | ||
I have OmniGraffle for OS X though | |||
mugwump | can it grok .xmi? | ||
stevan | no idea, but I can check :) | 21:55 | |
mugwump | eg, docs/class/ducktyping.xmi | ||
stevan | yes, thats what I was going for | ||
no it cannot | 21:56 | ||
mugwump | damn, and umbrello is kde as well | 21:57 | |
stevan | mugwump: looking for an xmi editor right now | ||
mugwump: ever heard of Violet? | 21:58 | ||
www.horstmann.com/violet/ | |||
mugwump starts violet | 22:00 | ||
mugwump curses at crappy JVMs | 22:01 | ||
svnbot6 | r3689, iblech++ | ChangeLog -- Typo fixes and mention of `CHECK {...}`. | ||
japhy | what namespace should I give my extension module of Regexp::Parser for parsing Perl 6 rules in Perl 5? | 22:02 | |
Perl6::Regexp::Parser? | |||
or just Perl6::Regexp? | |||
stevan | mugwump: it starts for me, but it's kinda clunky | 22:03 | |
mugwump | what about argouml? apparently that one's quite developed | ||
stevan | mugwump: I will give it a try | ||
mugwump: however I want to go back to the Role thing | |||
mugwump | ok | 22:04 | |
stevan | Part of what I see as the "good part" of Roles is that they are composed | ||
if they were not composed, and just dispatched too, then they would really just be classes which cannot be instantiated | |||
abstract classes or something | 22:05 | ||
kelan | japhy: if its still a parser (which i'm guessing it is since you say it parses:) i would leave ::Parser at the end | ||
stevan | the composition, and the tight rules for that composition make them "safer" in a way | ||
mugwump | what way is that? | 22:06 | |
in that you know at compile time rather than run time if there is a dispatch problem? | |||
japhy | ok. | ||
Perl6::Rules::Parser or Perl6::Regexp::Parser? | |||
stevan | mugwump: yes, the compile time vs/ runtime knowledge is helpful | ||
japhy | should I call it "Rules" since that seems to be the Perl6 word for "regexes" now? | 22:07 | |
stevan | mugwump: I cannot explain this well enough | ||
I really suggest you read these papers....(links coming) | 22:08 | ||
kelan | i would say yes, japhy. but maybe singular: Perl6::Rule::Parser | ||
as the Perl 5 name is singular | |||
japhy | oh, right-o. | ||
stevan | www.iam.unibe.ch/~scg/cgi-bin/oobib...nits+ecoop | 22:09 | |
japhy | good deal. thanks. I know it's a minor thing, I just want to take care of the nits now, rather than later. | ||
mugwump | I like the parallel you drew between roles being abstract classes. this seems to work, as multiple inheritance can be used for roles-like things, and roles can be used for class-like things too | ||
stevan | www.iam.unibe.ch/~scg/cgi-bin/oobib...rmal+Model | ||
mugwump: but I think the power of roles is in that they are *not* just abstract classes | |||
I have to take my dog out, bbiab | |||
osfameron | violet-- # clunky and buggy | 22:12 | |
mugwump | 143 pages for the Ph.D thesis! | ||
heh, "millions of programmers". yeh, right | 22:13 | ||
Juerd | What paper size? Font size? Margins? Line and letter spacing? | ||
Pages are a bad unit for text size management :) | |||
stevan | mugwump: its a dense 143 pages too | 22:16 | |
avoiding inheritance (or inheritance like things) means we can avoid some of the uglier mi issues | 22:19 | ||
and the conflict resolution allows you too "fix" the others | 22:20 | ||
mugwump | ok. this description of traits is not the same as Perl roles, particularly wrt state | ||
as roles can and sometimes must have state | |||
stevan | yes that is true | ||
they (the traits researchers) are actually adding the ability to have state into Traits | 22:21 | ||
I am looking over some of the newer papers now actually | |||
mugwump | this flattening doesn't have to happen in the Model, ie SomeClass.meta, but must happen at the package level (ie, SomeClass) | ||
Whether this happens at runtime or compile time is a matter of whether the dispatch resolution is lazy or not | |||
stevan | grab the "Traits: A Mechanism for Fine-grained Reuse" paper from here: www.iam.unibe.ch/~scg/Research/Traits/index.html | ||
it looks like they have included state in that model | 22:22 | ||
(I need to read this one myself actually) | |||
mugwump | sheesh that Stephane likes to re-use the same content for multiple papers... | 22:23 | |
stevan | :P | ||
I agree, it should not happen at the meta level, but at the user level | |||
package level, whatever | |||
but it is more than just dispatch resolution | 22:24 | ||
mugwump | I was having some thoughts about the difference between the "SomeClass" object and the "SomeClass.meta" object | ||
stevan | the act of composition requires you to do conflict resolution | ||
mugwump | so, perhaps SomeClass.meta.ref =:= ::Class, and SomeClass.ref =:= ::ComposedClass | 22:25 | |
stevan | the rules for conflict resolution are different for Roles then they are for classes | ||
mugwump: yes that makes sense (if I am understanding you correctly) | |||
mugwump | Good. So, we can keep the deep structure on the .meta objects, and flatten them in the "composed" class objects, which is effectively a cache of the dispatch resolution process | 22:26 | |
very much like those odd stash entries you'll see in any package's stash after method dispatch in Perl 5 | 22:27 | ||
stevan | mugwump: yes | ||
the does() heirarchy does not go away | |||
it is just "cached" yes | |||
mugwump | These are your .*::Behaviour objects? | 22:33 | |
stevan | The Behavior objects just implement the methods needed to compose Classes and Roles | 22:34 | |
addMethod() addRole() etc | |||
I borrowed that from Smalltalk | |||
otherwise we end up duplicating those methods in the MetaClass, the Class and the Role | 22:35 | ||
mugwump | on the one hand we don't want to duplicate code, but on the other hand we can't have the implementation of the MetaMetaModel affecting how the MetaModel works | 22:36 | |
stevan | mugwump: well the way I have it implemented it wont | ||
at least I think it wont, I need autrijus to fix an issue before I can really tell | 22:37 | ||
The MetaMetaModel needs to be able to compose metaclasses out of properties, methods and roles | 22:38 | ||
the MetaModel needs to be able to do the same | |||
but not pass that ability on | |||
down to the "user" layer | 22:39 | ||
stevan wonders if he and mugwump have bored everyone else to sleep with all this meta-meta stuff | |||
mugwump | Well, I think we have arrived at something that significantly alters at least perl6_meta_model.pod | 22:40 | |
stevan | yes | ||
I recognize that :) | |||
(and anguished over it) | |||
but still I believe pretty strongly in this model now | 22:41 | ||
which is not to say that I think it is perfect or 100% correct | |||
or that it cannot stand improvement | |||
mugwump | All we have to do with the MetaMetaModel is make it powerful enough to represent the data structures implied in the VCode.pm, Param.pm, etc | ||
stevan | mugwump: yes, I purposfully ignored that part for now though | 22:43 | |
but I see no real reason it is not possible | |||
stevan goes to check that for sure | 22:44 | ||
mugwump: yes, i see no reason why the MetaMetaModel cannot handle that | 22:45 | ||
mugwump: I see no reason what the metaclass(Role) needs to be able to invoke a method, do you? | 22:46 | ||
if you cannot instantiate it, you cannot invoke a method on it | 22:47 | ||
unless we have Role methods, but I am not sure they make sense | |||
I also think we definitely need some kind of meta-proxy object to be returned from .meta() | 22:49 | ||
svnbot6 | r3690, iblech++ | * &::("infix:<[+]>") and &::("prefix:ĆĀ«+<<ĆĀ»") and co. work now. | ||
r3690, iblech++ | * Removed a wrong test from operator_overloading.t. | |||
iblech | So one can assign to .meta, you mean? | 22:51 | |
stevan | iblech: no, because exposing the true MetaClass would be exposing the implementation | ||
iblech | Ah, I understand | 22:52 | |
stevan | I see the .meta() method (according to s12) as providing read-only information | ||
however I wonder (and I didnt see this in S12) if you would be able to create your own MetaClasses? | 22:53 | ||
iblech | I hope this is allowed, although yet I don't really know what this would be good for, need to re-read your's and mugwump's docs :) | 22:54 | |
stevan | iblech: it is useful, but highly esoteric | ||
svnbot6 | r3691, Stevan++ | Perl::MetaModel - moved the invokeMethod from Role::Behavior to Class::Behavior; tests have been updated to the new namings | ||
r3692, Stevan++ | whoops, arrow going the wrong way :) | |||
stevan | but I can see where some things in S12 would be easier done with metaclasses | ||
stevan is looking for an example | 22:55 | ||
iblech: somewhere I saw something like "my $foo = Foo.new() is Persistent" or something to that effect | 22:58 | ||
I could see that as being a runtime metaclass re-assignment | 22:59 | ||
iblech | ...and the metaclass takes care of writing the stuff to disk? | 23:00 | |
stevan | iblech: yes | ||
iblech | nice! | ||
stevan | because the metaclass should have enough knowledge of the class implementation to do it | ||
iblech: also the "class Foo is final {}" and "class Foo is open {}" would make sense to be implemented with metaclasses | 23:04 | ||
iblech | Ok, then one should definitely be able to create own metaclasses, and subclass existing ones etc. | 23:06 | |
mugwump | is final() is only one bit on the metamodel, but the compiled versions may be wildly different | ||
stevan | iblech: yes, the issue is how to change the metaclass, I think meta() should not be readonly though | ||
mugwump: from A12/Classes ". As such, a role may only be composed into a class or into another role, never inherited from or delegated to. That's what classes are for." | 23:07 | ||
mugwump | that just means you have to use "does" to use them, I think | 23:11 | |
ie, a Role is not a Type. | |||
stevan | yes | 23:12 | |
but the "Roles are not inherited from or delegated to" is important | |||
A role is not a functioning "thing" it is totally abstract | 23:13 | ||
mugwump | sure, it needs to be substantial to be delegated to | ||
or inherited from, and it is insubstantial | |||
if Dog is a role and you use `my Dog $spot', you are creating a new Type that .does(Dog) | 23:14 | ||
stevan really has to read A12 again | |||
mugwump: yes | |||
anon class | |||
mugwump | maybe that's not legal syntax, though | ||
maybe you can only use my $spot does Dog if it's only a Role | 23:15 | ||
stevan | mugwump: I see no reason why it can't be legal | ||
wolverian | it'd be symmetric with signatures | ||
stevan | it just would be un-intutive to most | ||
mugwump | it would also more clearly draw the line between substantial and insubstantial types | ||
stevan | you are referring to "my $spot does Dog" right? | 23:16 | |
Juerd | does Dog does Cat does Kerberos does Minotaur | ||
Freaky creature. | |||
mugwump | correct. Basically, if a Role is not a Type, you cannot use it in a declaration where you must use a type | ||
stevan | mugwump: yes | 23:17 | |
Juerd | Hm, I just started my laptop, but I see the battery's already dead | ||
stevan | however, if we want to be evil we can make that just imply the anon class | ||
Juerd | Guess I forgot to charge it | ||
8 minutes left | |||
Ah well, I'll keep the juice for emergencies | 23:19 | ||
Good night! | |||
iblech | 'nite | 23:20 | |
Ok, checking in improved hyper op code | 23:31 | ||
stevan | mugwump: in A12 Larry does talk about not composing roles, but inserting them into the delegation hierarchy | 23:32 | |
however the details of that he says is a "implementation detail" | |||
mugwump | ok | ||
stevan | however i think that properties maybe will need to be copied into the composed class | 23:33 | |
because there needs to be an instance copy | |||
s/instance copy/instance specific copy/ | |||
otherwise we would need to make Role instances of some kind | 23:34 | ||
I actually think this will support your "changing a Role at runtime" idea | 23:35 | ||
as long as you are just changing the methods | |||
unless of course we think of accessors as closures, and then make the properties bound to the closure, and not really a "part" of the object | 23:36 | ||
svnbot6 | r3693, iblech++ | * [+]<<, [+]<<<<, [+]<<<<<<, etc. will now work. | ||
r3693, iblech++ | Note: [+]ĆĀ« does not work (isn't parsed), but I must sleep now :) | |||
r3693, iblech++ | * Moved a test of arrays_and_hashes/pairs.t to data_types/pair.t. | |||
r3693, iblech++ | * EOLs at EOFs. | |||
stevan | however then we force all access to properties through methods | 23:37 | |
which on the meta-level might not be a problem | |||
iblech | Ok, sleep :) | ||
stevan | nite iblech :) | ||
iblech | Release tomorrow? | ||
stevan | I assume we are | ||
iblech | Ok :) | 23:38 | |
Nite & | |||
stevan | mugwump: any thoughts? | 23:39 | |
vcv- | So..how do you call a private mutator method on each object in an array? | 23:41 | |
svnbot6 | r3694, iblech++ | Added note about hyperops to ChangeLog. | 23:43 | |
mugwump | stevan: I've just tabulated the code examples in perl6_meta_model.pod, I think that a similar format could be used to explain what you mean.. | ||
stevan | mugwump: ok, commited yet? | 23:44 | |
mugwump | r3695 | 23:45 | |
So, our "compiled" classes+roles+whatever are types.. | 23:46 | ||
stevan | why is a Class not also an Object? | 23:48 | |
svnbot6 | r3695, mugwump++ | First half of document updated with new insights on Class vs MetaClass vs Compiled classes (types) | 23:49 | |
mugwump | it's a type, not a value | ||
stevan | what is a type? Object or Class? | ||
mugwump | a class is a type, but a type is neither object nor class | ||
an object has a type | 23:50 | ||
stevan | oh no... sorry I mean the metaclass | ||
$meta level | |||
I am not sure i understand/agree with all the does() statements | 23:51 | ||
I think that is mixing roles and classes too much | |||
can you explain further? | |||
.does(Object) to me implies that Object is a Role | |||
s/Role/role/ | |||
I think Object.does(Role), in that Object can do all the things a Role does (compose, etc) | 23:52 | ||
mugwump | ok, svn up to 3696, put a question mark by each one you don't agree with, and commit | ||
stevan | ok | 23:53 | |
mugwump | .does(Type $type) does not imply a role | ||
necessarily | |||
stevan | ok | ||
thats is where I am confused then | 23:54 | ||
svnbot6 | r3696, mugwump++ | add isa(Type) and does(Type) to table | ||
stevan | does() is ducktyping right? | ||
(the way you are using it) | |||
mugwump | essentially, yes | ||
stevan | ok | ||
THAT makes sense | |||
however it conflicts with the does() nomenclature | |||
maybe we should use .quacks() :) | |||
mugwump | dude, we're defining the nomenclature | ||
stevan | uhm | 23:55 | |
well .does() is already been used though | |||
I am not sure we are defining it *that* much | |||
mugwump | is there a conflict with using it for the same thing? | ||
stevan | A12 is actually much more specific than S12 | ||
well to me does(Something) implies that there is a Something role | |||
mugwump | if ::Something is a role, yes | 23:56 | |
stevan | yes | ||
while Roles and ducktyping are for the most part the same | |||
I think duck typing does not imply roles | |||
(wait, that doesnt make sense) | |||
Roles is one way to do ducktyping | 23:57 | ||
but not the only way | |||
(I think that make more sense, but I am still not sure) |