Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by stevan on 15 August 2005.
lhooq ?eval 2+2 08:11
evalbot_6581 4
GeJ ?eval "Hello World!".say 11:38
evalbot_6581 Hello World! bool::true
rindolf Hi all! 11:40
autrijus: here?
autrijus rindolf: hi 11:41
rindolf autrijus: hi
autrijus: I'm glad I found you here.
autrijus greetings. 11:42
Juerd You're wasting bytes :) 11:43
rindolf autrijus: can you please read www.nntp.perl.org/group/perl.module-authors/4022 and let me know how I can resolve this ExtUtils::Install issue?
autrijus rindolf: export PERL_EXTUTILS_AUTOINSTALL=--default 11:45
rindolf autrijus: OK. Is --default the mode that behaves like a regular Makefile.PL with PREREQ_PM? 11:46
autrijus aye.
rindolf autrijus: it works now. 11:52
autrijus: thanks.
autrijus np :) 11:55
rindolf autrijus: I could not gather from the man page that that is what --default does. 11:56
autrijus indeed. you want a committer bit? 11:57
rindolf autrijus: for EU::I?
autrijus EU::AI, yes
rindolf autrijus: if I'm in the mood, I might write a patch for the POD and put it in RT. 11:58
Right now, though, I have other things to do. (including some stuff I'm getting paid to do)
I'll just write a short E-mail about it to module-authors. 11:59
autrijus sure. vipe.technion.ac.il? 12:00
rindolf autrijus: what about vipe.t.a.i?
autrijus was confirming whether it's your email addr 12:01
rindolf autrijus: I have several E-mail addresses.
[email@hidden.address] is one of them.
I also have [email@hidden.address] and [email@hidden.address] 12:02
autrijus ok. an invitation for committership into extutils-autoinstall is in your inbox now
the svn repos is svn.openfoundry.org/modinstall/ExtU...utoInstall
if you find time to post to RT, please commit ahead instead
rindolf autrijus: as you wish. I'll try not to misplace this commitership. 12:03
autrijus rindolf++ # thanks!
rindolf autrijus: :-)
geoffb good $time_of_day, autrijus 12:18
Same to you, Juerd, since you seem to be the other person on-channel atm. :-) 12:19
12:27 integral is now known as integral|ZzZzz 12:56 autark is now known as jp-autark
putter autrijus: fyi, the rt.openfoundry.org/Foundry/Project/...gs/browse/ links are again in chinese. eg, the link to Home is 登入. fyi. 15:08
luqui: credit for finding the hash bug belongs to someone else. I just echoed it. But with the irc log bOrked, I'm afraid I can't give the correct attribution. 15:12
iblech: btw, you should be ready to go. last night I smashed perl5.t down into edible 50 test pieces, and things looks plausible. 15:13
Can anyone describe what's up with PIL and classes? I assume if it was easy it would already be done? I wonder if it might be kludged with a wrapper script? 15:34
It seem a next step in moving PIL2JS along. And helps in beginning p6-based PIL codegen. 15:36
vkon my question probably obvious, but: whether *parrot* required for regexp's in pugs (rules are implemented via PGE) 15:51
? 15:52
putter parrot is indeed required for p6 rules in pugs. But not for :perl5 rules, which are provided by the included PCRE. One can used an external parrot (the default), or embed it. 15:56
brentdax autrijus: get my e-mail? 16:06
putter hi fglock 16:20
fglock hi putter
I'm working on Array.clone - I need this to fix some tests 16:23
putter tries to picture a dual runtime, PIL-Run with p5 mm, and PIL2JS under JS::SM. or tri-runtime with pugs embedded.
fglock :) best of each world 16:24
putter ah. I was just trying to picture using your lazy arrays from PIL2JS... ;)
fglock can you make p5 calls? 16:25
stevan__ wonders what is in the putters water that he is having such visions
16:25 stevan__ is now known as stevan
Aankhen`` JS::SM? 16:25
stevan Javascritp::SpiderMonkey
Aankhen`` Ah.
stevan but spelt correctly
putter hmm... svnbot is dead... as of a few minutes ago, yes :) 16:26
stevan putter: the freenode admins are clearly drunk again
putter but I'm not sure what a JS proxy looks like. PIL class limitations mean one cant do the obvious by just injecting p6. 16:27
stevan: there seemed several partitions over the last day or so. maybe svnbot is off happy in some private universe 16:28
a musing: name for a JS::SM which includes a copy of spidermonkey, so you can just CPAN install it cleanly... JavaScripdt::SpiderMonkey::WithMonkey ?;) 16:30
JavaScripdt::SpiderMonkey::PrimateIncluded ?
stevan pictures a universe where svnbots frolic about free from their commit-happy masters
putter ;) 16:31
"svnbots dream of committed sheep..."
stevan :D 16:32
putter fglock: perl5/PIL2JS$ perl -Ilib -e 'use Perl6::Run::JS; Perl6::Run::JS->new->eval(q/say "hi"; eval_perl5(q!print "ho\n";!);/);' 16:34
Note you can run multiple js-based p6 instances in the same perl process. 16:36
Before I dive in, has anyone here looked at the PIL vis classes issue? 16:38
fglock will be offline for a few hours
putter bye fglock
fglock bye :(
putter life! :)
autrijus brentdax: what mail? 16:49
I don't think I did
brentdax Hmm, okay... 16:51
I noticed in your blog that you installed Kontent, and I was just wondering if you had any comments on the procedure or how it's documented, since I'll be releasing 0.02 soon.
autrijus ooh. 16:52
url to the svn again?
brentdax svn.brentdax.com/kontent 16:53
I haven't changed the docs on the installation yet, and I need to write some stuff to insert a few really critical pages (like, say, the setting containing the HTML template), so it's not entirely usable right now. 16:54
putter autrijus: do you have a moment for a quick -CPIL question?
stevan hey autrijus how is $work? 16:59
autrijus stevan: tired, but fortunately free from tomorrow on to friday 17:05
putter: yes?
stevan autrijus: me too :) 17:07
sept 1 is launch
autrijus ooh then we can hack something :) 17:08
maybe MM2 stuff
stevan autrijus: MM 2.0 is is good shape
the bootstapping is in
I am starting to covert tests
brentdax Does Pugs have a YAML dumper? It seems like the Perl 5 one won't work properly--it interprets hashes as arrays of arrays. 17:11
autrijus hrmph
you mean .perl?
brentdax No, I mean using perl5:YAML.
autrijus we don't have yaml dumper yet -- but I think S^WJSON can do
putter autrijus: !:) I'd like to get -CPIL dumping class info for PIL2JS and PIL-Run. I notice -CPIL -e 'class C;' runs, but -e 'class C {}' doesnt. are there known deep reasons for this? or it just hasnt been attempted? any other thoughts? thank you.
brentdax: iblech had a magic invocation. which I forget. so I use jspugs's :pil.yaml <expr> 17:13
autrijus there's no deep reasons, except we didn't know how to represent class literal
putter brentdax: or for entire files, crude_repl.pl with the :v option toggled on.
autrijus however, class literal now looks like just a regular MM closure constructor call 17:14
so maybe we'll just emit that
putter ok. thanks. I'll try to deal with the "{} causes -CPIL failure" issue, and leave the rest for later/others. 17:18
autrijus nod 17:19
brentdax Hey, I remember writing that panic routine for Parrot... 17:40
autrijus ? 17:42
brentdax I wrote Parrot's PANIC macro a few years back. Just now, I got it to panic while running a substitution on a long string. 17:43
(Out of memory, nothing that necessarily means there's a bug in PGE.) 17:47
luqui brentdax, how long? 17:50
brentdax Hmm...actually, the longest string it could have been working on was 1K or so. 17:53
I had it doing a series of substitutions on a bunch of strings (one of which was much longer than the others).
I'm using an older Pugs and Parrot, though...
vkon putter: thank you for complete answer ~2hr ago! 18:01
?eval 'qwerty'~~/q/ 18:09
evalbot_6581 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
evalbot6 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
vkon ?eval $?PUGS_VERSION
evalbot_6581 \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005'
evalbot6 \'Perl6 User\'s Golfing System, version 6.2.9, August 3, 2005 (r6378)'
vkon ?eval say 'qwerty'~~/q/ ?? 'y' :: 'n' 18:12
evalbot_6581 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
evalbot6 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
vkon ?eval say 'qwerty' ~~ /q/ ?? 'y' :: 'n' 18:13
evalbot_6581 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
evalbot6 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
vkon strange... results on evalbot are rather different on what I see on perl6.feather.nl 18:14
geoffb ?eval say 'qwerty' ~~ rx:perl5/q/ ?? 'y' :: 'n' 18:16
evalbot_6581 y bool::true
evalbot6 y bool::true
putter vkon: you're welcome. (asyncronous conversations)++
?eval 'qwerty' ~~ /q/ 18:17
evalbot_6581 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
evalbot6 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
putter I suspect evalbot is compiled without parrot :(
geoffb autrijus, ping 18:18
putter Actually, no, I don't understand that error message. Even compiled without parrot, and no external parrot available, the error message should be different. 18:19
vkon putter: when I do it on my PC, I get expected result, but when ssh [email@hidden.address] I see error 'Parrot VM: panic: out of mem'
putter: it probably parrot feature considered non-safe and not available within evalbot? 18:20
putter parrot --version ?
autrijus geoffb: pong
geoffb There's an annoying bug that I could really use a crushing for: 18:21
?eval my $foo = 0; $foo++; say $foo; my $bar = [0]; $bar[0]++; say $bar; my $baz = {a => [0]}; $baz<a>[0]++; say $baz;
evalbot_6581 1 1 Error: Can't modify constant item: VInt 0
evalbot6 1 1 Error: Can't modify constant item: VInt 0
geoffb It's blocking my conversion of a nice chunk of P5 code to P6 (without hideous hacks). :-( 18:22
vkon putter: on feather... This is parrot version 0.2.3-devel (r9087); on my PC is 0.2.2-devel
autrijus geoffb: which t/ test is that? 18:24
got the bug. fixing 18:25
geoffb Don't know, came across it when I was too otherwise tired to figure that out, but I'll try to A) find it, or B) write a test now
autrijus please write a test. 18:26
my $baz = [[9]];
$baz[0][0] = 10;
is the minimal case I got here
geoffb OK, doing so.
putter vkon: hmm... I wonder if a release 0.2.3 would have the same problem...?
autrijus this borks too
my @baz = [9];
@baz[0][0] = 10;
so it's circumfix [] not preserving lvaluehood 18:27
even more minimal 18:29
[[0]][0][0] = 0;
geoffb *chuckle* 18:30
All right you, golfing boy. :-)
vkon putter: I don't have 0.2.3, so I'll fetch today's 'rsync' and will rebuild; this will be not immediate :) I'll do this
geoffb I'm transcribing these various cases into a pugsbug/.t 18:31
vkon ?eval [[0]][0][0] = 0;
evalbot_6581 Error: Can't modify constant item: VInt 0
evalbot6 Error: Can't modify constant item: VInt 0
vkon putter: BTW on 'feather.perl6.nl' currently built pugs is 6378, so this is rather old? 18:35
PerlJam vkon: 10 days old or so. 18:37
autrijus back. fixing 18:40
geoffb autrijus, 6588, t/pugsbugs/lvalue_deep_brackets.t 18:42
autrijus great 18:43
geoffb It's dies after test 2, but I figured it's better that you have it while you're working, than I have it perfect.
autrijus yup
geoffb and btw, chromatic++ for making add-svn-props.sh work with svn and svk equally. 18:44
autrijus wunderbar 18:46
svnbot6 r6588 | geoffb++ | First cut of test for lvalue deep brackets
autrijus got the bug. 18:49
the inner [0] is forced back into rvalue context.
geoffb wheee!, thanks 18:50
autrijus np :) 18:52
putter vkon: awesome. re 6378, now 6589, so yes, a bit. 18:54
luqui ?eval (a => 'b')[1] 18:58
evalbot_6581 Can't exec "./pugs": Permission denied at examples/network/evalbot//evalhelper.p5 line 42.
evalbot6 \'b'
svnbot6 r6589 | putter++ | Compile.hs: -CPIL -e 'class C {...}' now works (no longer fails with an error). Next step - remember package/module/class/grammar flavor, so it can tell you what C is.
luqui ?eval (a => 'b')[1]
evalbot_6581 \'b'
evalbot6 \'b'
luqui oh, evalbot6 is back
putter yay
autrijus fixed. 19:00
committing
geoffb: try the fix? 19:08
svnbot6 r6590 | autrijus++ | * a one-line change that possibly have great impact: 19:10
r6590 | autrijus++ | when using fromVal to cast a VList into a VList, don't
r6590 | autrijus++ | recursively flatten references in them anymore.
lhooq one-line change for a file, one giant leap for pugs 19:13
geoffb autrijus, sorry, pulled away by $child 19:19
bak now
pulling . . .
making . . .
autrijus k. remember to pull to see my test fixes 19:20
it all passes here
fglock hi all
geoffb hi, fglock 19:21
fglock misses the daily autrijus journal
svnbot6 r6591 | autrijus++ | * lvalue_deep_brackets.t - make tests sane; all passes now.
r6591 | autrijus++ | consider moving to other t/ dirs?
geoffb too
autrijus fglock: I miss them too 19:22
fglock how about a docs/JOURNAL file 19:23
autrijus what would that do? collaborative journal making?
I thought that's what pugs.kwiki.org is for :) 19:24
fglock I'm taking a look there 19:25
autrijus: a question on lazy arrays - '@a=1..Inf; @b=@a; say @a.shift, @b.shift;' - is this 1,1 or 1,2 ? 19:27
svnbot6 r6592 | autrijus++ | * wizards.p6 - print debug messages only if $DEBUG is set.
autrijus fglock: 1,1 for sure 19:28
1,2 only comes when
@b := @a
the generators are cloned
not shallowly copied
fglock ok - I'm working on cloning generators right now - just wanted to be sure 19:29
geoffb Bah, no wonder that took so long to build -- I forgot to quit Firefox first
fglock can you point me to a description of List x Array in Perl 6 - what is each one, what are the differences? 19:31
autrijus fglock: Array, like Scalar, is a container type; you can write stuff into it. List on the other hand represents values; you cannot directly write into a list 19:33
geoffb autrijus++ # Stomped that bug but good! 19:34
hey, nm!
nothingmuch three day weekend, oh how I long for thee
geoffb heh
nothingmuch hi ho
keeping up is *hard*, and I don't even have kids 19:35
autrijus fglock: I'm not aware of any unambiguous writeup on this subject, sadly. whatever we come up will have to do, I think
nothingmuch I don't know how career people do it =(
autrijus oh, they don't :)
nothingmuch my parents work full time, but I don't recall neglect 19:36
geoffb It's difficult, but you just give up something the kids don't notice. :-)
lhooq kids don't have much RAM, that is 19:37
geoffb , now a father of two, getting wise in his old age
nothingmuch geoffb: my problem is that my job is sort of my hobby, i guess
i don't get sick of computers
geoffb nothingmuch, oh yeah, ditto that.
nothingmuch i want to code the "fun stuff" too, when I get home
but on the other hand I don't want to do that 19:38
autrijus why would you get sick with part of you? :)
geoffb yep, so there. That's why I quit being a FTE and became a PTC. :-)
nothingmuch since I want to go outside, and see the lovely sun, and hear the lovely birds, and ride my lovely bike
fte == full time employee? ptc == part time contractor?
geoffb perfecto
fglock in p5 runtime, List is a temporary object - it only exists for a short while before it disappears into an Array. It can actually be optimized out.
nothingmuch autrijus: it's not a part of me... it's something that I do, no more 19:39
i'
don't see myself doing this 5 years from now
autrijus okay then
I fully expect to become even more a cyborg after 5 years. 19:40
nothingmuch yeah, that is something that always scared me about you =)
autrijus fglock: how is it different from, say, a Str into a Scalar?
geoffb "And in 2010, autrijus became Hugh."
nothingmuch Hugh? 19:41
geoffb The borg with self-will
Couple episodes of TNG, IIRC
autrijus from "I, Borg"? 19:42
fglock you store Str into Scalar, and Array into Scalar - but you don't store List into Scalar. Also, you store List into Array, but you extract Scalar from Array (fetch) or Array from Array (splice)
geoffb autrijus, yeah, that might be it
putter Ok, quick strawman proposal. Currently, class C{method f(){}} in PIL gives you C::f, but no indication whether C is class,package,module,grammar. Proposal: PIL includes a "&class("C");" (in this case, to tell you which one it is. Thoughts?
nothingmuch . o O ( autrijus voodoo dolls available at www.collectorsgalleryonline.com/Mer...y_Code=STK ) 19:43
autrijus putter: should probably be
our ::C := class {}; 19:44
geoffb ?eval my $foo = 'bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" : "other"
evalbot6 Error: unexpected ":" expecting operator or "::"
geoffb ?eval my $foo = 'bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" :: "other"
evalbot6 'other'
geoffb ?eval my $foo = '+bar'; $foo ~~ rx:perl5/^\+/ ?? "plus" :: "other"
evalbot6 'plus'
geoffb hmmm
autrijus putter: or drop the {}, just
our ::C := Class.new;
nothingmuch metamodels++ 19:45
autrijus putter: the idea is to leverage a direct metamodel call based on the builting ::Module, ::Class etc
putter: sounds sane? 19:47
putter hmm... package C; ... package main;... package C;... two our ::C := ??
nothingmuch well, BEGIN { our ::C := }
autrijus nothingmuch: right.
putter: no, I think just one, as packages are not reopened 19:48
nothingmuch . o ( they are refurbished )
putter packages are not reopened??!?
autrijus as in, they are always reopened, sorry 19:49
you don't need to say "package C is reopened"
nothingmuch package C compiles not to BEGIN { ::C := ?? } then
BEGIN { ::C := Package.new unless defined ::C; ::C.extend { ... } } 19:50
autrijus sure, that can work.
our Package ::C .= new(...) 19:51
which would call the instance .new if ::C is defined
neatly sidestepping the "unless defined" problem
but that may be too cute.
I can't think too well, it's 4am here :)
nothingmuch btw, are ::X symbols stored in namespace?
if so is there a root instance of package? 19:52
or is this orthogonal, just pretending to be namespace-ey?
putter thinks "&pil_hack_class("C"), and let the runtimes worry about it for now..." ;)
autrijus putter: at least &Class::create('C')
nothingmuch i disagree
autrijus or &Class::_create
nothingmuch PIL should present a static image
or pretend to 19:53
this can be translated to &Class::create('C')
but that is potentially a lossy conversion WRT to the user's intents
autrijus nothingmuch: sure. ::= is just the RHS turned into normal form (i.e. constant rvalue)
nothingmuch: and yes, PIL2 needs to be a static image. but at this moment PIL1 is all dynamic and has very little static contents 19:54
so why not delegate to runtime for now :)
nothingmuch btw, I forget what happens in PIL for things like loop()
are the loops generalized into looping constructs?
or are these delegated to the runtime? 19:55
putter nothingmuch: re static, PIL1 re oo already seems... not PIL2. the objective is to make progress on backends, not to do PIL2 design work...
nothingmuch putter: i don't necessarily mean "getting it to work" in the right now scale 19:57
putter ah ;) 19:58
nothingmuch but if we want to be able to implement 'use optimize', the linker I proposed, static analysis, optimizers, type inferrencing, value inferrencing and so forth
which are priority 2 features, but still important
putter written in p6?
nothingmuch yup
shouldn't be that bad 19:59
putter does anything need to happen to get you to the point of being able to work on it?
(quite a sentence)
-CPerl6 ?
nothingmuch anyway, if pugs compiles to a PIL that is too "runtimeish" then these things won't have clear semantics
uh... 20:00
like i said about the 3 day weeken d
putter ;)
nothingmuch i don't think these are important enough now though
things should be working
autrijus one thing PIL1 does not have is an object-literal node type
where you can present an anonymous object -- say, a class object -- just like an anonymous closure 20:01
nothingmuch heh, this guy bought from the same place I bought my computer: i10.ebayimg.com/03/i/04/d2/31/9a_1_b.JPG
small world, eh?
autrijus it would not be a runtime call to .new; rather, it would be just like a serialized opaque object.
that is what objects in BEGIN would compile to
nothingmuch btw, is the serialization format of the env completely defined yet? 20:02
putter re important, but they all share a PIL analysis/manipulation infrastructure with codegen. And iblech will be doing more of PIL2JS in p6 rather than js as that becomes possible. And much of what he does in p6, can be used for pilrun.
autrijus nothingmuch: nothing is, so no
nothingmuch autrijus: by completely i meant "good enough"
putter re object-literal, neat :)
autrijus nothingmuch: ah. no, the linkset problem is still open 20:03
nothingmuch ponders a peep-hole optimizer for PIL
autrijus we still don't know what the equivalent of .hi file would be for p6
nothingmuch linkset problem in two words?
autrijus: followup on the linker thread?
putter so I think getting p6-based codegen from PIL is a good shortterm objective. 20:04
autrijus sure, but sleep is more important first
putter: yes. -CPerl6 would be trivial, no?
putter s/is a/going is a/
nothingmuch if any(@ARGV) eq "-CPerl6" { exec "cat" }
autrijus putter: actually if you define &bless, then -CPerl5 is likely oodwgood enough already
nothingmuch: ;) 20:05
putter autrijus: cut and copy two Drift files? or is there abstraction potential there I missed... ;)
re bless, yes. good idea.
nothingmuch oh
what is this Drift thing?
autrijus nothingmuch: it allows you to derive any class for any data type.
nothingmuch uh... example? 20:06
autrijus nothingmuch: see src/DrIFT/*
yay I answered before you asked
putter lol
nothingmuch not on my terminal ;-)
autrijus well, I'm going to get progressively silly in this sleep deprived mode
so I think sleep is a better idea
see ya tomorrow :)
autrijus waves &
putter good night autrijus & 20:07
nothingmuch ciao!
Juerd_ What do you all use feather for?
Oh, good night autrijus
autrijus Juerd_: I use it to run various perl6 bots
really &
nothingmuch uses it to ping home sometimes, and for the harrorth darcs page 20:09
Juerd_ hehe 20:10
memo: unlink `which ping` ;)
nothingmuch oh btw, i think you can remove autrijus and me from sudoers - we don't know our passwords
Juerd_ Smart.
nothingmuch well, I do know my ssh key 20:11
;-)
stevan nothingmuch, autrijus, putter: see the MM 2.0 for a closure based class form 20:44
putter ! :) 20:45
stevan it is a UI macro in CLOS-speak
but it basically is this:
class 'Foo-0.0.1' => sub { my $class_meta_object = shift; ... do something ... };
putter waits for the next line... slowly realizes that's it.. :) 20:46
stevan yeah thats all :)
putter :)
stevan svn.openfoundry.org/pugs/perl5/Perl...taModel.pm
look in the SYNOPSIS of the Pod
putter looking...
stevan those two are equivalent 20:47
nothingmuch you mean the synoposis section ;-)
putter now that oo info is exposed by -CPerl5, the mm's can be exercised a bit more..
stevan SYNAPSE
nothingmuch stevan: fixed ;-) 20:48
stevan nothingmuch++ # removing the evidence
putter: yes
I think it might make sense for the class part of PIL to just be a series of metaobject calls 20:49
it will simplify it i think
my $Foo = $::Class->new('$:name' => 'Foo');
that will create a new class
nothingmuch ebay-- 20:50
stevan $Foo->superclasses([ $::Object, $Bar ]);
etc etc etc
nothingmuch their site is broken =(
stevan MM 2.0 is greatly simplified (sort of)
nothingmuch guesses that 'sub class { my $name = shift; my $class = $::Class->new; $class->name($name); &$_ for @_ }
stevan &$_ for @_?? 20:51
fglock stevan: class is an "instance constructor closure"? 20:53
nothingmuch uh
too much functional programming?
stevan fglock: no, the sub "class" is just a "macro" to do some meta-object stuff for you
make my life easier to test 20:54
putter stevan: or maybe wrap them in ApiX p6_mumble subs. its been nice to have the whole mm interface in one place. at some point it will just be boring, but it allows us to easily say things like "oh, instead of Int,etc, let's do P6::Int,etc".
stevan putter: I assume p6_mumble is re-sugaring routines?
putter (one of the nice things about p5 method calls being a bit slow, is sub call abstractions are then free...;) 20:55
svnbot6 r6593 | nothingmuch++ | r7643@syeeda: nothingmuch | 2005-08-30 23:47:51 +0300
r6593 | nothingmuch++ | s/SYNOPSIS/SYNOPOSEES/
putter stevan: yes, I think.
I've just been following fglock's lead. "How do I create a mm Int? Ok, done How do I ...." 20:56
svn.openfoundry.org/pugs/perl5/PIL-...un/ApiX.pm 20:59
nothingmuch stevan: what about mmd
;-)
stevan nothingmuch: who needs that crap
nothingmuch: MM 2.0 makes the assumption that methods exist
I implement them in chaos.pl
but I just assume they are there 21:00
nothingmuch stevan: from luqui's Class::Multimethods::Pure, the argument is basically applying what's good in OO one more time on OO
svnbot6 r6594 | putter++ | pugs - a Syn package/namespace now remembers whether it was a package/module/class/etc. When compiling to PIL, emit a kludge declaration info statement (eg &Module::_create("M"); for a module M {...}).
r6594 | putter++ | Prelude/JS.pm: added placeholder hooks for declaration info calls.
nothingmuch to quote:
no, it's too long
stevan and methods are just wrapped subs
nothingmuch search.cpan.org/~lpalmer/Class-Mult...ltimethods
putter stevan: you realize you're going to have to do talks on the mm stuff... time to start taking notes! ;-) 21:01
stevan so the assumption is that multi-methods will likely just be wrapped multi-methods
putter s/taking/making/
nothingmuch it would be cool if mplayer had an airtunes output driver
stevan putter: I will adopt the autrijus/ingy model of giving talks
putter lol 21:02
stevan start the slides the night before, finish the first part in the cab/elevator to the talk
and then finish the second part during the intermission
putter :)
stevan s/wrapped multi-methods/wrapped multi-subs/ 21:03
fglock I guess multimethods will be implemented in Code.pm, with some glue to make classes know about them
stevan I know in CLOS multi-methods are all proxied through a single method
so as to not have name clashes 21:04
I assume we should do something similar
nothingmuch no =) 21:05
everything should be a multimethod
stevan otherwise we have to deal with package symbols of the same name,... etc
putter ah, that makes more sense #wrapped multi-subs/
nothingmuch singi-methods are just "multi method ... is unique"
stevan nothingmuch: I agree, but you still have to store the symbol somewhere
nothingmuch stevan: every code symbol is an array of code refs 21:06
stevan unless slots are arrays
yeah
nothingmuch not code refs, method objects
stevan yes
nothingmuch or the method object has variants
luqui: want to port C::M::P?
stevan but that makes slots/packages more complex
nothingmuch i think ti's simpler to let the method object have an add_variant method 21:07
stevan why not store a single code value in the slot, then have that code have specializers to do the dispatching
putter how are temp()ed multimethod "branches" (what's the real name?) handled? ah, ok, so temp() on the array?
stevan nothingmuch: yes, add_variant is sane (sort of)
methods (in MM 2.0 at least) are just closures around the code body which bind $?SELF and $?CLASS 21:08
nothingmuch stevan: that way every sub Method::add_variant { die "i'm no multi" if $self->unique; ... luqui code ... }
stevan nothing else really
luqui is a hack and we all know it ;)
I have not looked a the internals of MM::Pure 21:09
nothingmuch goes to bed 21:10
fglock re MultiSub runtime: svn.openfoundry.org/pugs/perl5/Perl...l6/Code.pm
nothingmuch aah! 00:10:32 up 14 days, 5:03, 2 users, load average: 9.78, 7.35, 4.14
fglock: Damian will like that impl 21:11
fglock Damian will like == unreadable ? 21:12
nothingmuch no
the impl is "simple"
it just goes through the alternatives ;-)
fglock ah ok. It is actually wrong - it should go through the alternatives in a certain order of precedence 21:13
nothingmuch right
fglock and use a binary tree for that, or a hash
nothingmuch uh... not enough
you have to calcualte the distance.
if you want a proposal I wrote one 21:14
and luqui implemented one
and Damian has his own views which we don't like ;-)D
docs/notes/mmd_match_order.txt
fglock thanks - will read it
putter $?METHOD_DISPATCH_ALGORITHM = @?PROPOSALS[int(rand(123))]; If you code changes behavior run-to-run, perhaps it should be made simpler... ;) 21:15
svnbot6 r6595 | putter++ | pugs -CPerl5 now says bless(data , cls) instead of bless(data => cls). More p6 compatible.
nothingmuch putter: that sounds like damian's proposal ;-) 21:16
putter lol :)
hmm... where to place the beginnings of p6-based PIL work... there is always perl5/ ;) .... 21:17
nothingmuch needs more ram 21:18
putter I suppose modules is the "official" place... but it's so quiet...
fglock putter: I've placed some things under ext/
nothingmuch ext?
fglock ext/Perl6-Container-Array, ext/Perl6-Value-List 21:20
putter had the, well not "unhappy", how about "reflective", moment, of seeing a machine more wizzy than his, available for a few hundred $ in the ad insert of the sunday newspaper. I soo need a job. ;)
hmm... putter goes to look at ext/
nothingmuch putter: my machine is actually pretty decent, except for the ram 21:21
but i feel your pain
nothingmuch was in school for too long
putter I thought ext/ was for "finished, working" things? 21:22
nothingmuch putter: uh, compiling
that's good enough ;-)
putter lol
stevan kind of likes Class::Multimethods::Pure 21:23
putter search.cpan.org/~lpalmer/Class-Mult...ds/Pure.pm
nifty. 21:26
svnbot6 r6596 | iblech++ | * Moved t/pugsbugs/lvalue_deep_brackets.t into t/var/ and
r6596 | iblech++ | t/pugsbugs/hash_access_interpolation.t into t/syntax, as the tests pass now.
r6596 | iblech++ | * t/pugsbugs/return_in_anonymous_subs.t: Added a new test and commented a test
r6596 | iblech++ | testing &return (EMOREDISCUSSIONNEEDED, will ping p6l tomorrow).
r6596 | iblech++ | * t/var/temp.t: Added some more tests testing "temp $struct<foo>[$bar] = ...".
r6596 | iblech++ | * New t/var/codevars_should_not_autovivify.t: "&Foo::Bar; Foo::Bar()" should die.
putter iblech: ping? 21:27
stevan hmmm, I think I can use Class::MM::Pure to add multi-methods to the MM 2.0 21:29
putter ! 21:31
svnbot6 r6597 | iblech++ | PIL2JS:
r6597 | iblech++ | * REAMDE: Large update, I especially enhanced the section about containers.
r6597 | iblech++ | * Moved the code responsible for handling undeclared variables out of
r6597 | iblech++ | PIL::PBind and PIL::PAssign to PIL::PVar (with a fix) -- PIL2JS passes
r6597 | iblech++ | t/var/codevars_should_not_autovivify.t now.
putter It gradualness of the p5 to p6 continuum is curious. "So, have you used P6?" "Well, I dont know. I've never said use v6;, but I use Perl6::Mumble... and i think some of the modules I use are written in it... and I have no idea what runtime(s) my code runs on..." 21:35
oh! who was working on ext/Perl-Compiler/ putter goes to check... 21:39
fglock the "generator cloner" is finally passing some tests :) 21:40
putter generator cloner?
fglock it is the thing that makes @a=1..Inf; @b=@a work 21:41
putter ahh
fglock 1..Inf is the "generator" and @a is the "consumer"
putter loqui++ # " One small step for pads, one giant leap for kittens' feet. " commit message. ;) 21:42
ah, ok. 21:43
and one clones because?
fglock without cloning - @a.shift gets '1', @b.shift gets '2' 21:44
putter k
fglock because the generator is shared
going home now - good night & 21:45
putter & 21:46
svnbot6 r6598 | rafl++ | * Added possibility to skip tests when building the Debian package. 21:49
r6598 | rafl++ | * Remove empty files from the pugs-doc package.
xinming hmm, I have a question, I ever asked here about if that the perl 6 program will "HAVE TO" compiled to byte code to execute, I got the answer "yes", so, I wonder, If it have to compiled to byte code, does that mean all perl 5 program also "HAVE TO" Compiled to byte code? 21:52
s/compiled/compile/
xinming 's English seems to be more buggy than then day when I left school. 21:54
putter p6 will "likely always" be compiled to PIL. which is a tree. whether that tree is interpreted directly, compiled to language x where x is a high-level language, a bytecode, a machine code... the answer will eventually likely be "yes: ;) 21:59
bbiab
actually, bbl 22:00
iblech: ping? 22:41
xinming hmm, `@a Y @b Y @c -> $a, $b, $c` This will automatically get one element from each @array, and assign the value positionally, so, Is there a operation which can do a "reverse-thing" ? 22:51
I mean, `push @a, $a; push @b, $b; push @c, $c;
`
putter ? 23:49
brentdax 23:50
putter xinming: perhaps something like vaguely like [push] (@a,@b,@c) Y ($a,$b,$c) ie ()Y() -> $l,$v { push($l,$v) } 23:52
brentdax: re ?, initial response to an hour old question. ;)
brentdax Ah, heh. 23:53
geoffb
.oO( Wouldn't it be great if IRC had threading? )
revdiablo geoffb: dngor had an irc bot that did that
geoffb: used tk to threads conversations on the fly 23:54
or something along those lines...
see Text::Conversation
geoffb how does it detect them? 23:55
(sorry, compiling pugs, cannot open any other windows, sigh)
putter given recordings of many people talking with each other, you can actually cluster them quite well based on overlap. and do lots of social analysis. but in irc, non-overlap is a much less useful metric. :/ 23:56
revdiablo it uses their nick along with some sort of similarity rating
putter s/recordings/audio $1/
revdiablo "Text::Conversation uses multiple heuristics to determine a message's referent. To be sure, the presence of another speaker's ID counts for a lot, but so common words between two messages. Consider them similar to quoted text in an e-mail message." 23:57
geoffb hmmm
so could probably be hinted well with a convention of some sort
just saying "billgates, re: wrold_domination, ..." would probably do the trick 23:58
putter arg. we really need Filter::Simple for pugs. sigh.
geoffb especially if the thread was started with a "re: world_domination" 23:59
from the first person
putter: what are you trying to do?