Feather users: perlcabal.org/~autrijus/ | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 26 May 2005. |
|||
gaal | i want to change Pipe.open to return an IO in scalar context, and (IO, Process) in list context. any cries of horror? | 00:00 | |
hmmm, actually, what does that make of the 'returns' clause in the signature? it doesn't quite return List in that case, does it? | 00:02 | ||
how do you specify context-aware return values to subs? | |||
mrborisguy | do you mean: given want { when List { ... }; when Scalar { ... } }? | 00:08 | |
gaal | that's how you implement them. how do i write the signature? | ||
beh, sorry. | 00:09 | ||
multi sub open (Str $command, ........) returns IO | |||
mrborisguy | gaal: oh, i figured it was too advanced for me, but i thought i'd throw it out there anyway ;) | ||
can't you junction? | |||
i thought i saw that somewhere | |||
returns IO|List | |||
(i could easily be wrong) | 00:10 | ||
gaal | hmm, it doesn't return a junction, that looks weird to me | ||
could be someone overloaded the syntax, though. | |||
okay, checking in Pipe::open2 and open3; no change to open for now | 00:11 | ||
mrborisguy | that's where i saw it... look in the S29 draft and search for keys | ||
gaal | s06 and e06 don't seem to mention it. | 00:14 | |
mrborisguy | gaal: yeah, i don't know what to tell you then | 00:17 | |
gaal | thanks. i'm asking p6l | ||
theorbtwo | Oh, mrborisguy, don't forget to add yourself to AUTHORS when you check in. | 00:19 | |
seen Aankhen`` | |||
jabbot | theorbtwo: Aankhen`` was seen 3 hours 47 minutes 16 seconds ago | ||
gaal | he went to sleep | 00:20 | |
theorbtwo | I'll catch him some other time. | 00:21 | |
Or perhaps he wanted AUTHORS to have no info expect his handle. | |||
mrborisguy | theorbtwo: alright | 00:23 | |
i'll do it next time if check anything in | 00:24 | ||
gaal | if i'm already in package Foo, is there a difference between saying "sub Foo::bar() {...}" and "sub bar() {...}" ? | 00:35 | |
theorbtwo | Not that I'm aware of, gaal. | 00:40 | |
broquaint | One is explicit and one is implicit but the behaviour is exactly the same. | ||
gaal | (was just asking because that's the way some funcs were specced in S29.) | ||
Chewie[] | "Label number 2 out of bounds." - What in the world could that mean? | 00:54 | |
(Parrot error, putting source online.) | 00:55 | ||
home.chewie.info:8080/~chewie/base64/base64.pasm | |||
gaal | omg, it's 4:00am. i should sleep :) | 00:56 | |
theorbtwo | G'night, gaal. | ||
Chewie[] | later. heh. | ||
gaal isn't very tired, but has $work in a few hours | |||
well, i'll do the prudent thing (or was the chance to do that four hours ago?) | 00:57 | ||
& | |||
theorbtwo can't figure out how to write the castV of instance Value Exp. | 01:00 | ||
I've got castV exp = VObject (createObject (mkType "Code::Exp") [("theexp", exp)]) | |||
However, createObject wants to output a m VObject, and VObject wants to take a plain VObject. | 01:01 | ||
Also, the output of the whole thing wants to be a plain Val, not an Eval Val. | |||
theorbtwo hopes autrijus' bit ends soon. | 01:05 | ||
broquaint | Anyone know what's with pugs on feather spew a load of perl5 code? | 01:11 | |
01:13
theorbtw1 is now known as theorbtwo
|
|||
mrborisguy | broquaint: i get it too, but no. | 01:18 | |
i don't know what's up | |||
broquaint | I think pugs is having a quirky day. | ||
sri_ | is there a FindBin equivalent? | 01:20 | |
broquaint | In what, sri_? | 01:21 | |
sri_ | in perl6/pugs? | ||
i just need the actual directory | 01:22 | ||
meppl | gute nacht | 01:28 | |
theorbtwo | Gutte nacht, meppl. | ||
meppl | ;) | 01:29 | |
theorbtwo | G'night. | 01:52 | |
kelan | theorbtwo: to pull the VObject out of `m VObject` you need to do some binding | 02:11 | |
castV exp = do | |||
obj <- (createObject ...) | |||
VObject obj | |||
but you'll need to return something | 02:15 | ||
broquaint | ?eval sub f(*$a,*$b,$c,?$d=sub{ qq/got: {@_.perl}/}) { qq/$a,$b,$c,{$d.perl}/ } my@a=1..3; f *@a; | 02:16 | |
Lacking an evalbot the output is: 1,2,3,\undef | 02:17 | ||
Why isn't $d defaulting properly? Bug or my inability to use perl6? You decide! | |||
kelan | maybe defaulting doesnt work for code refs yet? | 02:19 | |
what do the splats do in front of the scalar args? | 02:20 | ||
broquaint | A hack so the args slurp properly. | 02:21 | |
I don't understand the need for them really, but if you don't have them the signature doesn't match properly. | |||
Defaulting does seem to work on subs but not in this particular case. | 02:22 | ||
kelan | i thought you only needed to splat the calling arg. the `f *@a;` in this case | ||
broquaint | So did I :/ | 02:23 | |
pugs -e 'sub f($a,?$b=sub{say qq/foo: $_[0]/}) { $b.($a) }; f q[bar]' # outputs - foo: bar | 02:24 | ||
kelan | hmm | ||
maybe its all the splatting? something weird happening with that | 02:25 | ||
i really have no idea, tho:) | |||
broquaint | I reckon so. | ||
Ditto. | |||
kelan | what happens when you call it 3 explicit args instead of splatting an array? | 02:26 | |
broquaint | Maybe I should update some of the subroutine tests ... | ||
*** No compatible subroutine found: "&f" | |||
Unless you take out the splats, in which case it works. | 02:27 | ||
kelan | heh | 02:28 | |
i really think the splats are wrong. you shouldnt need them in the signature | |||
broquaint | Nor do I. | 02:29 | |
I think splattiness isn't working quite right in pugs. | |||
kelan | but saying splat in a way related to programming is fun | 02:30 | |
broquaint | Absolutely. | 02:32 | |
Juerd | Good localtime | 02:37 | |
Juerd goes to bed now. | |||
Bye | |||
broquaint goes for sleep before brain teh splode | 02:38 | ||
kelan | the problem with saying good localtime is that you don't know if it's a greeting or a goodbye | ||
sproingie | just say aloha | 02:49 | |
02:52
khisanth_ is now known as Khisanth
03:37
robkinyon_ is now known as robkinyon
|
|||
obscurite | Hello. Can anyone suggest a good summer project for the google summer of code thingy? I wouldn't mind hacking some perl6. Had trouble parsing the todo list myself :) | 03:52 | |
obra | obscurite: what skillset do you have? | ||
sri_ | please port modules! :) | 03:53 | |
obscurite | obra - I've done c, c++, asm on an undergrad level, a touch of professional experience. I've had lots of on the job perl, java, and scripting. | ||
My proposal has to be for a project I can spend a couple of months on. | 03:55 | ||
sri_ | porting whole cpan sounds like a couple of months... ;P | 03:56 | |
obscurite | you just need an autoporter... wait. maybe you need backwards compatibility | ||
;) | |||
obra | obscurite: nod. | ||
hm. autrijus should reappear in a few hours. | |||
mugwump | well, we've got a perl5 <-> perl6 bridge, but it's pretty deep magic.. | ||
obscurite: here's a good one. Write a YAML parser using Perl6 rules. | 03:57 | ||
obscurite | mugwump - what would it be used for? | ||
mugwump | lots and lots of things :) | 03:58 | |
sri_ | i'd love to see mason ported | 04:00 | |
obscurite | Both ideas noted | ||
mugwump | svn://tangram.utsl.gen.nz/trunk/YAML-Lite/lib/YAML/Lite/Grammar.pm is the grammar in Perl 5, well slightly. The rules implementation wouldn't be much longer or look much different from that | 04:03 | |
except with rules it might stand some chance of working ;) | 04:04 | ||
based on www.yaml.org/spec/ | |||
obscurite | mugwump, do you currently do perl yaml? | 04:05 | |
mugwump | ingy's the yaml-meister | ||
also WhyTheLuckyStiff has an implementation | 04:06 | ||
obscurite | yeah, Syck w/ perl binding | 04:07 | |
Khisanth | <sri_> please port modules! :) <- been wondering about that, is there an actual list or is it more of "All of CPAN"? | ||
mugwump | well, depending on who you ask, you'll get a list of the modules they use the most ;) | 04:08 | |
sri_ | Khisanth: just ask me! :) | 04:09 | |
woah, Cwd.pm is such a mess... | 04:11 | ||
Khisanth | sri_: so ... | ||
sri_ | and i need it for File::Find::Rule :( | ||
oh cute, File::Spec already has cwd! | 04:23 | ||
stevan | sri_: we have a cwd implemented through Haskell | 04:24 | |
File::Spec::cwd | |||
in Prim.hs | |||
sri_ | nice | ||
stevan | eventually we maybe need to port it, but it works in Haskell for now :) | ||
sri_ | Parrot should provide it ;) | 04:25 | |
stevan | exactly :) | ||
obscurite | if parrot can host ruby, why does the mono project want to host ruby? | 04:32 | |
stevan | why can't they both host it? | 04:33 | |
obscurite | I guess it's apples and oranges. | 04:34 | |
stevan | theoretically when we have a good enough code generator, we could port perl 6 to Mono too | ||
(although IIRC the CLR does not handle MI very well, or at least not easily) | |||
obscurite | Yeah, that was my _implied_ question :) | ||
stevan | it's just another VM when it comes down to it | ||
mugwump | hey, if Haskell can run on the JVM anything's possible | 04:35 | |
stevan | hey mugwump | ||
mugwump | hi stevan | 04:36 | |
stevan | obscurite: the CLR is not built/designed to handle dynamic languages as well as Parrot is/will-be | ||
it is optimized more for C#, etc. | 04:37 | ||
more static languages | |||
obscurite | Thanks for the clarification. | 04:40 | |
stevan | sri_: ping | 05:07 | |
sri_: just FYI, the ext/Tree module is a port of the perl5 module Tree::Simple (which I noticed is used by Catalyst | 05:09 | ||
sri_ | stevan: already noticed :) | 05:13 | |
autrijus reappears | 05:28 | ||
mugwump | hey. be warned I've changed perl5.c | ||
obra | hi autrijus | 05:29 | |
mugwump | (cosmetically) | ||
autrijus | sure. thanks | ||
hey obra | |||
hey obscurite. | 05:36 | ||
obscurite | Hola :) | ||
gaal | i'm getting many, many of these on win32 during make smoke: | 05:37 | |
pugs.exe: 1: runProcess: does not exist (No such file or directory) | |||
obscurite | So far, perl6-mason and perl6-rules-yaml have been suggested to me as perl foundation grant ideas. (for google summer of code) | ||
gaal | i suppose this is parrot not being found | ||
autrijus | obscurite: what is p6-rules-yaml? | 05:38 | |
gaal: yup, could be. | |||
obscurite: a YAML implementation based on p6rules? | |||
obscurite nods | |||
It seems like the Syck stuff will be in the core though? | |||
05:38
ChanServ sets mode: +o autrijus
|
|||
obscurite | So i'm not sure how practical. | 05:38 | |
gaal | obscurite: i suggest rich ASTs, so that you can do things like reliably produce normal ASCII source code from code that has unicode ops | 05:39 | |
among other interesting applications | |||
autrijus | obscurite: what kinds of things are you interested in? :) | ||
mugwump | hmm, that seems a little ambitious gaal :) | ||
autrijus | ?eval $?PUGS_VERSION | 05:40 | |
evalbot6 | No code to eval given. | ||
autrijus | ?eval 1 | ||
obscurite | I need something an experienced perler or not so experienced c/c++/asm programmer could do in a couple of months of hacking while studying at the same time. | ||
evalbot6 | 1 | ||
gaal | and that would know to change ōæ½xBB to >> in perl but to, uhhh, whatever the \N{unicode name} is in a quoted string. | ||
obscurite | something with lasting utility, that could become useful quickly | 05:41 | |
gaal | mugwump, worth 45 hundred bucks fer sure. | ||
this has many useful applications, but the code canonicalization is really important: | |||
autrijus | obscurite: syck may be core pugs (and easily made core parrot), but an independent implementation based on Rules will likely exercise PGE a lot | 05:42 | |
gaal | diff won't work without it. | ||
mugwump | diff already works well on unicode | ||
gaal | i mean, it *works* | ||
autrijus | obscurite: as gaal said, PPI6 is also a worthy goal that will make many people happy | ||
SamB | diff goes line-by-line! | 05:43 | |
obscurite writes things down | |||
gaal | but it is limited | ||
SamB | it works fine with utf8 | ||
mugwump | but I must recommend making sure that whatever it is you undertake is clearly defined :) | ||
autrijus | obscurite: although if you choose to do it with p6rules (i.e. write down Perl 6 grammar in Perl 6 rules) | ||
obscurite: then it will definitely have a great impact on the bootstraping process | |||
gaal | another example: i want to grep for <<+>> | ||
autrijus | ...except I think it's part of TPF's grant description (the pmichaud part) already... | 05:44 | |
gaal | but i don't remember if it spelled it ōæ½xAB1ōæ½xBB | ||
errr, ōæ½xAB+ōæ½xBB | |||
obscurite | <gaal> obscurite: i suggest rich ASTs, so that you can do things like reliably | ||
produce normal ASCII source code from code that has unicode ops | |||
<gaal> among other interesting applications | |||
*<* Signoff: geoffb ("Leaving") | |||
<autrijus> obscurite: what kinds of things are you interested in? :) | |||
autrijus | ooh flood | ||
gaal: what's wrong with a simple tr// based solution to that. | 05:45 | ||
obscurite curses at putty to those who have not yet ignored him | |||
autrijus | obscurite: that's fine, we only see 5 lines | ||
gaal | the weak answer is that it would have false positives | ||
autrijus | that's quite week and maybe you _want_ those false positives :) | ||
s/week/weak/ | |||
I'd like a refactoring browser though. | 05:46 | ||
port HaRe to Perl6. | |||
that will rock. | |||
gaal | the strong answer includes "code browsing" and hand waving. | ||
autrijus | but that far exceeds the two-month span | ||
it's easily a master thesis :) | |||
obscurite | Thanks, I have a bunch of things to research now. | 05:47 | |
autrijus | obscurite: I think mason6 will generate a lot of goodwill :) | ||
and it gets you playing with modparrot and other wonderful things | 05:48 | ||
gaal | autrijus, what would it take to do the whitespace preservation thingie in the AST? | ||
autrijus | plus it's clearly doable in 2 months | ||
gaal: we already do that | |||
gaal: you can simply calculare intervals (missing tokens) between Pos | |||
gaal: and do a rescan to find them out | 05:49 | ||
gaal | we do!? then my transformation can almost happen now. | ||
autrijus | that of course assume you have a copy of source code amount | ||
s/amount/around/ | |||
gaal | have a AST dumper that's guaranteed to show quoted sctrings with escaped unicode | ||
and an AST -> perl6 parser | 05:50 | ||
autrijus | er. | 05:51 | |
no | |||
you write a Pugs.Compile.Perl6. | 05:52 | ||
that's your ast->perl6 parser | |||
gaal | :D "hello" | 05:53 | |
:D 'hello' | |||
they output the same thing | 05:54 | ||
for any sane application other than this, this is a good thing :) | |||
SamB | that sounds like an extra-ugly-printer... | 05:55 | |
gaal | anyway, i should go to $work. | 05:56 | |
the added info should go in the data structure, i'm not proposing the translation actually go through text | |||
later. & | |||
autrijus | gaal: "rescan" :) | 05:57 | |
SamB starts to think his ToHsExp thing is not going to work beyond the simplest things... | 05:58 | ||
SamB knows he is too tired to figure that out now, though. | |||
gaal | what's "rescan"? (i'll backlog) | 05:59 | |
Khisanth | how difficult would it be to implement 1..10:by(2)? :) | 06:00 | |
autrijus | gaal: rescan means to look at the interval in Pos | 06:01 | |
and read back the source code | |||
between coordinates | |||
Khisanth: you want to take a stab? | 06:02 | ||
I don't see an easy way to do that :) | 06:03 | ||
and I'm not sure if it applies to 1+2:by(3) | |||
or | |||
Khisanth | heh not before I find out how you are suppose to do get 5,4,3,2,1 :) | ||
autrijus | 1==4:foo<bar> | ||
Khisanth | s/do// | ||
autrijus | reverse(1..5) | ||
surely? | |||
Khisanth | I never liked that | 06:04 | |
autrijus | 5..1:by(-1) then. | ||
Khisanth | so where is the general area is should start stabbing? I think I'll try tomorrow. I need an excuse to do something with Haskell :) | 06:05 | |
autrijus | Khisanth: ok. you can start by implementing a generic "range" op | 06:06 | |
Khisanth | that isn't already in?! | ||
autrijus | Khisanth: not afaik | ||
the curr impl is all based on ++ | |||
so you can do | |||
'a'..'z' | |||
I have _no_ idea if | 06:07 | ||
'a'..'z':by(-1) | |||
will work. | |||
or how else to make it work | |||
'z'..'a':by(-1) rather | |||
so a generic range op that takes three Val (begin, end interval) is a good start | |||
then you can introduce a special parse rule | |||
that parses range and delegate to that 3ary op | 06:08 | ||
finally we try to think a way to integrate it into the expression parser table in the correct precedence | |||
that's all | |||
obscurite is catching up on Pugs | 06:11 | ||
autrijus | :) | ||
japhy | I'll have a rudimentary perl 6 rules parser by friday | 06:13 | |
with some cheating, of course. variable and code-block parsing will be iffy. | |||
autrijus | that's fine | 06:16 | |
japhy++ # fan tas tic | |||
japhy | yay for me. | ||
g'night | |||
autrijus | nite! | ||
sri_ | there's no FindBin yet, right? | 06:17 | |
autrijus | sri_: right. write one! | ||
sri_ | mkay | ||
obscurite | sri, was perl6-mason your idea? | ||
autrijus chuckles. | |||
sri_ | obscurite: mhm | 06:18 | |
it would rock | |||
obscurite | Okay, forgot who it was. :) | ||
autrijus ponders uploading Pugs 6.2.6 with cpan-upload.p6 | 06:20 | ||
that would be nice publicity | |||
or at least fun ;) | 06:24 | ||
scook0 | ahoy! | 06:46 | |
obscurite | hi | 06:47 | |
06:51
castaway_ is now known as castaway
|
|||
autrijus | mugwump: please use "return Int" etc for now | 06:59 | |
the "int" type is not in class tree | |||
and so will trigger subtle weird bugs | |||
?eval $?PUGS_VERSION | |||
evalbot6 | No code to eval given. | ||
autrijus | ?eval eval '$?PUGS_VERSION' | ||
evalbot6 | No code to eval given. | ||
mugwump | autrijus: noted, thanks | 07:00 | |
?eval "$?PUGS_VERSION" | 07:01 | ||
evalbot6 | No code to eval given. | ||
mugwump | ?eval [+] 1..5 | ||
evalbot6 | No code to eval given. | ||
luqui | hmm? | ||
that looks broken | |||
nothingmuch | morning | 07:02 | |
luqui | morning nothingmuch | ||
scook0 | autrijus: I'm looking at Haddocking Context.hs at the moment... I was wondering how much of the current behaviour is consciously designed, and how much is just hacked together | ||
nothingmuch | brb, reboot | ||
autrijus | scook0: 0% is consciously designed. | 07:03 | |
100% is hacked together. | |||
scook0 | autrijus: thanks | ||
autrijus | scook0: only deltaType needs to remain. everything else want sto be rewritten using Data.Graph or something else. | ||
scook0 | ah | ||
autrijus | I think that part of code is ~day 13 or so | 07:04 | |
and had not been touched since | |||
scook0 | is deltaType supposed to be returning large positive numbers for types that are actually incompatible? | ||
autrijus | that is a open design question. | ||
it is that way because we want | |||
'1'+'2' | |||
to work | |||
scook0 | I see | ||
autrijus | without having to define <+> as Scalar Scalar | 07:05 | |
I think I did think of leaving a compatibleTypes as remedy | |||
to specify things that are fundamentally uncastable | |||
scook0 | I think I'll just document the current behaviour for now | ||
autrijus | nod. it is a mess. it really wants a rewrite. | ||
scook0 | with a caveat saying "this may or may not be wise" | ||
autrijus | you can kill the "may or" | ||
scook0 | 'junctivate' turned my brain inside-out too :) | ||
autrijus | I asked something about Str->Int casting on p6l | ||
luqui still thinks that the '1'+'2' thing is elegantly solved by making '1' both a Str and an Int at the same time | |||
autrijus | but no rulings came down | ||
scook0: "junctivate" is actually sane | 07:06 | ||
luqui | whereas '1a' is just a Str, so gives an error | ||
autrijus | luqui: oh and 'Inf' is a Num | ||
scook0 | oh, it's sane, it's just that it's so abstract | ||
luqui | not sure about that one | ||
autrijus | and '1e-1' is a Complex | ||
luqui: and other weird corner cases :) | |||
er, never mind about the Complex thing. thinko | |||
luqui | well, it is a complex | 07:07 | |
it's just a Num also | |||
:-p | |||
luqui thinks about it some, and decides that '1e-1' should still be a Num, even though it might be unsettling | 07:08 | ||
scook0 | autrijus: btw, is 'countTree' supposed to be ignoring leaf nodes? | ||
mugwump | 1i-1 perhaps you mean? :) | ||
or 1ie0+1e0 | 07:09 | ||
luqui | probably 1e0i+1e0 | ||
mugwump was trying to find the Complex literal equivalent of the /eieio operator | |||
luqui | oh | ||
autrijus | scook0: it doesn't really matter, but no. | 07:10 | |
scook0: if you can fix it so it counts the whole tree, that's fine | |||
scook0 | autrijus: it's a one-char fix, so I'll bundle it in when I ci my docs | 07:11 | |
doesn't really make any practical difference atm | |||
autrijus | k | 07:12 | |
Corion | "make test" now takes ages - I should do a clean checkout it seems ... | 07:15 | |
luqui | what does a clean checkout have to do with it? | 07:16 | |
Corion | luqui: "make clean" doesn't | ||
castaway looks at Corion.. (at home today, what?) | |||
Corion | castaway: Yep - working from home ;) | 07:17 | |
castaway | ha, I'm so clever :) | ||
Corion | (resp. fighting our DNS as it doesn't work when trying from home :( ) | ||
castaway | hmm, reminds me, must figure out why by home dialin is failing | 07:21 | |
luqui | ?eval "working?" | 07:22 | |
evalbot6 | No code to eval given. | ||
castaway | guess not ,) | 07:23 | |
07:27
sekimuraway is now known as sekimura
|
|||
luqui | ?eval "evil working?" | 07:29 | |
evileval | No code to eval given. | ||
evalbot6 | No code to eval given. | ||
autrijus | ?eval '123' | 07:33 | |
evalbot6 | No code to eval given. | ||
autrijus | ?eval 1 | ||
evalbot6 | 1 | ||
autrijus | ?eval \' | ||
evalbot6 | No code to eval given. | ||
autrijus | hrm. guess it needs some debugging | ||
Corion | Yee Haw! I bested our DNS ! :) | ||
luqui is debugging it | 07:34 | ||
gaal|work | Corion, are you getting a parrot-enabled pugs on your box? | ||
Corion | gaal|work: Nope, because I don't have Parrot installed | ||
ext\Set\t\overload.t is taking 2 minutes already - I think it runs in an infinite loop ... I'll keep it running up to 10 minutes I guess | |||
gaal|work | i do have it, but my pugs on w32 is rules-challenged. i haven't had tuits to check if it's just a makefile thing or a deeper issue | 07:35 | |
"just a makefile thing" -- famous last words | |||
mugwump | Corion: that is far too long for that test! | 07:36 | |
Corion | mugwump: 4 minutes now :) | ||
mugwump: I don't have the time to debug it though ... | |||
mugwump | that's cool, I'm on it | ||
Corion | (to see where it hangs ...) | ||
mugwump | It's not getting pass the parsing | ||
gaal|work still things the context-sensitive return declaration syntax is weird | 07:37 | ||
mugwump | wow, my pugs takes 12s to start up | 07:38 | |
gaal|work | sub foo() returns Int | List of Sheep | ||
mugwump | on my 1.6GHz athlon | ||
Corion | mugwump: That might be Prelude.pm getting loaded ... | 07:39 | |
mugwump | why did we have to put a Honda in? | ||
luqui | evalbot is fixed | 07:40 | |
should bytes be a unary? | |||
autrijus | Corion: it's fixed. | ||
luqui: why note? | |||
Corion: the set test, that is | |||
luqui | well, it's not | ||
that was the problem | |||
Corion updates | 07:41 | ||
luqui | so if it should, then there is a pugs bug | ||
autrijus | luqui: how is it not unary? | ||
pugs> bytes 'asdx' | 07:42 | ||
4 | |||
luqui | bytes 3 + 8 | ||
2 | |||
it looks like a listop | |||
Khisanth | mugwump: why DOES pugs take so much longer compared to perl anyway? | ||
luqui | hmm | ||
no, it's not | |||
hmmm.... | 07:43 | ||
maybe unaries are parsed with the wrong precedence now | |||
Corion | Khisanth: Because Pugs is compiled using GHC and not using MSVC | ||
mugwump | in my case, because I'm linking in parrot, pugs, haskell and perl 5 :) | ||
luqui | wait, that's really weird | ||
it's working in pugs>, but not in evalbot | |||
autrijus | luqui: it may be a optionary | ||
Khisanth | this perl is compiled with gcc | ||
Corion | evalbot might be several versions behind :) | ||
Khisanth: Then I don't know - I expect gcc to be slow. But GHC does some magic before handing stuff off to gcc | 07:44 | ||
07:44
autrijus sets mode: -o autrijus
|
|||
luqui | there was "if bytes $code == 0", and it looked like that was being parsed "if bytes($code == 0)" | 07:44 | |
autrijus | luqui: clearly that's broken | ||
clkao | morning autrijus | 07:45 | |
autrijus | hi clkao. | ||
clkao | sick today :( | ||
have you done something for me? | 07:46 | ||
autrijus | no, I've been a bit sick too and slept a lot | ||
clkao | so what was missing last night? | 07:47 | |
autrijus | clkao: hashrefs | ||
clkao | no | ||
f0rth | what would be required to have pugs working like perl5 in EPIC? | ||
clkao | lvalue doesn't work | ||
autrijus | luqui: in Parser.hs, bytes should be there in optionary | ||
luqui: also int() doesn't work | |||
clkao | you need to make placeholder-ish block rw | ||
autrijus | clkao: right, that too, but I didn't have tuits to check | ||
placeholder-ish? | |||
clkao | {$^x..} | 07:48 | |
luqui | what is int() supposed to do | ||
autrijus | clkao: can't. | ||
clkao | usually you can do -> ($x is rw) { blah } right? | ||
luqui | (and it looks like bytes is optionary; I'm still trying to find the real problem) | ||
autrijus | eval_apply("sub ($x is rw, $y) {$x[0] = $y}") | ||
right | |||
luqui: hrm wait | |||
int() does work as both unary and optionary | |||
and parses correctly | |||
oh, no, nvm | 07:49 | ||
pugs> :d int 5 - 8 | |||
App &int (: App &infix:- (: 5, 8)) | |||
that's still wrong | |||
so the entire unary thing is borked. weird | |||
luqui | it's just that in evalbot: "if bytes $code == 0" doesn't work, but "if bytes($code) == 0" does. But that doesn't seem to be happening elsewhere. | ||
autrijus | I'm seeing that it fails consistently elsewhere too | 07:50 | |
compare | 07:51 | ||
pugs> :d chdir 1,2 | |||
Syn "," {App &chdir (: 1); | |||
2} | |||
with | |||
Aankhen`` | Anyone wanna port Time::Local? | ||
autrijus | pugs> :d mkdir 1 == 2 | 07:52 | |
App &infix:== (: App &mkdir (: 1), 2) | |||
luqui | isn't that correct? | ||
autrijus | right. but see | ||
pugs> :d bytes 1 - 2 | |||
luqui | ?say "hi" | ||
autrijus | App &bytes (: App &infix:- (: 1, 2)) | ||
pugs> :d bytes 1 + 2 | |||
App &bytes (: App &infix:+ (: 1, 2)) | 07:53 | ||
oh | |||
it's because - and + are might tigher | |||
sorry. got them confused with comparisons | |||
luqui | aren't + and - supposed to be tighter than unary? | ||
yeah they are | |||
(I meant to say "looser") | 07:54 | ||
autrijus | indeed. clearly I'm not in the correct mental shape :) | ||
luqui | me either | ||
autrijus | they are looser than symbolic unary | ||
but tighther than named unary | |||
luqui | ?eval "hi" | ||
evalbot6 | No code to eval given. | ||
evileval | 'hi' | ||
autrijus | and optionary | ||
mugwump | hmm, {}.kv seems to hang on 4238 | ||
autrijus | luqui: committed your fix to eval? | ||
luqui | yeah | 07:55 | |
autrijus | mugwump: indeed. take a look at Keyed.hs and see if you cant fix? | ||
(and {} is a code anyway) | |||
luqui | I'll kill evil if you restart evalbot6 (are you the one who runs that?) | ||
autrijus | I am | 07:56 | |
07:56
ChanServ sets mode: +o autrijus
|
|||
autrijus | ?eval ('luqui++') xx 3 | 07:57 | |
evalbot6 | ('luqui++', 'luqui++', 'luqui++') | ||
07:57
autrijus sets mode: -o autrijus
|
|||
autrijus | so, finally all is well. | 07:57 | |
luqui | oh, the evalbot now supports ?join | ||
autrijus | cool! | 07:58 | |
luqui | so you don't have to invite him | ||
autrijus | 'key | ||
?eval File::open('/etc/passwd') | |||
evalbot6 | Error: No compatible subroutine found: "&File::open" | ||
autrijus | cool. Prelude is really not loaded under safemode | ||
f0rth: probably not much, just tweak epic a bit | 07:59 | ||
epic as it currently stands already works with p6 to some degree | 08:01 | ||
bbiab | 08:02 | ||
Corion | Hmmm - at r4246, the test ext\Set\t\overload.t still hangs | ||
autrijus | the fix was 4247. | 08:03 | |
sorry :) | 08:04 | ||
Corion: can you help (after a successful smoke) unTODO and enTODO for the release? | |||
Corion | autrijus: I'm supposed to $work, but I'll look into it after this smoke has finished | 08:05 | |
luqui | :q | ||
autrijus | cool. thx! | ||
:) | |||
& | |||
jql | damn work | ||
given Work { say "I Quit!" when .does Suck } | 08:08 | ||
jql sees good things with p6 poetry | 08:09 | ||
Corion | "true" but false | ||
"maybe" but true|false | |||
luqui | jql, almost right | 08:10 | |
jql | even better, "false" but false | ||
luqui | given Work { say "I Quit!" when .does(Suck) } | ||
jql | damn methods | ||
Corion | "0 but true" but false # Perl5 programmer, indecisive | 08:11 | |
jql | $foo but $foo; # head asplode | ||
luqui | I don't think that's a head asplode | 08:12 | |
if $foo contained a Role, then that would be fine | |||
you're making the Role do itself | |||
oh | |||
okay, yeah, my head a splode | |||
autrijus | hey luqui. why isn't {} a Hash? | ||
jql | heh | ||
luqui | it's not? | ||
autrijus | I mean, what use is a empty Code? | ||
luqui | what use is an empty hash ;-) | ||
autrijus | my $href = {}; | 08:13 | |
luqui | I can think of uses for both | ||
Corion | Hrmmm ... My system test seems broken ... Weird ... | ||
luqui | but the hash is undoubtedly more useful | ||
autrijus | really. what use is a empty code? | ||
luqui | To assign a callback that does nothing? | ||
still, sub {} is fine there | |||
autrijus | or {;} | ||
luqui | that too | ||
jql | as long as it's not (sub{} | hash()) | 08:14 | |
autrijus | ok. I'd like {} to be a hash | ||
luqui | I expect a lot of people would | ||
jql | I would | ||
luqui | { %hash } too | ||
autrijus | that too. | ||
luqui | (I don't remember if that is still a hash } | ||
autrijus | it's not. | ||
jql | we have {;} if we want an empty Code | ||
luqui | it was at one point | ||
autrijus | can you bring both to p6l? I'd like to implement both | ||
luqui | okay | ||
autrijus | danke | ||
(the relevant code is Parser.hs line 775, extractHash) | 08:15 | ||
f0rth | autrijus: I am still trying to make syntax check working | ||
jql | or, perhaps in a fit of p5 dwimmery, an empty hash ref does Code. heh | ||
jql pretends he didn't say that | 08:16 | ||
mugwump | ext/Set/t/overload.t is succeeding on r4248 | 08:31 | |
Corion | My r4246 smoke is still running ... | 08:33 | |
Grrr. Array interpolation has changed again, that's what broke my test :( | 08:40 | ||
Ah hah. Aliasing seems to be broken: for *@cmd,*@args { # does not work | 08:43 | ||
for *@cmd,*@args -> $l { # works as expected | |||
Hmmm. Weird ... That doesn't seem to be the cause ... Oh well - it worksnowsoiskipit | 08:45 | ||
luqui just submitted a Google summer of code proposal | 09:03 | ||
mugwump | I'm ineligible - it's going on Winter here! | 09:04 | |
luqui | haha | ||
kungfuftr | mugwump: you still got the timewarp code anywhere? | 09:18 | |
mugwump | kungfuftr: er, probably.. | 09:19 | |
actually, no, I've got lots of little fragments of it :) | |||
don't forget the mountain of dependancies... which part are you most interested in? | 09:21 | ||
kungfuftr | mugwump: bah... need for to have blocking... | ||
mugwump: bonus points for converting timewarp style stuff into a plain old sleep() function | |||
=0) | |||
mugwump | oh that's easy | ||
just window.setTimeout(function(){ /* code to run after sleep */ }, 1000); or something | 09:22 | ||
kungfuftr | mugwump: nah... foo(); sleep(5); bar(); | 09:23 | |
=0) | |||
mugwump | can't be done, I'm afraid :) | ||
kungfuftr | mugwump: supposedly there is a way... via throwing scope | ||
mugwump | hmm | 09:24 | |
kungfuftr | bbiab | ||
luqui | what's timewarp? | 09:27 | |
mugwump | it's just a jump to the left... | 09:28 | |
luqui | ? | ||
castaway | Its a dance | 09:29 | |
mugwump | o/~ ... and then a step to the riiieye-eye-eye-eye-iiiight ... o/~ | ||
luqui | oh | ||
mugwump | it was a test script where we had developed XML-RPC on acid | 09:30 | |
via iframes etc | |||
luqui | huh | ||
okay | 09:31 | ||
mugwump | mmm. should have been off-chan really :) | ||
luqui /XML|RPC/ and die | |||
sri_ steps on mugwump's foot | |||
luqui | that's the state of my knowledge | 09:32 | |
kungfuftr | quick... jump him while he's not looking! | 09:33 | |
mugwump | with a full windowing toolkit and a generic object bridge from JavaScript to Perl, auto-generating JS and Perl skeleton classes from a T2 metamodel, mapping them straight to the database and pretty much transparently bridging to the browser it was a case of overengineering gone mad :) | ||
kungfuftr | mugwump++ # too correct, it _was_ funky though | 09:42 | |
mugwump | I think that was what kept us all going.. | 09:43 | |
Corion | I am considering doing a bridge from Class::DBI via XMLHttpRpc to JavaScript, to give some JS objects persistence ;-)))) | 09:44 | |
kungfuftr | Corion: cdbi-- | ||
Corion | Feh - it worksforme | ||
kungfuftr | cdbi makes easy things simple, it makes hard things impossible | ||
castaway | just difficult.. | 09:45 | |
mugwump | it's a great SQL templating engine | ||
castaway | It is? | 09:46 | |
Corion | kungfuftr: I don't need to adapt other peoples' databases, so cdbi works well for me | ||
kungfuftr | Corion: yar, it seems like that now, but eventually when you come further down the line, you'll need to change it to make it more complex... i can guarantee it | 09:47 | |
Corion | kungfuftr: Well - I primarily use the DB as a persistence store, and for that it works quite well. | 09:48 | |
mugwump | I need to dynamically build expressions that contain multiple joins using arbitrary search filters on any of the joined objects. Tangram works :) | ||
Corion | Hmmm. Where does "rel2abs" live nowadays? | 09:49 | |
sri_ | kungfuftr: same here, cdbi keeps the simple things simple | ||
kungfuftr | sri_: i've just found it to sprout legacy code | ||
where you seriously have to hack it to get it to work for some change request | 09:50 | ||
tangram's good, but it's not really a viable option for pre-existing systems | |||
*sigh* life is hard | |||
Corion | Ah. Its Just Not exported | ||
castaway | It is ,) | ||
I'm not even sure the simple things are simple (at least from the POV of having to recreate your table structure in CBDI classes | 09:51 | ||
Corion | castaway: CDBI can look at the DB and learn from that ;) | 09:52 | |
mugwump | well, CDBI::Loader is supposed to get around that | ||
but yes, it sucks describing your program' | |||
s model twice | |||
castaway | Corion, yeah, so Ive heard, but what if you add/change your DB structure? | ||
nothingmuch | castaway: my project is still not finished | ||
but usable | |||
castaway | mugwump, right, that was my point | 09:53 | |
Corion | castaway: Then your class changes as well :) | ||
castaway | rerunning loader "fixes" it? | ||
(without killing any additions I may have made?) | |||
mugwump | schema migration is a complex issue, with or without a snazzy abstraction.. | ||
castaway | oh, and the "no multicol keys" sucks | ||
mugwump | hey what a cool error | 09:54 | |
pugs: cannot cast from VStr "bob" to Pugs.AST.Internals.VCode | |||
luqui | that's a common one | 09:55 | |
mugwump | ah, "$foo()" | 09:56 | |
nothingmuch | hopefully the defacto persistence/rdbms-oo mapping in perl6 will be nicer | ||
stevan and I had a nice discussion about it | |||
kungfuftr hopes so | |||
luqui is so excited about serializable continuations | 09:58 | ||
autark-jp | hm, do you need a newer perl than 5.8.0 to build pugs? | 10:00 | |
nothingmuch | how do serializable continuations get along with ickier state preserval, like handles? | ||
luqui | I doubt it | ||
autark-jp | when trying make, I get: Perl v6.0.0 required--this is only v5.8.0, stopped at /work/d/pugs/blib/lib/File/Spec.pm line 1. | ||
castaway giggles | |||
autark-jp | BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.0/ExtUtils/Install.pm line 22. | ||
luqui | you probably need to register a "on entry" callback or something so that you can restore it | ||
that's weird | 10:03 | ||
it seems to be trying to run a perl6 script using "perl" | |||
autark-jp | things just work on my other mchine with 5.8.6 | ||
luqui | is that the only difference? | 10:04 | |
autark-jp | probably not | ||
Aankhen`` | Question: what is a continuation, in the programming sense? | ||
luqui | as opposed to what kind of sense? | ||
Aankhen`` | Any other, I suppose. | ||
Just pre-empting someone picking up a dictionary and being a wiseguy. :-P | 10:05 | ||
luqui | uh. it's like a closure, but it closes over the execution stack too | ||
I think Dan has a wthi about it | |||
luqui is looking that up | |||
www.sidhe.org/~dan/blog/archives/000185.html | 10:06 | ||
that's not exactly terse though | |||
basically it allows you to "save" a point in the execution of your program, and return to it at a later time (but variables that are changed stay changed) | 10:07 | ||
I don't know why I put quotes around "save" | |||
Corion | luqui: Not necessarily all variables that have changed stay changed. Only the globals, as the whole stack hangs onto the continuation | 10:08 | |
(globals+heap better) | 10:09 | ||
luqui | considering new instances of lexicals to be distinct variables and whatnot | 10:10 | |
basically just like a closure | |||
in our Perl world, everything is on the heap | 10:11 | ||
I don't know of a language with continuations where that isn't true | |||
nothingmuch | Corion: if two conts close over the same lexical scope, one changes a var, and continues to the other, the other will see the change | ||
Corion | nothingmuch: true | 10:12 | |
nothingmuch | Aankhen``: continuations are a divergance from single point of entry / single point of exit | ||
returning early is the most trivial example | |||
Corion | Likely, if you already know closures, then a continuation is a closure that also closes over the current line number executed :)) | ||
luqui found it useful when trying to understand continuations to hear lots of different explanations | 10:13 | ||
nothingmuch | coroutines are even weirder, stopping at a point, returning a value, and then picking up | ||
luqui | so this is good | ||
nothingmuch | and a continuation is even more flexible | ||
luqui | Corion, and its call stack | ||
nothingmuch | it's a bit like taking a closure, and a reference to a line number | ||
Corion | (and the call stack) | ||
nothingmuch | true | ||
integral | they're like threads too, in that when you context switch you make a continuation | 10:14 | |
luqui | hmm... come to think of it, a coroutine is very much like some sort of non-constant continuation | ||
that is, a continuation that updates what it points to as it executes | 10:15 | ||
nothingmuch | look at it this way: if you create a continuation in the current place in a file, and call another sub | ||
and that sub continues to the continuation you gave it | |||
it's like it returned | |||
integral prefers the: my $foo = coro { } form | |||
mugwump | It would be fun to port POE to coroutines :) | ||
integral | since then it's a bit more obvious that $foo isn't like a normal subroutine, in that it's a box with a continuation in it, and the box's contents can change | ||
Aankhen`` | Sorry, my computer was shouting at me to take a 10 minute rest break. | ||
luqui | mugwump, fun? | 10:16 | |
very very useful | |||
integral | mugwump: POE::Session::YieldCC on CPAN is a crappy attempt at this | ||
nothingmuch | except that the jump replaces the stack, not only pops from it | ||
Aankhen`` | luqui >> It certainly has been useful to hear lots of explanations. :-) | ||
I think it might be somewhat clearer once I see it in action, though. | |||
luqui | you can with pugs | ||
nothingmuch gets to fix a bug with Qt now | |||
oh joy | |||
luqui | play with $?CALLER_CONTINUATION | ||
Aankhen`` | luqui >> From which revision? | 10:17 | |
nothingmuch | btw, does pugs/perl have a syntax for more than just caller continuation? | ||
luqui | any revision fairly recent | ||
Aankhen`` | I haven't compiled today's dosage of Pugs. | ||
luqui | it'll be there | ||
Aankhen`` | Mine is at r4154. | ||
Corion | The key idea (in my opinion) to continuations is, that they allow you to do this: | ||
prompt("What is your name?") | |||
read_name(); | |||
print "<html><p>Your name is $name</p></html>"; | |||
... in a CGI/mod_pugs | |||
integral | ... without operating system support for threads | ||
Aankhen`` | Corion >> They allow you to leave semi-colons off statements? :-o | ||
Corion | Aankhen``: :) | 10:18 | |
Aankhen`` | ^_^_^ | ||
nothingmuch | another thing: | ||
luqui | Aankhen``, that variable refers to the caller's continuation, because the real "current continuation" is somewhat undefined if you use it as a variable | ||
nothingmuch | lets say you are implementing exception handling code: | ||
Aankhen`` | luqui >> OK. | ||
nothingmuch | CATCH { } puts the continuation to it's block in some global var | ||
luqui | Corion, you need serializable continuations for that | ||
Aankhen`` | Darnit... just as I thought I might have begun to understand coroutines, I start trying to understand this. :-P | ||
nothingmuch | sub die { $! = ...; go to CATCH continuation }; | ||
Corion | luqui: Or a persistent (single) interpreter | ||
luqui | hmm, I suppose you could do that with mod_parrot even without serializable continuations | 10:19 | |
coolness | |||
Aankhen`` | Corion >> I didn't really understand the CGI/mod_pugs example -- do you think you could explain it? | ||
nothingmuch | for flow oriented web applications one still needs a way to serialize and recreate (not thaw) connections | ||
Aankhen``: basically, when you prompt(); an html form is displayed | 10:20 | ||
and your program shuts down | |||
Corion | Aankhen``: Well. You understand the code - it is code you would use for a console application, right? | ||
Aankhen`` | Yes. | ||
nothingmuch | on the next invocation, the prompt() returns with the new value | ||
parsed from the QUERY_STRING, or whatever | |||
Corion | (nothingmuch explains much better than I do :) ) | ||
nothingmuch | and serializing that | 10:21 | |
it does thiis by getting a continuation to the part farming the QUERY string, and returning to the code that called prompt | |||
when the program restarts, the serialization is thawed, and invoked | |||
Aankhen`` | Hrm. | ||
nothingmuch | the code to get the QUERY_STRING stuff parsed is executed | ||
and then the subroutine returns | |||
since we know the callstack, it appears to the code calling prompt() that nothing changed | |||
Aankhen`` | I need to shower; I will come back and try to grok it once again. | 10:22 | |
BBIAB. | |||
nothingmuch | continuations have a nice property though - there doesn't need to be only one | ||
that's the hard part, i think | |||
mugwump prays for accurate parsefail line numbers when he wakes | 10:23 | ||
luqui | keep praying | 10:24 | |
we'd have to seriously think about all the try calls in Parser.hs | |||
mugwump | oh, is that why it takes so long to parse everything ;) | 10:26 | |
luqui | perhaps | ||
integral thought try == back-tracking | 10:27 | ||
luqui | yep | ||
integral | hmm? I thought perl6's grammar didn't need it? | ||
luqui | it doesn't really | ||
but it sure simplifies things | |||
integral | ah... | ||
luqui | LL(1) factoring a grammar is... nontrivial | 10:28 | |
nothingmuch | Aankhen``: c2.com/cgi/wiki?ContinuationPassingStyle, there's a good description in the middle: "CPS also lets you to represent first class continuations..." | ||
err, "Any "traditional" function or function call..." | |||
integral | oh, I thought the "doesn't need back-tracking" thing was designed into the grammar, rather than just being theoretically possible | ||
luqui | btw, &?CALLER_CONTINUATION.arity == 1. what is that parameter? | 10:29 | |
integral | the return value of the function? | ||
nothingmuch | also "Put another way:" - that's also a good desc for imperative heads | ||
integral | shouldn't: &?CALLER_CONTINUATION.(...) be the same as return(...) ? | ||
luqui | ahh yes | ||
duh | |||
thanks | |||
integral | would be nice if it behaved as a call rather than a jump though... 8-) | 10:30 | |
luqui | ? | 10:31 | |
how does it behave as a jump? | |||
integral | does execution ever reach the statement after it? | ||
luqui | if you pass it the current continuation | 10:32 | |
integral | ah. Can you do that though yet? | ||
luqui | I have yet to test it, but I think you can do: | ||
sub cc() { &?CALLER_CONTINUATION } | |||
then foo(cc) is like call/cc | |||
maybe | |||
integral | hmm! | ||
luqui tests that | 10:33 | ||
integral, yeah, it seems that works | 10:35 | ||
integral | ./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello" } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION) } my $b = a(); $b()' # I have no idea what this does... | ||
luqui | ack | 10:36 | |
luqui has to think about that | |||
integral | if you insert a "say 'foo2'" before the $b(); I was expecting, foo1, then foo2 and then hello | ||
luqui | I don't think you'll ever see hellp | ||
hello | |||
integral | hmm? But $b should contain the ret continuation for calling b just before the "say 'hello'" | 10:37 | |
./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello"; return { say "foo3" } } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION) } my $b = a(); say "foo2"; $b()' # makes a bit more sense | |||
luqui | no, &?CALLER_CONTINUATION is the caller continuation | ||
not the current continuation | |||
integral | doh | 10:38 | |
err, hang on, hmm? | |||
we call a(), then we call b() with the continuation that returns to where a was called, right? | |||
luqui | it represents the point just after the current sub *returns* | ||
yeah | |||
autark-jp | hm, installing perl5.8.6 did wonders. | ||
integral | so when I invoke $c in b() shouldn't it go to foo2 next? | 10:39 | |
luqui | autark-jp, it worked? | ||
autark-jp | yes | ||
luqui | we should find where that dep is | ||
I think so | |||
oh | |||
right, you can see hello | 10:40 | ||
luqui 's brain gets tangled up very quickly thinking about such things | |||
integral | hm, so invoking $c in b should do what pugs is doing: jump to before the "hello" ? | ||
luqui | invoking $c I think should take you to foo2 | 10:41 | |
and then invoking $b should take you to hello | |||
integral | yeah, I agree. | ||
luqui | I get a "cannot cast from VBool True" error when I run this program | 10:43 | |
integral | ./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello"; return { say "foo3" } } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION); say "foo1b" } my $b = a(); say "foo2"; $b()' # revised version | ||
It's because the second time you return from &a you need an appropiate return value again :-) | 10:44 | ||
Aankhen`` | nothingmuch, you still here? | 10:45 | |
luqui | still, it doesn't look like it's working right | ||
integral | *nod* | ||
luqui annotates every line with a say | 10:46 | ||
mugwump | right, I'm out. 'night all! | 10:51 | |
luqui | night | 10:52 | |
it's almost like &?CALLER_CONTINUATION is thinking it's the current continuation | |||
integral | that sounds a plausible explanation | 10:53 | |
luqui | I think that's what's happening | ||
Arathorn | wonder how long it'll take for someone to hack a flow-of-form-control-via-continuations module into Catalyst6 or Maypole6 (a la www-106.ibm.com/developerworks/libr...ntin.html) | 10:55 | |
luqui | what is maypole again? | 10:56 | |
nothingmuch | yes, i'm here | ||
Corion | Continuations have scalability problems and are interesting problems for load balancing | ||
(I still want them ;)) | 10:57 | ||
luqui | how so? | ||
Arathorn | maypole's a MVC framework jobby which stitches Class::DBI and Template::Toolkit together for extensible DWIM CRUDdy stuff | ||
Corion | luqui: You can't pass them around in a server farm ;) | ||
nothingmuch considers a new hard language | |||
luqui | you can if you serialize them | ||
Arathorn | i.e. catalyst's progenitor. | ||
nothingmuch | sort of like apl, except that each operation on an element generates a continuation | 10:58 | |
and collecting continuations into an array again requires some weird op | |||
preferrably in a remote section of the code | |||
luqui | so it would be like explicit lazy apl or something? | ||
nothingmuch | no, the point is to make life hard for the programmer by making all control flow jump arbitrarily through code | 10:59 | |
but the twist is that execution can fork | |||
Aankhen`` | nothingmuch >> In the CGI/mod_pugs example above, does prompt() call die()? | 11:00 | |
nothingmuch | and has to be recollected | ||
Aankhen`` | s/die/exit/ | ||
nothingmuch | Aankhen``: i have no idea | ||
i don't think it does | |||
Aankhen`` | Ah. | ||
Arathorn | "to talk to the wizard, turn to page 216... to explore around the room some more, turn to page 65..." | ||
:) | |||
nothingmuch | but see search.cpan.org/perldoc?Contize | ||
integral | sub prompt($p) { print $p; print &?CALLER_CONTINUATION.perl; exit } # a possible implementation, I suppose | ||
Aankhen`` | A'right. | ||
BBL. | |||
nothingmuch | Arathorn: exactly, except you do both at the same time, and have to know by heart that page 22 is where they are explicitly collected | 11:01 | |
ofcourse, the catch will be that *every* operations is like this | |||
Arathorn grins | |||
nothingmuch | and there are at least elements involved in each computation | ||
like the grep operation will explode | 11:02 | ||
Arathorn | it's a bit like the Real Programer story about using the timings on the magnetic drum memory to determine flow of control | ||
nothingmuch | and each coroutine will continue to one of two collectors | ||
integral | at least they didn't design parrot like that ;-) | ||
nothingmuch | the first collector is much like /dev/null, except that you'd have to implement that manually | ||
clkao | *yawn* | ||
nothingmuch | and the second will be where your grepped data winds up | ||
clkao | is there a release coming up? so new failed test should be marked as todo right? | 11:03 | |
nothingmuch | except it won't be boolean, it need multithreaded switch statements | ||
Arathorn | www.cs.utah.edu/~elb/folklore/mel.html but with continuations rather than gotos :) | ||
or a bit like doing something in prolog with all the effects happening on the backtracking... | 11:04 | ||
nothingmuch | hmm, not loading | ||
_asm add bp, difference | 11:07 | ||
beautiful! | |||
c2.com/cgi/wiki?ContinuationsInCee | |||
fudging the base pointer of the stack was something I always wanted to do when I played with assembler | |||
luqui | integral, I put in a test for that bug | ||
nothingmuch | except I never found out what *really* lies at the top of the stack | ||
integral | thanks luqui++ | 11:08 | |
luqui & | 11:09 | ||
broquaint | Is there a way to get the same information as (caller)[3] (i.e the caller's subname) presently in pugs? | 11:21 | |
Ah, $?CALLER::SUBNAME | 11:25 | ||
castaway nudges broquaint | 11:29 | ||
broquaint | 'lo there, c. | ||
Corion | Hmmm. Seems like smoking now takes about 1 hour, compiling and testing ... | 11:56 | |
nothingmuch | autrijus, gaal, theorbtwo: you are all co-maintainers on Test::TAP::*.. if there is something to be fixed just fix it, and try to do it with darcs so that the change can be propagated to the public repo | 11:57 | |
gaal|work | nothingmuch, i'll fix the t:m dep. thanks. | 11:58 | |
nothingmuch | i fixed it, read email =) | ||
oh wait, i didn't mail you | |||
so now you know anyway | |||
gaal|work | hah | 11:59 | |
ok, i WON'T fix it then. | |||
nothingmuch | FINE! SUIT YOURSELF! | ||
gaal|work | FINE. | ||
Arathorn | y'all need a staggered smoke farm | ||
nothingmuch | OKAY THEN! | ||
Arathorn: we do | |||
gaal|work | hey i know! i can use feather for the darcs thingamajoob. | 12:00 | |
nothingmuch | want to write Test::TAP::Model::Consolidated? it takes several Test::TAP::Models and presents them as one | ||
gaal|work | me? nonono. | ||
nothingmuch | no, Arathorn | ||
gaal|work | didn't stevan have an idea of how that should work? | ||
nothingmuch | not that I recall | 12:01 | |
it shouldn't be too hard | |||
gaal|work | there's a visual design aspect to this | ||
nothingmuch | all you have to do is subclass the Subtest one to be able to represent a disagreement | ||
and make HTMLMatrix know how to eat consolidated results too | |||
autark-jp | hm, it seems to me that test #7 of t/operators/quoting.t should be a TODO. It seems to succeed because the eval fails. | 12:47 | |
luqui | hmm, why does that eval fail? | 13:08 | |
ahh, no support for balanced brackets | 13:10 | ||
autark-jp | that's how I found it, it started to fail when I implemented balanced brackets :) | 13:11 | |
luqui | you did? | ||
autark-jp++ | |||
have you committed? | 13:12 | ||
autark-jp | need to learn how to commit... | ||
also need someone to look at the code. | |||
luqui | are you a committer? | ||
autark-jp | no | ||
luqui | okay | ||
did you p6c it? | |||
autark-jp | p6c what? | 13:13 | |
luqui | the patch | ||
autark-jp | oh, no. | ||
theorbtwo | seen autrijus | 13:40 | |
nothingmuch | is there a repository of mini languages? | ||
Limbic_Region | theorbtwo - [09:13] <autark-jp> oh, no. | 13:41 | |
nothingmuch | or are any of you guys a repository of mini languages? | ||
i'd like a toy langauge to try and implement in haskell as an excercize | |||
excercise | |||
Limbic_Region | about a half hour ago | ||
nothingmuch | Limbic_Region: autark-jp !~ autrijus | ||
castaway | try "/lastlog autrijus" love | 13:42 | |
theorbtwo | Wow, that's long. | 13:43 | |
castaway | umm, yeah, sorry :) | ||
theorbtwo | Anyway, the answer is 5-6 hours ago. | ||
luqui | nothingmuch, just make up your own | 13:48 | |
I had an interesting idea for a language | |||
it was order-free like latin (but then, that was already done) | |||
nothingmuch | luqui: my problem is lack of need | ||
luqui | oh | ||
nothingmuch | i don't know what to do with a language | ||
so i don't know what the language would want to do | |||
luqui | yeah, because perl is great for everything | 13:49 | |
hmm... | |||
prolog could use an overhaul | |||
you could write a logic language with forward and backward inference | |||
and I'd use it | |||
castaway | nm, SQL has a not too large set of things it can do.. | ||
(well, for a relatively simple SQL anyway.. try SQLites ?) | 13:50 | ||
nothingmuch | hmm | ||
that's a cute idea | |||
i think i'll look at examples | |||
draw ideas for purpose from there | |||
and see if i can do anything like that to it | |||
Corion | ext\fp\t\functions.t exhibits a bug within Pugs - the parser has holes it seems | 13:55 | |
Enveigler | Is there a smoke test harness, or somewhere to send pugs make test results? | 14:24 | |
gaal|work | there's no consolidation service yet, enveigler. | ||
Limbic_Region | nothingmuch - so in addition to all the other maladies - I am going blind too | 14:25 | |
thanks btw | |||
gaal|work | for now, post your HTMLMatrix somwhere and put a link here | ||
and, if you want to work on this, a consolidation service would be very nice to have :) | |||
kungfuftr | my work colleauge is suddenly converting to the Perl6 way of thinking... and he's loving it! | 14:26 | |
Enveigler | htmlmatrix? | 14:27 | |
PerlJam | kungfuftr: Are you using pugs at work? :-) | ||
gaal|work | kungfuftr++ # advocacy | ||
Enveigler, Test::TAP::HTMLMatrix is the module used to paint things like feather.perl6.nl/~gaal/smoke_xp.html | 14:28 | ||
kungfuftr | nope, just forcing him to read P6L and the synopses | ||
=0) | 14:29 | ||
Corion | Hmmm. I get *** Pattern match failure in do expression at src/Pugs/Prim.hs:92:4-14, but don't see what could be causing that | 14:30 | |
Ah. Except maybe that there is no (VObject o) to be had. Oh well, somebody will fix that hopefully :) | |||
Enveigler | Gaal: I was kicked. Where will I find the HTMLMatrix? | 14:31 | |
PerlJam | I'll be really shocked if perl6 ever starts to have converts from python | ||
gaal|work | got cpan? | ||
Limbic_Region | really kungfuftr - that's good news | ||
Enveigler | yes | ||
Limbic_Region | to be honest I abhored the p6 changes while I was reading p6.l | ||
it isn't until I started using it that I saw the light | |||
gaal|work | perl -MCPAN -e install\ Test::TAP::HTMLMatrix | 14:32 | |
it has a few dependencies. | |||
Limbic_Region | blessed is he who has seen and believed, more blessed is he that has not seen and still believes | ||
Enveigler | Okay. Presumably the rest becomes obvious from there? | ||
theorbtwo | make smoke | 14:33 | |
gaal|work | once you have that installed, you just 'make smoke' | ||
Enveigler | Okay. Thanks. | 14:34 | |
ninereasons | PerlJam, shapr might count as a convert from python | 14:40 | |
PerlJam | ninereasons: nah, shapr was already sane. He has never been a "python person". He's a "use what works" person. | 14:41 | |
pasteling | "Enveigler" at 195.92.67.67 pasted "HTMLMatrix install failure." (62 lines, 3.2K) at sial.org/pbot/10653 | 14:47 | |
Enveigler | Gaal: Any clues? | 14:48 | |
gaal|roo | can you try upgrading Test::More? | ||
oh, i'm not sure actually that that's the problem | |||
did Test::TAP::Model install correctly? | 14:49 | ||
(it's a separate distro; should have been pulled in as a dep by CPAN.pm) | 14:50 | ||
pasteling | "Enveigler" at 195.92.67.67 pasted "Test::TAP::Model install results." (45 lines, 2K) at sial.org/pbot/10654 | 14:52 | |
Enveigler | Gaal: Seems not. (It had scrolled off the top of the screen.) | 14:53 | |
gaal_ | sorry, having IRC troubles | ||
nothingmuch | Enveigler: you can try to install Module::Build | ||
and use 'perl Build.PL; ./Build test' | |||
Enveigler | Will do. brb | 14:54 | |
nothingmuch | i have a general hw question: someone asked me about a board for 2 cpus, and I quote "eight 184-pin .... DIMM sockets, each CPU controls 4" | 14:57 | |
anybody know what that means? | |||
different MMUs? | |||
this is a 64 bit board, btw | |||
amd opetron | 14:58 | ||
Arathorn | nothingmuch: as i understand it it's basically NUMA | 15:00 | |
nothingmuch | define: NUMA | ||
Arathorn | asking me or a bot? ;) | ||
non uniform memory architecture, iirc | |||
the SGI-pioneered multiprocessor technology | 15:01 | ||
castaway | National Unterwater Marine Agency | ||
:) | |||
nothingmuch | class Arathon does Google::Glossary { } | ||
Arathorn | hehe | ||
where each processor keeps a local cache of RAM, which is then kept coherent by a (single) funky MMU with banks of physical memory | |||
castaway | (Dirk Pitt)++ | ||
Arathorn | which in the past would have allowed a SGI Origin 2000 with 16 R10000 processors, for instance, each with 4MB of ~L3 NUMA cache, to talk to a bunch of discrete memory bricks, each with their own MMU? | 15:03 | |
gah, my SGI lore is rusty | |||
but I believe the AMD Hypertransport thing that duallie Opterons use is of the same ilk. | |||
x86-64.org is the canonical site, iirc. | |||
nothingmuch | does that mean that overall (memory/CPUS) is the maximum limit for VSIZE? | ||
Arathorn | shouldn't be | ||
pasteling | "Enveigler" at 195.92.67.67 pasted "Build test for Test-TAP-Model-0.03" (22 lines, 1.1K) at sial.org/pbot/10655 | ||
Enveigler | Does that help? | 15:04 | |
gaal_ | yes, upgrade Test::More | ||
Arathorn | but dunno for certain - our opterons are duallie capable but only have one proc | ||
gaal_ | or wait a few hours for your cpan mirror to get nothingmuch++ 's newer vesion of the module, which explicityl requires it | 15:05 | |
Enveigler | I'll upgrade | ||
nothingmuch | Enveigler: sorry for that ;-) | ||
Enveigler | No sweat. | 15:07 | |
gaal_ | someone with a wiki near them should write this all up :) pugs.kwiki.org | ||
nothingmuch plays on blead perl | 15:08 | ||
i needed it once | |||
and i keep being too lazy to downgrade to 5.8 | |||
what's worse, it's an old bleadperl | |||
gaal_ | congealedperl? | ||
castaway laughs | 15:09 | ||
nothingmuch | nothingmuch.vocabulary += gaal_.vocabulary | ||
(don't worry, i found out what it means) | 15:10 | ||
gaal_ | ōæ½xF4ōæ½xF8ōæ½xECōæ½xF7ōæ½xE5ōæ½xF9 | ||
only with another ōæ½xF8 | |||
i built a perl recently. | 15:11 | ||
last time i did it with any attention was on a sparc4 | |||
so i was immensely pleased that it now takes under four minutes :) | |||
Arathorn | last time I built a perl was on a SS2 (netbsd 1.4) :) | 15:12 | |
i seem to remember that it took about 4 hours.. | |||
Limbic_Region recently built perl and knows that it took far longer than 4 minutes | 15:13 | ||
gaal_ | well, Arathorn, it took me more than four hours to download the dev kit necessary for those four minutes ;-) | ||
Arathorn | hehe | ||
gaal_ | l~r, i was using a pretty fast box. and microsoft's compiler, which is fast. | ||
Limbic_Region | gaal_ - I have only built perl under Cygwin and mingw | 15:16 | |
Limbic_Region hasn't tried gcc 4.0 but he hopes it is faster than the previous versions :-( | 15:17 | ||
castaway | (hmm, I dont remember it taking that long last I did it, and mines a PII/350) | 15:18 | |
Enveigler | Smoke running. | 15:20 | |
nothingmuch | my builds of perl on moderate hw | 15:28 | |
when was a heavy CPAN toker | |||
were about 10 minutes, i thinj | |||
nothingmuch wrote an industrial strengh bong in bourne shell | |||
blead + stable perl | |||
threaded, non threaded | |||
5.6, and 5.005_03 | |||
all smoked latest CPAN once an hour | 15:29 | ||
CPANPLUS was not reliable enough though | |||
false positive rate was about 2-3 per dayh | |||
clkao: ping | 15:32 | ||
Limbic_Region | hmmm - perhaps I lumped configure make and make test all into the same time bucket - *shrug* | 15:34 | |
Enveigler | Gaal: Is a high failure rate expected? | 15:41 | |
gaal_ | are you perhaps on windows? the failing tests in t/rules/ ? | 15:42 | |
or any other platrform w/o parrot | |||
pasteling | "tag" at 208.152.32.185 pasted "dude." (53 lines, 1.3K) at sial.org/pbot/10658 | 15:43 | |
"Enveigler" at 195.92.67.67 pasted "Smoke results so far" (90 lines, 4.2K) at sial.org/pbot/10660 | 15:44 | ||
Enveigler | Yes to Windows. I have parrot, but I think I didn't set the right env vars before building it it. I'll fix that next time | 15:45 | |
gaal_ | Enveigler, these mostly look like crashes. without interrupting your running smoke, you can start looking at where the crash happens in a new command window: | ||
set HARNESS_PERL=pugs.exe | 15:46 | ||
set PERL6LIB=blib6/lib | |||
prove -vl ext\Perl-MetaModel\t\12_Perl_Meta_Class_methods.t | |||
Enveigler | I don;t have "prove"... gotta link? | 15:47 | |
gaal_ | oh, in this case you also want ext\Perl-MEtaModel\lib in your PERL6LIB | ||
you should have it if you installed Test::Harness.... | |||
Enveigler | Oh. Okay. | ||
gaal_ | but note that these are all ext\ , not pugs itself | 15:48 | |
by now i bet your smoke has entered t\ | |||
where you'll see fewer failtures | |||
Enveigler | Nope. It seems to be stuck on ext\Set\t\overload.t | ||
gaal_ | hmm, someone mentioned that may be looping | 15:49 | |
if you want to punt on a complete smoke, you can do a manual run of t/ only. | |||
1. set the env manually as above | |||
2. util/yaml_harness.pl --exclude=/^ext/ | 15:51 | ||
3. util/testgraph.pl > smoke_no_ext.html | |||
look at what util/run-smoke.pl does, it's basically these three steps | 15:52 | ||
you may want to start looking actually at the ''make smoke' target. | |||
brb | |||
Enveigler | overload.t was looping I had to kill pugs.exe | 15:54 | |
gaal_ | add a skip and commit it? | 15:56 | |
i have to go now | |||
back in ~1.5h | |||
see ya & | |||
Enveigler | okay. | 15:57 | |
gaal_ | before the skip put in a 'fail("loops")' | ||
]Anjo[ | Hi everyone. | 16:20 | |
theorbtwo | Hi, ]Anjo[. | 16:21 | |
theorbtwo wonders if svnbot is missing. | |||
s/missing/wedged/ | |||
]Anjo[ | How can I compare to dates to see what is earlier? | ||
My actual date is in the format DD/MM/YYYY HH:MM:SS. | |||
theorbtwo | ]Anjo[: Are you using pugs? | 16:22 | |
]Anjo[ | theorbtwo: Sorry, but what is a pug? | 16:23 | |
theorbtwo | ]Anjo[: I take that as a no. You want #perl, not #perl6. | ||
]Anjo[ | It's pretty hard to find help there. | 16:24 | |
:\ | |||
I'm using the version 5.8.6 of ActivePerl. | |||
integral | hhmm, doesn't look like you've been in #perl :-/ | ||
theorbtwo | ]Anjo[: Then try perlmonks.org. | 16:25 | |
wolverian | hmm, uc() doesn't take $_ by default? | 16:50 | |
oh, .uc :) | |||
I can't type Ā» on feather. the cursor jumps backwards one word instead. | 16:51 | ||
theorbtwo | wolverian: Type it where? | 16:53 | |
If you mean in something that uses readline (including bash and pugs), in .inputrc, "set convert-meta off". | 16:54 | ||
wolverian | ah. thanks! | ||
theorbtwo | Add it to docs/quickref/unicode? | 16:55 | |
wolverian | weird, though. it works fine locally with convert-meta on | ||
theorbtwo | Hm, that is odd. | ||
Never worked for me with convert-meta on. | |||
wolverian | okay, works now. thanks! | 16:56 | |
hmm. | |||
except now ^W deletes one character too many. | |||
I can erase the bash prompt. :) | |||
weird. in pugs, "Ā»".ord is 187; in perl5 it's 194 | 16:57 | ||
integral | it would appear that perl5 is wrong =) | 16:59 | |
wolverian | vim agrees with you | 17:00 | |
okay, perl5 does as well, with -Mutf8 | |||
integral | ah, so c2 must be Ā» in latin-1 | 17:01 | |
wolverian | does Ā» work in pugs? | ||
theorbtwo | Unicode and latin-1 agree in the first 255 codepoints. | ||
wolverian | unexpected "\187" | 17:02 | |
integral | hmm! | ||
theorbtwo | What you are seeing is the first byte of the utf8 encoding. | ||
...I suspect. | |||
integral | ah, yeah, perl5, which quietly ignores LANG=en_GB.utf-8 | ||
wolverian | integral: -Mlocale? :) | ||
clkao | no? | ||
theorbtwo | -Mopen=some stuff | 17:03 | |
integral | bah, work out the box dammit. | ||
theorbtwo | It did for a while, then people started getting confused when their binary files were suddenly not like they expected them to be. | 17:04 | |
wolverian | yes. legacy support :( | 17:05 | |
integral | obviously more people should use windows =) | ||
wolverian | okay. so postfix Ā» does not work | 17:06 | |
theorbtwo | The correct answer is that if you want binary, you should have used binmode, silly. | ||
wolverian | should look at the tests before trying | ||
gaal | er, no. | 17:12 | |
Prelude's open has ":layer<:raw>" | 17:13 | ||
rehi. | |||
clkao | ?eval { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "COME TO ME"}.('autrijus') | 17:23 | |
evalbot6 | Error: unexpected ( expecting expression | ||
gaal | clkao, you should submit a SummoningPrelude. :-) | 17:24 | |
clkao | ?eval my $x = { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "COME TO ME"}; say $x.("autrijus") | ||
evalbot6 | Error: unexpected ( expecting expression | ||
clkao | ya.. :) | ||
SamB | that is an odd thing to say... | 17:25 | |
gaal | except that you need to hack it so that it does get loaded in unsafe mode, unlike the standard prelude. | ||
clkao | ?eval my $x = { ((uc($^a)~" ")x(70/(1+$^a.chars)))~"COME TO ME"};$x.("autrijus") | ||
evalbot6 | Error: unexpected ( expecting expression | ||
geoffb | While I wait for pugs to build on this ancient machine, a question: | 17:31 | |
I can't seem to get hs-plugins to compile on my Debian Sarge box. Not being lambdafolk, I don't really know what's wrong, except that it seems to be looking for a Haskell package I don't have. | 17:32 | ||
Checking for exact error message: | |||
gaal | there were a few broken versions, geoffb, though i can't say which ones are known good. | ||
geoffb | make[2]: Entering directory `/home/geoff/darcs/hs-plugins/src/plugins' | 17:33 | |
Rebuilding dependencies ... Could not find module `Language.Haskell.Hsx': | |||
Hmmm. I first tried the latest tarball, and that exploded fairly early in the build with a syntax error, | |||
so then I pulled the darcs version, and it gets farther but dies with the above error. | |||
gaal, did you get it working on your system? | 17:36 | ||
lumi | geoffb: Did you read the readme? | 17:37 | |
gaal | no: i used to, with a very old version, but then when the required ver changed, it stopped working and i didn't have tuits to see why. | ||
geoffb | lumi, for hs-plugins? Yes. | ||
lumi | So you have HSX installed? | 17:38 | |
And registered, I think it needs to be | |||
geoffb smacks his forehead | |||
Man, I looked right AT IT AND MISSED THAT LINE | |||
sigh | |||
I think I went "GHC > 6.2, check. GNU make, check. *eyes cross* *eyes uncross* Readline, check . . . ." | 17:39 | ||
lumi | Hehe | 17:40 | |
ninereasons | ?eval my $x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; say $x.("autrijus") | 17:41 | |
evalbot6 | Error: No compatible subroutine found: "&say" | ||
geoffb | You know, the nice thing about pugs is that its serving as an excuse to learn a lot of things unrelated to Perl . . . :-) | 17:42 | |
ninereasons | ?eval my $x = -> $a { return ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; $x.("autrijus") | ||
evalbot6 | Error: cannot return() outside a subroutine | ||
ninereasons | ?eval my &x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; &x.("autrijus") | 17:43 | |
evalbot6 | 'AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS TEST' | ||
ninereasons | ?eval my &x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; &x("autrijus") | ||
evalbot6 | 'AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS TEST' | ||
ninereasons | ?eval my &x = { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "TEST"}; say &x("autrijus") | 17:44 | |
evalbot6 | Error: unexpected ( expecting expression | ||
revdiablo | it would be neat if we could define functions, and evalbot saved them for the next invocation | ||
ninereasons | yes, the closest thing is to teach perlbot to invoke something learned | ||
perlbot metacommit? | 17:45 | ||
perlbot | ?eval my &summon = sub { return "#Summoning metacommitters:\n any("~uc( @^metacommitters )~ ").come_to_me";}; summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo> | ||
evalbot6 | Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
ninereasons | mislearned :-) | ||
Khisanth | heh | 17:48 | |
ninereasons | perlbot metacommit? | ||
perlbot | ?eval my &summon = sub { return "#Summoning metacommitters: any(" ~ uc( @^metacommitters ) ~ ").come_to_me";) summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo> | ||
evalbot6 | Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
ninereasons | :-( | ||
Khisanth | what is @^metacomitters? mainly the ^ | 17:49 | |
geoffb | It would be nice if it reported which quote it thought was bad . . . | ||
PerlJam | Khisanth: $^foo is an implicit parameter. | ||
Khisanth: @^foo too | 17:50 | ||
ninereasons | It doesn't seem to like implicit parameters | ||
Khisanth | PerlJam: I know but didn't know how to apply that to arrays, nothing obvious popped up | ||
ninereasons | I think it would work in pugs. a sec | ||
Khisanth | ninereasons: aren't you missing the } for the sub {? | 17:51 | |
ninereasons | perlbot metacommit? | ||
perlbot | ?eval my &summon = sub { return "#Summoning metacommitters: any(" ~ uc( @^metacommitters ) ~ ").come_to_me";} summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo> | ||
evalbot6 | Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
Khisanth | ; after the }? | 17:53 | |
geoffb | WOW, no wonder pugs is taking forever to compile -- ghc-6.4 wants more RAM than I have in this box. | 17:58 | |
Lets try that unoptimized *cough* *cough* | |||
Khisanth | heh building pugs here pushes everything into swap | 17:59 | |
that reminds me ... | |||
gaal | anyone know if we have flight plans for tonight? | 18:09 | |
geoffb | make test + ancient hardware = Jeopardy! theme | 18:28 | |
Khisanth | how ancient? | ||
seems to be mainly a memory issue | 18:29 | ||
integral reckons on 8 hours on a 600MHz 64MB box | |||
geoffb | Dual PII - 400 | 18:30 | |
integral, *cough* | 18:31 | ||
Ouch | |||
integral | it's the memory that's the killer, it only took about 200 minutes on a 500MHz 1024MB box | ||
geoffb | Khisanth, the original build was heavily mem-bound (hell, ld wanted 129 MB, and I haven't even enabled Parrot embedding) | 18:32 | |
during the pure testing, it doesn't seem to be thrashing. | |||
a couple swapped pages per minute | 18:33 | ||
Khisanth doesn't do testing | |||
integral | the trick is to just commit anyway and let someone else spot that there's a bug ;-) | ||
geoffb chuckles | 18:34 | ||
One wonders how often autrijus does a full make test, rather than just for the todo he's working on. I'm having a hard time extrapolating this make test time even to bleading edge hardware and still supporting his commit rate | 18:35 | ||
gaal | it actually was much faster two weeks ago | ||
geoffb | gaal, what changed? | 18:36 | |
gaal | one one machine i almost got to a two minute smoke | ||
lots and lots and lots of tests were added | |||
and rules support | |||
(two minutes sans build) | |||
we have over 7k tests now(!); it was around 4k when it was fast. | 18:37 | ||
Khisanth | "if make test finishes in 2 minutes then we need more tests!" :) | ||
geoffb | I'd be happy with 20 minutes . . . . | 18:38 | |
gaal | make test never finished in 2 minutes :) make smoke is potentially faster (supports concurrency) | ||
Khisanth | ~33minutes to build :) | 18:39 | |
gaal | fwiw, the fast smoke was ~135 sec on a dual xeon 2.8GHz w/1GB RAM | ||
Khisanth | on 750MHz with 256MB | ||
gaal | and when i tried putting it on a ramdisk there was no noticable speedup, it's all cpu bound. | 18:40 | |
Khisanth | hrm | ||
readline seems to have broke | |||
gaal | so's the pugs build, certainly if you make optimized. | ||
a parallel ghc build would be nice to have. | 18:41 | ||
Khisanth | ok apparently it doesn't like having stuff pasted | ||
geoffb | gaal, yeah, it's only taking a few % of the system RAM (~14 of 192 MB), but one CPU is pegged | ||
(for make test) | 18:42 | ||
gaal | you have more than one? then use the yaml harness and use -j 2 | ||
or 3 | |||
Aankhen`` | Are you supposed to use -j 2 for Intel HT CPUs? | ||
geoffb | yaml harness? | 18:43 | |
gaal | it helps on my box, aanken. not a lot, but some. | ||
geoffb | (YAML, I grok) | ||
gaal | geoffb, 'make smoke' instead of 'make test' | ||
Khisanth | interactive pugs not working very well with mutiple lines of input... | ||
geoffb | OK, will try | ||
gaal | what platfomr are you on, before you do? | 18:44 | |
works well on unix, less so on win | |||
though it does workforme | |||
geoffb | $ uname -a | 18:45 | |
Linux zuma 2.4.27-2-686-smp #1 SMP Thu Jan 20 11:02:39 JST 2005 i686 GNU/Linux | |||
How to make X unresponsive, in 1 easy step | |||
phew | |||
right, seem to need Test::TAP::stuff | |||
gaal | k, then please backlog earlier today re: instructions on installing Test::TAP::HTMLMatrix | ||
geoffb | heh | ||
gaal | :) | ||
also please put it on pugs.kwiki.org | 18:46 | ||
Aankhen`` | Do continuations work in Pugs? Are there any working examples? | 18:47 | |
gaal | there was some talk about that too, earlier today | 18:48 | |
integral | luqui and I identified a bug with them | ||
Aankhen`` | Oh yeah, I was there. :-o | ||
Aankhen`` slaps himself. | |||
That's what lead me to reading up on them in the first place... | |||
Now I remember why I had that tab open in Firefox. :-P | |||
gaal | circular curiosity | 18:49 | |
Aankhen`` | integral >> Anything I could understand? | ||
integral | Just that &?CURRENT_CONTINUATION seemed to return a value that always invoked the current continuation at the time of being invoked, rather than saving the continuation | ||
Aankhen`` | Apparently not. :-( | ||
gaal | oh man! Set/overload.t is still looping! :( | 18:50 | |
there goes that smoke. | |||
r4274 - skipped loopy test | 18:59 | ||
Enveigler | Sorry Gaal I don;t have commit. | 19:04 | |
gaal | no worries :) we should get you one. | 19:05 | |
gaal looks for a metacommitter | 19:06 | ||
Enveigler | I've gotta pretty graph from the smoke if you want it? | ||
gaal | sure, post the url here | ||
Enveigler | I don't have anywhere to post it. I could email it? | 19:07 | |
gaal | sure, but please gzip first :) | ||
Enveigler | will do...addy? | 19:08 | |
gaal | ./pugs -e 'print <gaal>; print <@>; print <forum2.org>' | ||
Enveigler | I send it along later... Got go for a while. | 19:10 | |
gaal | Thanks. | 19:11 | |
beh, tireditude caught up. see y'all tomorrow. | 19:14 | ||
geoffb | cya | ||
gaal zzzZZ & | |||
Limbic_Region | autrijus must be busy - no journal since the 30th | 19:40 | |
q[merlyn] | fglock is doing a perl6 talk at YAPC Brazil | 20:23 | |
I'm sitting in here. If I knew how to stream this, I would. :) | |||
qual o promebla que Perl 6 Resolve? :) | 20:24 | ||
Odin-LAP skilur ekki portĆŗgƶlsku. | |||
(Meaning: I don't understand portuguese. Or, for that matter, spanish.) | 20:25 | ||
ero | anyone know approx build times on a g4? i'm on a dual 500, 1G. maybe i should go get some lunch... | 20:31 | |
q[merlyn] | ugh | 20:33 | |
ero | and then dinner | ||
q[merlyn] | so 6 != ( 4 & 5 ) is true? | ||
not the same as not ( 6 == 4 & 5 ) | 20:34 | ||
(which would be false) | |||
Man... I gotta work to get my head around this | 20:36 | ||
eric256 | why aren't they the same? | 20:38 | |
i get the answer you expect for all | 20:39 | ||
!eval 6 != (4 & 5) | |||
@eval 1 | |||
where is eval bot when you need him | |||
pugs> 6 != ( 4 & 5 ) | |||
(bool::true) | |||
pugs> not (6 == ( 4 & 5 )) | |||
bool::true | |||
Shillo | Hullo, all! | 20:40 | |
wolverian | ?eval 6 != ( 4 & 5 ) | ||
evalbot6 | (bool::true) | ||
wolverian | (for eric256) | ||
eric256 | ?eval not ( 6 == 4 & 5) | ||
evalbot6 | bool::true | ||
eric256 waits for merlyn to return | 20:41 | ||
Shillo eyes evalbot6. | |||
Is that thing secure? :) | |||
eric256 | yes | ||
Shillo | Cool! :) BSD jail or expression policing? | 20:42 | |
integral | pugs' safe mode :-) | ||
Shillo oooooooooohs! | |||
Juerd | Shillo: That depends on your definition of security. | 20:43 | |
I wonder, for example, whether its limited on memory use :) | |||
Shillo | *grin* | ||
Juerd | ("foo" xx 9e10) | ||
Shillo | Or **1..Inf | ||
integral | it's got resource limits too :-) | 20:44 | |
Juerd | Pugs doesn't do that yet, Shillo | ||
integral: Good | |||
Shillo | Juerd: Theoretically speaking. :) | ||
Juerd | So I can just do this? Fun! | ||
integral | see examples/network/evalbot/ | ||
Shillo edges away from Juerd... | |||
Juerd | ?eval ("foo" xx 9e10); undef; | 20:45 | |
evalbot6 | undef | ||
Juerd | Hm :) | ||
?eval ("foo" xx 9e10); | |||
evalbot6 | pugs: out of memory (requested 1048576 bytes) | ||
Juerd | Nice. | ||
Shillo claps! | 20:46 | ||
Juerd | Now, why did the former just return undef? :) | ||
I thought pugs had no optimizations yet? :) | |||
integral | 'tis probably the evil of Haskell ;-) | ||
Shillo | ?eval 1/0 | 20:47 | |
evalbot6 | Error: Illegal division by zero | ||
Shillo | ?eval 1/0; 5; | ||
evalbot6 | Error: Illegal division by zero | ||
Shillo | I think out of memory is unthown exception? | ||
Unthrown | 20:48 | ||
integral | ah, _that_'d be smart | ||
Shillo | I think it'd be wrong thing to do, but I wondered if it explains it. :) | 20:49 | |
eric256 considers starting a Perl6::Util box of trix for arrays...so you could do things like @list.shuffle; or @list.combinations, @list.powerset .. ;) | 20:53 | ||
Shillo | I still wonder what a powerset is. :p | 20:58 | |
eric256 | every possilbe combination of the items in a set for everything length of up to the lenght of the original set? something like that. its what i think of when i here combinations..but someone told me (and i'm not sure i buy it) that a set of combinations is normaly all combinations of a certain length. blah. ;) | 20:59 | |
japhy | that | ||
that's the powerset | |||
eric256 | either way most common questions about arrays are, how do i shuffle it, how do i get combinations, how do i get permutations...so it would be cool if they were included..but then we might be leaning the way of PHP which is just bad. ;) | 21:00 | |
Shillo | Why? STL has that stuff, and that's C++. :) | 21:01 | |
(most of it, at least) | |||
eric256 | yea STL always scared me too. but then i always have fun writing that stuff. ;) | ||
Shillo | eric256: I kinda got used to it, actually. Well, did lots of stuff in C++, so I had to. | 21:02 | |
eric256 | i wrote my own hash class in C++ (for a script language i wrote) and then like five days later found out about STL lol. | ||
Shillo | eric256: *grin* Have you figured what type traits structs are for? | ||
eric256: /That's/ the cool bit. | 21:03 | ||
eric256 | i wrote a hash, which required a linked list, (hand coded both - simple enough) then realized i had this nice hash table in the background to handle the script, why not let the script use it, then my scripts had hashes...then i found perl (first language i've ever seen with hashes built in.) and loved it. it was exactly what i was trying to make why my little language ;) | 21:04 | |
no traits still have me confused | |||
Shillo | Basically, if you have vector<string> a, b; ....; a = b; it'll call string operator= for each element of b. | 21:05 | |
eric256 | not so much confused as i'm just used to perl as is, so all these bells and whistles throw me off some. | ||
Shillo | But if a and b are vector<int>, STL will actually call memcpy in most implementations. | ||
eric256 | we talking C or perl now? i got lost | ||
Shillo | STL, in C++ | 21:06 | |
STL is smart enough to know when it should do for (i = 0; i < ...; i++) a[i] = b[i] and when it can just do memcpy(something) | |||
eric256 | ahh yes. the macro/overloading type handling it does is pretty cool, this was years ago i played with it though, never touched C++ agian...no use for it in my job and its such an ugly (in a beatifull kind of way) language. lol | 21:07 | |
Shillo | And it doesn't rely on compiler's optimizer to do this. | ||
Yeah. :) | |||
Ugly and evil, but can be fun. | |||
I actually tried to work with Monads in C++. | |||
Had fun watching gcc blow up to 500 megs just compiling a small example. | |||
eric256 | yea when i finished my script language and had like 15 files and like 5k of code it was cool. then i looked at it a few years later and was like "i could do that in half the code" ;) | 21:08 | |
geoffb | Shillo: yes, evil is what came to mind when I read what you said STL optimizes internally. EWWWw. | ||
Shillo | geoffb: They trick is -how- it does it. | ||
geoffb | Summary? | ||
eric256 | c++ was light years ahead of perl in classes until just recently though so this will be fun | ||
Shillo | You can use the same mechanism to define string class that has case-insensitive comparisons. | ||
You override stuff on char, not string. | 21:09 | ||
Oh, you do template<T> struct type_traits { stuff; } | |||
Then you specialise: template<> struct type_traits<int> { stuff optimised for ints } | |||
geoffb | So it's got specialized versions for some large percentage of "common cases"? | 21:10 | |
Shillo | Templates are actually programmable. You can do some *VERY* nasty tricks to actually introspect the types. | ||
In particular, you can query a class for the existence of a constructor and specialise on that. | |||
geoffb | See, for a compiled language, that's just deeply wrong. | 21:11 | |
Shillo | geoffb: Well... depends. | ||
geoffb tosses another entry on the "Why C++ gives me the heebie-jeebies" list | |||
Shillo | geoffb: I've seen implementation of ML (pure-functional language that looks a lot like Haskell, except that it's eager) in templates, to be used compile-time | 21:12 | |
geoffb actually physically shivers. | |||
Shillo | And yes, you're right to be scared. :) | ||
geoffb | In my mind, if you want C, use it. If you want Haskell, use that. Don't try to make C(++) into Haskell | 21:13 | |
Shillo | Frankly, C++ is nice for its libraries. And the compile times pretty much negate the advantage. | ||
geoffb: C++ templates -are- pretty close to Haskell. | |||
So C++ is runtime-assembler and compile-time Haskell. | 21:14 | ||
-That-'s what's scary. | |||
geoffb | I recall some time ago thinking "If C had a decent default set of data structure and algorithm libraries standardizes, I wonder if C++ would have happened?" | ||
Shillo, yikes. | |||
Shillo | geoffb: Look at D. | ||
My guess is no. | |||
You find that out 5 seconds after typing make on a mid-sized program in D. | 21:15 | ||
Actually, <1 second after typing make. Usually. ;) | |||
Aankhen`` | G'night. | 21:16 | |
geoffb | And in my raw C work, I was damn glad when some open source data structure libs came around. glib, ferinstance. With that I could have more convincingly told my Compilers prof to take a flying leap when he insisted on teaching the class in Common Lisp "because C doesn't have decent list libs" | ||
geoffb googles D | |||
Shillo | *grin* Hey, no dissing my favorite language. ;) | ||
Good luck googling 'D'. ;) | |||
Corion | . o O (By nature, C can't have decent lists) | ||
Shillo | Corion: Well, the reason is still lame. There are plenty other reasons to teach in Common LISP. | 21:17 | |
eric256 is amused to see that his code is still the only scripting language released on planetsourcecode after three years... lol.okay so i'm a dork but at least i know it | |||
Corion | Are we moving towards a release? | 21:18 | |
geoffb | www.digitalmars.com/d/comparison.html | 21:19 | |
Shillo | eric256: Well, one thing that attracted me to perl6 is that it's the first non-Common LISP language to try an actual feature parity with Common LISP. | ||
geoffb | Velly intellesting | ||
Shillo | geoffb: Pity it's a one (small) company project. | ||
Corion | Shillo: I think that most of Common Lisp is in Perl5 already | ||
geoffb | I googled for "D Programming Language" . . . hit the lucky | ||
Shillo | Corion: 'Most' of Common LISP are defmacro and CLOS. Neiter is in perl5. | 21:20 | |
Corion | Shillo: Ah, macros, true :) | ||
Shillo | Corion: But perl6 macros are getting there. And perl6 object system is actually surprisingly similar to CLOS. :) | ||
Corion | CLOS would need to be implemented in Perl (yet nobody wants that ;) ) | ||
Shillo | Well, I've seen CLOS implemented in Emacs LISP. That was scary. | 21:21 | |
Corion | Yeah - I wonder what people will do with multimethod dispatch :) | ||
Shillo | Heh, there's plenty of theory on how it should be done. | 21:22 | |
Or rather, a number of caching algorithms that seem to work well. And also a large body of LISP code for statistics | 21:23 | ||
(I believe they measured that about 99% of CLOS method calls are single dispatch, and can be handled that way) | |||
And of that, a large portion doesn't need any dispatch at all. | |||
geoffb | I read something recently in which the author (Paul Graham?) wondered whether people who disliked LISP could actually be stuck on the visual representation, but he thought it unlikely. Well, I happen to be one of those people. I actually think some of the *concepts* are good -- I just am very visual about my code, and the look just kills me. | 21:24 | |
Corion | geoffb: Look at Python then. I also hear that Haskell is considered nice. | ||
geoffb | I swore off lispish languages after being force-fed them in college. Sure makes learning Emacs a pain . . . | ||
Shillo | geoffb: I believe somebody came up with a theory that more adequately explains LISP lack of popularity. It's used for teaching... :) | 21:25 | |
Corion | geoffb: Or write yourself a small read-eval loop and come up with your own syntax. Like every good Lisp programmer ;) | ||
geoffb | Corion, I am deeply into controlling my whitespace. I would have serious words when the interpreter didn't like my reindentation. :-) | ||
Shillo | Corion: Eh. I start the day with (defmacro defclass (...) my extensions to CLOS) | ||
Corion | Shillo: Any language used for teaching traumatizes the teached :) | ||
Shillo | Corion: Exactly! | 21:26 | |
geoffb | Shillo, heh. Sorta like Catholic school is the biggest producer of Atheists? | ||
Shillo | geoffb: Or even catholic religious classes. | ||
geoffb: Count me among de-converted. ;) | |||
Corion | I do the same when programming in JavaScript. Object.method = function(name,code) { ... } // :)) | ||
geoffb chuckles | |||
eric256 | maybe thats why my teacher used pascal...no one ever misses not having pascal in the real world | 21:27 | |
geoffb | eric256, NODNODNOD | ||
Shillo | eric256: *grin* I graduated on Pascal and FORTRAN. :) | ||
Corion | Ah - I mostly started programming in Pascal and it's a good language. But it's a compiled language :) | ||
geoffb | I was looking into trying to get a teaching cert to teach comp sci to high schoolers . . . but then I realized it would be about two decades before the school boards allowed you to teach a nice language. Sigh. | 21:28 | |
Shillo | Corion: Buh, so's LISP. :) | ||
Corion | Shillo: Yeah, but Lisp has (EVAL ...), which Pascal lacks ;) | ||
Shillo | Corion: It's just that my favorite Common LISP turns REPL straight into machine code... /That/ blew me away. | ||
Corion: I like abusing my non-LISPer friends with (defun f (x) (1+ x)) (disassemble #'f) | 21:29 | ||
geoffb | Shillo, *chuckle* Nice. | 21:30 | |
Shillo | First line of the result: ; 0901832E: 8B55F4 MOV EDX, [EBP-12] ; no-arg-parsing entry point | ||
:) | |||
(that's in SBCL) | |||
Corion | SBCL ? (the CL part is clear ;) ) | ||
Shillo | Steel Bank Common LISP | 21:31 | |
Corion | Never heard of that | ||
Shillo | CMUCL compiler fixed to be actually maintainable. | 21:32 | |
geoffb | Why does the make for pugs insist on recompiling Pugs.Help all the time? | 21:35 | |
PerlJam | geoffb: probably because that's where the version number is. | ||
geoffb | Ah! | 21:36 | |
eric256 | i keep checking the journal in vein. lol. a whole day without a post! lol | ||
Shillo | eric256: <AOL> Me too, me too!!! </AOL> | 21:37 | |
geoffb | eric256, I may go into withdrawal. I'm starting to feel the shakes come on | ||
Time to start trying to port some real p5 code to pugs | 21:44 | ||
autrijus | greetings. | 21:50 | |
<- slept some 20 hours in the past 24 | |||
geoffb | and to you | ||
good for you! | |||
clearly needed | |||
autrijus | indeed | ||
mugwump | hi autrijus | ||
autrijus | hi folks. sorry for the delayed release. we'll enter preflight in ~1hr | ||
mugwump: | 21:57 | ||
lib/Set.pm is found in both MetaModel and Set | |||
one has to go | 21:58 | ||
pick one to delete | |||
(or to rename) | |||
q[merlyn] | is MetaModel deliberately *not* like Smalltalk? | ||
mugwump | oh, sorry :} | ||
q[merlyn] | it seems like it's making the same mistakes that Smalltalk-72 fixed in Smalltalk 76 | ||
autrijus | q[merlyn]: what is that mistake? | 21:59 | |
q[merlyn] | you don't have an infinite recursion, if you think about it right | ||
so you don't have object, metaobject, metametaobject | |||
when I saw that, I started to cringe | 22:00 | ||
autrijus | mugwump: I'm not sure the toplevel namespaces you have in MetaModel/lib/*.pm is a good idea | ||
q[merlyn] | that's what they fixed from 72 to 76 | ||
autrijus | q[merlyn]: oh. but I thought there's finite abstraction level -- namely 3 | ||
and the metameta thing merely means "implementation level" | |||
q[merlyn] | Even so. that's too many | ||
it should be reflexive. | |||
Should I find a reference on how st80 does it? | 22:01 | ||
or are you already familiar with that? | |||
autrijus | it is reflexive iirc, but indirectly so. no, I'm not familiar with all of this -- stevan and mugwump are the people working on metamodeling | ||
s/all of this/any of this/ | |||
q[merlyn] | OK... well, mark me as "concerned" that the mistakes of st72 are being made. | ||
autrijus | duly marked. | 22:02 | |
mugwump | q[merlyn]: well, hopefully there will be a point where one level can cleanly represent itself | ||
q[merlyn] | I have been too distracted to create a detailed report | ||
autrijus | (not that the metamodel docs you see is not implemented, at all, in pugs) :-) | ||
s/not/note/ | |||
autrijus clearly can't type. | |||
mugwump | q[merlyn]: that certainly is interesting to hear, anyway. Keeping each type level distinct was more of a precaution | 22:03 | |
autrijus | mugwump: so will you fix the toplevel module in metamodel space | ||
mugwump: or should I do that? | |||
mugwump | I'll do it now | ||
autrijus | k thanks! | ||
mugwump | I'll move them all to Perl/ I think | ||
autrijus | fine by me | ||
clkao | greetings autrijus | 22:04 | |
mugwump | q[merlyn]: refer also src/Pugs/Class.hs line 33 ;) | ||
q[merlyn] | good starting point - c2.com/cgi/wiki?DesignPrinciplesBehindSmalltalk | ||
clkao | see nmy new p5 array tests? i also documented what's missing in README | ||
q[merlyn] | there's nothing above "metaclass" | ||
so when I started seeing "metametaclass", my spidey sense tingles. | 22:05 | ||
mugwump | q[merlyn]: oh, right. So there still is a metaclass, you can't just get away with normal classes | ||
autrijus | clkao: good. | ||
clkao | autrijus: push and store failed in weird way, i suspect it's because the initial val isn't mared as rw when it came to p5 land and kept in tied | 22:06 | |
you have time to take a look? | |||
q[merlyn] | for every "class", there's an instance of Class, and an instance of Metaclass. | ||
but since Class and Metaclass are also classes, the definition applies as well | 22:07 | ||
that doesn't lead to metametaclass unless you are smoking something. :) | |||
Corion | Current (Win32) smoke status - datenzoo.de/pugs/win2k.html - 7268 ok, 187 failed, 940 todo, 447 skipped | 22:08 | |
autrijus | so I think it's the same as the model in stevan's docs | ||
Corion | (and some of that are due to my broken test tree) | ||
q[merlyn] | 4 class => Integer | ||
Integer class => Integer class | |||
Integer class class => Metaclass | |||
mugwump | q[merlyn]: ok, I've just been bitten before by mixing the levels (crossing the streams?) | ||
autrijus | by "metametaclass" I think it means the concrete implementation of metaclasses | 22:09 | |
not visible from the language at all | |||
q[merlyn] | well - it confuses me. | ||
autrijus | i.e. only of interest in the compiler level | ||
mugwump | However, note also that Class traits are effectively changes to the MetaModel | ||
clkao | autrijus: and eta of ref of scalar to be properly passed in mkvalref? | ||
q[merlyn] | But "metaclass" is concrete too | ||
mugwump | So you need a M3 to represent that | ||
autrijus | q[merlyn]: it's only concrete if Smalltalk is implemented in Smalltalk | ||
otherwise you have two different levels of concreteness. | |||
eric256 | since classes and metaclass are classes what does metaclass class => ? | 22:10 | |
eric256 not trying to join the fray, just curious | |||
mugwump | classes aren't metaclasses, eric256 :) | ||
or vice versa. they exist on different levels of the type heirarchy without a common root | |||
eric256 | "10q[merlyn]: 01but since Class and Metaclass are also classe"... that is where i was asking from. /me goes back to just listening. ;) | 22:11 | |
mugwump | sure. They both .does(Class), for some notion of Class, perhaps | ||
q[merlyn] | download www.squeak.org and ask that yourself. :) | 22:12 | |
autrijus | squeak++ | ||
stevan | q[merlyn], autrijus, mugwump: the code in MetaModel (at least the stuff I wrote) is wrong | ||
q[merlyn] | well. it's important to keep the protocol for class separate for the protocol for an instance | 22:13 | |
autrijus | good that I never looked at the code :D | ||
q[merlyn] | an instance can't .new | ||
a class can .new | |||
mugwump | a metaclass can .create | ||
stevan | q[merlyn]: I have a perl5 version I have been working on, pugs was getting to slow for all the stuff it was doing | ||
mugwump | or something :) | ||
q[merlyn] | so the "class" that implements .new must be the metaclass | ||
but that's as far as it needs to go | |||
there is no need for a metametaclass | 22:14 | ||
stevan | autrijus: some of that code is good, at least the stuff which makes up the peices of the metamodel | ||
q[merlyn] | the metaclass can't .new | ||
mugwump | q[merlyn]: in a way, I've already explored this space with T2.. | 22:15 | |
q[merlyn] | "t2"? | ||
mugwump | T2.pm is a metamodel on CPAN for Perl 5 that is capable of expressing itself | ||
q[merlyn] | because the metaclass has a sole instance | ||
mugwump | but I needed to bootstrap it via Class::Tangram | ||
stevan | the metaclass is the cycle in the model | ||
it is an instance of itself | |||
q[merlyn] | No it'snot | ||
it's an instance of class | |||
stevan | ? | ||
q[merlyn] | that's where the breakdown was in st72 | ||
they fixed that in st76 | 22:16 | ||
stevan | odd, not according to my Smalltalk80 book | ||
q[merlyn] | and thus in st80 | ||
there are no things that are an instance of themselves | |||
go read your st80 book again | |||
or maybe you have the bad book. :) | |||
stevan | its the Goldberg/Robson book | 22:17 | |
q[merlyn] | You read it wrong then. | ||
it never says that anywhere. | |||
Class is an instance of Class class | 22:18 | ||
Metaclass is an instance of Metaclass class | |||
stevan | yes | ||
sorry thats what I mean | |||
q[merlyn] | Metaclass class is an instance of Class | ||
Class class is an instance of Class | |||
autrijus | I suggest we drop the "metametaclass" nomenclature and call it "encoding of metaclass in the host language" or something :) | ||
q[merlyn] | aut++ | ||
that'll work for me | |||
stevan | autrijus: I have done that in the perl 5 model | ||
Meta::CLass is the root | |||
I also have a Instance protocol object | 22:19 | ||
and I am working on a class protocol objet | |||
I broke out the method dispatcher too, but thats a different thing | |||
mrborisguy | what's the story on people like me submitting tests? should i run by somebody what i'm going to submit before i do, or just do it? | 22:20 | |
autrijus | mrborisguy: if you feel like discussing it, sure | ||
mrborisguy: but otherwise jfdi | |||
it's all up to you :) | |||
stevan | mrborisguy: wiki-style development, if its wrong, someone will fix it eventually :) | ||
mrborisguy | haha, alright | 22:21 | |
stevan | q[merlyn]: are you going to be at YAPC::NA? | ||
autrijus finds "wiki-style" much easier to sell than "anarchistic" | |||
q[merlyn] | stevan - it's in the wrong country | ||
US Felons cannot travel to Canaada | |||
stevan | scares less people off too | ||
ahhh | |||
ok | |||
autrijus | aw. poor merlyn | ||
mrborisguy | you're really a felon? | ||
stevan | well I would be very interested in talking about the metamodel more if you have time | ||
q[merlyn] | instead, I'm moving to Brazil | ||
purl, tell mrborisguy about fors | 22:22 | ||
geoffb | My eyes are beginning to cross -- I'm trying to do 'use SDL::App--perl5;', which blows up because it can't find auto/SDL/App.al in @INC . . . I'd like to try to figure out how it is supposed to work, but I'm really not sure where to start. Hints? | ||
q[merlyn] | oh, no purl here. :) | ||
mrborisguy - www.lightlink.com/fors/ | |||
stevan | q[merlyn]: its a fairly new topic for me, and so I am open to any thoughts others have | 22:23 | |
q[merlyn] | Yeah - lemme reread what I saw. I just got stuck at metameta | ||
stevan | q[merlyn]: stick with the stuff in docs/, the stuff in lib/Perl/Meta/ is crap :) | ||
q[merlyn] | there should be a class where I can add a method, and suddenly all instances can do it. there should be another class where I can add a method, and suddenly all classes can do it | ||
that's the top of the hierarchy | |||
TWO classes. not one. | |||
stevan | hmmm | 22:24 | |
autrijus | geoffb: hm. but DBI etc works? | ||
Corion | autrijus: I got *** Pattern match failure in do expression at src/Pugs/Prim.hs:92:4-14 from ext\fp\t\functions.t - is that a "normal" Pugs error? It didn't seem catchable | 22:25 | |
geoffb | autrijus, actually, had not tried DBI yet. Was jumping directly into my own fun stuff (OpenGL) | ||
Hmmm, now need to throw a DB somewhere so I can test DBI, I guess | |||
Limbic_Region | geoffb - DBD::SQLite | 22:26 | |
no "real" DB required | |||
stevan | q[merlyn]: I would be very interested on your comments on the docs/ feel free to either add them right to the files themselves or email p6-compiler or even me directly | ||
autrijus | Corion: it's not catchable and I've fixed it | ||
stevan | however, right now I have to go pick up a pizza :) | ||
Corion | autrijus++ # fixing stuff before I wonder about it! | 22:27 | |
geoffb | Limbic_Region, OK, thanks. Lessee if Sarge has that prepackaged . . . I'm growing a bit weary of source builds on this old clunker box. | ||
q[merlyn] | 4 isa Int. Int isa "Int class". "Int class" isa Metaclass. Metaclass isa "Metaclass class". | ||
but where it folds back is that "Metaclass class" isa Metaclass. | |||
Corion | Goodnight everybody :) | ||
Limbic_Region knows nothing about Sarge | 22:28 | ||
geoffb | Debian testing AKA "RSN FOREVER!" | ||
Juerd | rsn++ | ||
q[merlyn] | Int inherits from [...] from Object. "Int class" inherits from [...] Class. | 22:29 | |
Darn. I'm looking for the picture of this. | |||
mugwump | ok, so the M3 is stop-gap until the M2 can bootstrap itself? | 22:30 | |
stevan | q[merlyn]: I understand that structure, I get lost when it crosses over from meta-land (MetaClass instances) to regular-user-land (Class instances) | ||
Juerd | Is there something wrong with feather? | ||
stevan | dammit, I gotta get this pizza, I will backlog & | ||
Juerd | There are only 3 users logged in - used to be many more. | ||
Limbic_Region wanders off to hook up "sound" | 22:31 | ||
Juerd | That's a sound idea. | ||
mrborisguy | i just logged on... doesn't seem to be anything wrong, Juerd | ||
geoffb | Hmmm, since the last time I looked, it appears the DBI/DBD concept has been ported to most host languages | 22:32 | |
nice when Perl concepts flow out to the unwashed masses | |||
Limbic_Region returns dazed and confused | 22:33 | ||
I have no idea where my speakers are | |||
q[merlyn] | I'm still looking for the docs | ||
Juerd | q[merlyn]: docs are mostly lacking :) | ||
autrijus | stevan: ext/Perl-MetaModel/t/10_Perl_Meta_MetaClass_test.t ext/Perl-MetaModel/t/11_Perl_Meta_Class_properties.t ext/Perl-MetaModel/t/12_Perl_Meta_Class_methods.t are failure miserably | 22:34 | |
s/failure/failing/ | |||
actualy everything else too | |||
mugwump / stevan: can you take a look? either fix them, or we ship without Perl-MetaModel or skip all those tests | 22:35 | ||
(in order of preference) | |||
Juerd | Hi autrijus | ||
autrijus | it's the only module that fails | ||
hey Juerd | |||
mugwump | stevan: unless you've got objections, I'll pull out the Perl/Meta/ stuff | 22:36 | |
mrborisguy | are Rules ever intended to stringify? | ||
mugwump | oh, he's afk | ||
10:23 < stevan> q[merlyn]: stick with the stuff in docs/, the stuff in | 22:37 | ||
lib/Perl/Meta/ is crap :) | |||
Juerd | mrborisguy: Probably not. They're closures, in some ways. | ||
mugwump | It can return if necessary | ||
mugwump removes them | |||
mrborisguy | Juerd: but since they can be scalars, wouldn't one almost expect them to not produce an error in a string context? | 22:38 | |
autrijus installs p5-SDL to test for geoffb | |||
geoffb | autrijus, thanks! | 22:39 | |
At the same time I'm going the other direction and trying DBI | |||
clkao | autrijus: hey, make argr rw! | 22:40 | |
geoffb | D'oh! | 22:44 | |
Reminder to self: Do NOT press CTRL-Q again | 22:45 | ||
autrijus | clkao: still reading readme | ||
geoffb | Well, this is encouraging: $ pugs dbi-test.p6 | ||
Available drivers: Sponge SQLite Proxy File ExampleP DBM | |||
autrijus | cool | 22:46 | |
clkao: one thing at a time | 22:47 | ||
clkao: I guess I need to make pugs_Apply to return SV** | |||
right? | |||
clkao | autrijus: right, or construct av | 22:48 | |
but that's not as important as rw | |||
because hash will require rw and pugs_apply return sv** to work | |||
autrijus | ok. what exactly do you want from rw? where do you want rw again? | ||
clkao | run the array test. | ||
autrijus | running. | ||
clkao | STORE is not working. it's working fine in the p6sub eval-applied. | 22:49 | |
but not getting back to p6 | |||
autrijus | *** No compatible subroutine found: "&my_elems" | ||
clkao | eek? clean build? | 22:50 | |
autrijus | yeah | ||
basic.t passes | |||
investigate a bit? | |||
clkao | strange | ||
mugwump | so, what happened to make the pugs startup time so long since 6.2.5? | 22:52 | |
I heard some murmuring about a Prelude.pm | 22:53 | ||
but I looked at it, and it didn't seem so bad.. maybe I didn't spot the expensive part | |||
autrijus | mugwump: it may just be that. | 22:54 | |
mugwump | it's now over 12s on my 1.6GHz athlon! | 22:55 | |
autrijus | mugwump: try starting it up with env PUGS_SAFEMODE=1 | ||
q[merlyn] | ... www.ifi.unizh.ch/richter/Classes/oo...ltalk.html | ||
look especially at section 2 | |||
mugwump | pugs: *** No compatible subroutine found: "&use" | ||
autrijus | mugwump: huh? | ||
time env PUGS_SAFEMODE=1 ./pugs -e1 | |||
I'm seeing a 1sec delta | 22:56 | ||
with and without prelude | |||
which is bad but bearable | |||
(barely) | |||
mugwump | oh, so it's the time parsing Test.pm etc | 22:57 | |
Are we being stung by excessive backtracking on parsing? | |||
time pugs -MTest -e1 => user 0m5.294s | 22:58 | ||
clkao | autrijus: wfm :/ | ||
Juerd | mrborisguy: I expect rules to not be scalar values, and that any $rule is actually a reference | 22:59 | |
autrijus | clkao: same test wfm? | 23:00 | |
mugwump: I'm seeing 2.6s | |||
mugwump: you have an old version of pugs to compare with? | |||
clkao: :/ | |||
clkao | autrijus: ya, array.t | ||
autrijus | clkao: try rebuild? | 23:01 | |
r4290 | |||
I didn't change anything though. | |||
anyway, I'm going to begin preflight. | 23:02 | ||
clkao | me make clean | 23:03 | |
what i thought it 's one week away | |||
autrijus | it's not. | ||
we have weekly release | |||
and it's already slipped for 1 day | |||
kelan | ?eval sub foo ($a) | ||
evalbot6 | Error: unexpected end of input expecting bare trait, trait or block | ||
mugwump | ok, I think I've tracked down the cause of the Set.pm test regressions | 23:04 | |
kelan | er | ||
clkao | ah, i thought you mean the actual flight o .at | ||
) | |||
mugwump | changing, eg, the implementation of equal() from: | ||
return (($self.size == $other.size) &&($self.includes($other.members))); | |||
to: | |||
my $rv = (($self.size == $other.size) && ($self.includes($other.members))); return $rv; | |||
kelan | ?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo @b; | ||
evalbot6 | ' 1 2 3 ' | ||
kelan | ?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo *@b; | 23:05 | |
evalbot6 | ' 1 2 3 ' | ||
kelan | hmm | ||
?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo( *@b ); | |||
evalbot6 | ' 1 2 3 ' | ||
autrijus | mugwump: ok. feel free to check in the workaround (with comments) | ||
mugwump | will do | ||
kelan | is there a reason that doesnt return just ' 1 '? | ||
autrijus | and untodo the passing test | ||
kelan | do i have context messed up again? | 23:06 | |
autrijus | ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(@b) | ||
evalbot6 | Error: No compatible subroutine found: "&foo" | ||
autrijus | ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(@b); | ||
evalbot6 | Error: No compatible subroutine found: "&foo" | ||
autrijus | ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(*@b); | ||
evalbot6 | Error: Too many slurpy arguments for &main::foo: 3 actual, 1 expected | ||
autrijus | kelan: looks like you can't get here from there :) | ||
?eval sub foo (*$a, *@rest) { qq[$a] }; my @b = (1..3); foo(@b); | |||
evalbot6 | '1' | ||
autrijus | ?eval sub foo ($a, @rest) { qq[$a] }; my @b = (1..3); foo(*@b); | 23:07 | |
evalbot6 | Error: No compatible subroutine found: "&foo" | ||
autrijus | the caller-site * is broken | ||
I think | |||
clkao | autrijus: also, retro-array will ruin pugs::env | ||
kelan | i thought flattening the caller side might just throw away extra arguments like p5 does | ||
clkao | autrijus: a perl6 array accessed by perl5 and export ed to perl6. | ||
mrborisguy | Juerd: so I guess my question is then... will a reference to a rule stringify? $a = rx:P5{a}; say $a; #or; say ~$a; shouldn't produce an error in my opinion... is that correct? | ||
kelan | but i guess with an explicit signature that doesnt make much sense | 23:08 | |
?eval sub foo ($a, *@rest) { qq[ $a ] }; my @b = (1,2,3); foo( *@b ); | |||
evalbot6 | ' 1 2 3 ' | ||
kelan | hmm | ||
autrijus | mrborisguy: it shouldn't. what should it produce tho | 23:09 | |
mrborisguy | autrijus: i guess i'm not quite sure. | 23:10 | |
autrijus | mrborisguy: ok. checking in a generic fix | ||
mrborisguy | autrijus: rules might be a little to complex to print out the actual rule | ||
clkao | autrijus: array.t runs (failed 6/11) on a clean build form .e | ||
kelan | maybe a string of the rule? although i guess you don't have that around after compiling it | ||
clkao | you sure you have a clean build? | ||
autrijus | clkao: rebuilding | ||
mrborisguy | autrijus: maybe something like "substitution rule" or "match rule" | 23:11 | |
clkao | autrijus: i also noticed now it takes very long time to actually run the script file. | 23:12 | |
2sec until 1..1 is run. | |||
is printed. ie , test.pm's plan | |||
autrijus | clkao: yeah. something seemed to make parsing slow. or it's the prelude | 23:13 | |
got no time to triage tho. | |||
clkao | $ ab -clkao- [~/work/pugs] time ./pugs -Iext/Test/lib -e1 | ||
0.364u 0.003s 0:00.41 87.8% 4757+747k 0+0io 0pf+0w | |||
$ ab -clkao- [~/work/pugs] time ./pugs -Iext/Test/lib -MTest -e1 | |||
1..0 | |||
2.119u 0.024s 0:02.38 89.4% 4567+719k 0+0io 0pf+0w | |||
autrijus | mugwump: how's the Set coming? | ||
clkao | how can do i do profiling? | ||
autrijus | clkao: make clean profiled | 23:14 | |
mugwump | I'll check in what I've got... almost got all tests passing, but the workarounds are awful :) | ||
autrijus | okay. sorry for that. | ||
we'll investigate later :) | |||
clkao | probably not for today then :/ have you got array.t run? | ||
i need to sleep soon | |||
autrijus | clkao: still recompiling | ||
need another minute | |||
clkao | need a faster feather | 23:15 | |
oh no, perl5 embed doesn't even compile on it | |||
mugwump | the nature of these workarounds suggests to me some basic parsetree/expression breakage... | ||
wish I could pin it down | |||
autrijus | mugwump: reduce it to simple test cases? | 23:16 | |
mugwump | gah svn conflict | 23:17 | |
autrijus | clkao: weird | ||
clkao: if I add (print '') after "use strict" | 23:18 | ||
it works | |||
but ok, I can get it run now | |||
mugwump | spooky ... someone seems to be making same changes as myself to ext/Set/t/operations.t :) | ||
autrijus | that may be me ;) | 23:19 | |
clkao | sppooooky | ||
mugwump | ok r4292 | ||
clkao | autrijus: so, got a glue about what's going on now? | 23:20 | |
mugwump | basically, this doesn't work: | ||
autrijus | clkao: nope | ||
mugwump | $set.difference($other_set).union($other_set.difference($set)).equal($sym_difference) | ||
autrijus | clkao: too weird | ||
clkao | autrijus: make PERL5_EMBED_DEBUG 1 | ||
in perl5.c | |||
mugwump | but breaking each method call into a seperate line, with explicit scalars does | 23:21 | |
autrijus | mugwump: ok. I think I know why. | ||
mugwump: leave a comment there | |||
it's basically the chained MMD inferencer | |||
can't figure out what method to call without a "returns Set" type | |||
clkao | i think someone should take a quick look on the -MTest problem. see if it's a trivial fix to kill that 2 sec. | 23:22 | |
how many tests do we have? if each test takes 2 sec to startup... | |||
mugwump | 5s on my system! | 23:23 | |
stevan | mugwump: ditching that Perl-MetaModel code is fine | 23:24 | |
it relied on Set.pm, which may have been part of the error | |||
q[merlyn]: I have read that paper too | |||
clkao | it's definitely pain for development cycles | ||
stevan | autrijus: after this release I will put the perl5 version of the MetaModel into pugs, I think it is closer to what we will eventually want to have | ||
autrijus: I also think it might be best to wait until hackathon to really work out the meta-model | 23:25 | ||
at least I wont have a whole lot of tuits until then | |||
ok have to walk to the dog, bbiab & | |||
autrijus | clkao: ok, I've attempted a fix, sec | ||
clkao | for the 2 sec or for the array rw thing? | 23:26 | |
theorbtwo | Also, it may help the metamodel a lot to have autrijus, stevan, and Larry all in the same place. | ||
Allo, all. | |||
autrijus | nope, no help | ||
hi theorbtwo | |||
Limbic_Region | salutations James | 23:27 | |
clkao | you need a tool for TODO and unTODO things | ||
theorbtwo | clkao: Have a plan on how to do it without parsing perl? | 23:28 | |
Did anybody take a look at my ugly Code::Exp code, and have a clue as to how to do it better? | 23:30 | ||
autrijus | theorbtwo: you can't make it into castV. | 23:31 | |
theorbtwo: and that is as well | |||
since castV is for "boxing" | |||
whilst creating a new object is hardly boxing | |||
Juerd | mrborisguy: Objects/references stringify as something that identifies the reference, unless stringification is overloaded. | 23:32 | |
mrborisguy: It shouldn't be an error. | |||
autrijus | ?eval rx:P5// | ||
evalbot6 | {rule} | ||
autrijus | ?eval ~rx:P5// | ||
evalbot6 | '<Rule>' | ||
clkao | autrijus: give me a note on what happens to array before you go sleep. i need to slee pno w | ||
Juerd | autrijus: For debugging purposes, the stringification should imo include some sort of id | ||
autrijus | clkao: I have no idea :p | ||
theorbtwo | Hm, OK, that makes some degree of sense. | ||
autrijus | Juerd: sadly we don't have IDs. | ||
(yet) | 23:33 | ||
clkao | autrijus: .... | ||
autrijus | clkao: really, I can't for my life tell why | ||
clkao | autrijus: why as in where? | ||
Juerd | autrijus: No way to get to something like a memory address either? | ||
autrijus | clkao: why a print'' is needed | ||
clkao | it doesn't matter, but the STORE thing in array | ||
autrijus | Juerd: well, yes, you can take a weakref and get an address | ||
Juerd: but it will change after GC run | |||
Juerd | autrijus: That can serve as an ID for a container then :) | ||
Oh | |||
autrijus | Juerd: or you can take a stable ref | ||
Juerd: but it will hinder GC | |||
;) | |||
so all in all pretty useless. | 23:34 | ||
Juerd | Purity can be awkward :); | ||
s/;// | |||
clkao | the sub reports goodie when eval-applied, from STORE, but doesn't get back to actual pugs land | ||
Juerd | Good night | ||
autrijus | I think it's true for all non-ref-counting GCs :) | ||
mugwump: ext/Set/t/hash.t all fails | |||
theorbtwo | VObject creates an ID on creation... but that's one of the reasons that it can't go outside a monad, which would be bad for something as general as references. | ||
geoffb afk for a while with family unit | 23:35 | ||
autrijus | mugwump: seems to be | ||
at blib6/lib/Set/Hash.pm line 48, column 12-34 | |||
mugwump: got time to investigate? | |||
mugwump | sure | ||
autrijus | theorbtwo: you can unsafePerformIO the object creation | ||
theorbtwo: I'm not sure if that's wise. | |||
theorbtwo | Anyway, I will start making methods on Code::Exp. | ||
autrijus | theorbtwo: also, why do you want it to be pure anyway | ||
theorbtwo | Hm, if you aren't sure if it's wise, I'm certianly not going to do it. | ||
Um, other then generally wanting it to be elegant, no good reason. | 23:36 | ||
autrijus | theorbtwo: the upshot is that creating a unique ID is not "pure" | ||
but it does not have to be monadic either. | |||
there's something inbetween. | |||
GHC 6.4 has linear implicit parameters to support this | |||
so if you'd like to switch object creation to use that | |||
(and make it pure so castV can use it) | |||
be my guest :) | |||
theorbtwo | Hm, that sounds like a lot of work for very little payback, and use of Yet Another Strange Extension. | 23:37 | |
Since we already have enough extensions keeping us from using jhc, and jhc is part of a grand plan, I think it's not worth it. | |||
Instead I'll start adding methods on Code::Exp, to make clkao's code modification more possible, and other nifty stuff. | 23:38 | ||
autrijus | *nod*. ncie! | ||
theorbtwo | BTW: If I start making methods that can modify things, and not just introspect, should they get marked unsafe in the prims table? | 23:39 | |
autrijus | probably no need to | 23:40 | |
"unsafe" means "you won't like to enable this in evalbot" | |||
theorbtwo | Right -- but things it creates are still subject to the safe/unsafe things, so it should be fine. Gotcha. | 23:41 | |
autrijus | :) | ||
mugwump | ok, that set/hash.t error seems related to the overloaded - | 23:43 | |
which has been commented out in Set.pm :) | |||
autrijus | :) | ||
mugwump | also %:members<$self._stringify($x)> wasn't a great demonstration of perl6 syntax | 23:45 | |
autrijus | indeed. | 23:46 | |
eric256 is disgruntled that a node he replied to on PM just go reaped, why reap a node with so many comments, why not reparent it? sorry wrong room to vent about it in i suppose. ;) | 23:49 | ||
mugwump works on the other tests in the Set distribution | 23:50 | ||
theorbtwo | eric256: Let me take a glance. | 23:52 | |
autrijus | mugwump: svn up first? I also fixed some | 23:53 | |
mugwump | ok will do | ||
hmm, the Makefile generated in the Perl-MetaModel seems to wedge make | |||
autrijus | mugwump++ # hash.t passes! | ||
mugwump | Makefile:545: *** target pattern contains no `%'. Stop. | ||
autrijus | worksforme. | 23:54 | |
one should probably not run Makefile.PL in an ext directory | |||
mugwump | oh? Works in ext/Set :) | 23:55 | |
eric256 | i miss the svn bot.. is it coming back? do you need someone to host it? | 23:56 | |
mugwump | oh wow ... all those unicode operator tests are passing! |