6.2.3 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org Set by autrijus on 12 May 2005. |
|||
putter | also, if it was a refactoring "server" (eg, "take the variable at point x and lexically raise it two levels"), then emacs and everything else becomes an instant refactoring browser. | 00:00 | |
osfameron | surely that semantic analyser will be called `perl` ? | 00:01 | |
the emacs mode will merely be plugging into hooks provided by perl | |||
look ma, no kludge! | |||
putter | osfameron: well, some module in perl. Perl::Source::EditorHelperServer ;) | 00:03 | |
clkao | strangely, i have 3 tests failed. but test.pm says: | ||
# Looks like you failed 1 tests of 3 | |||
mugwump | what will that allow it to do, above and beyond of "normal" highlighting? indenting, etc? | ||
osfameron | parse perl correctly? | 00:04 | |
putter | the oneliner being - the right place to do code analysis and transformation is in perl. | ||
clkao | i want something like ecb working | ||
osfameron | ecb? | ||
clkao | emacs code browser | ||
putter | mugwump: where is this variable used? written to? read from? type analysis. refactoring. | 00:05 | |
clkao | what's the ':' thing for in sub/method params? | ||
osfameron | clkao: ah, I sometimes use project.vim, except it seems to hang a bit | ||
svnbot6 | r3322, clkao++ | Add todo tests for operator overloading. | ||
mugwump | emacs supports this stuff? | 00:06 | |
osfameron | mugwump: also, what class is this variable? (bring on the intellisense!) | ||
emacs contains an Eliza implementation, no? | |||
putter | "search for everything in this call tree which touches an object of class foo". | 00:07 | |
osfameron | rename all methods "foo(Integer, String)" | 00:08 | |
(which will ignore the word "foo" in strings, documentation, variable names, methods of different signatures etc.) | |||
no more s/config/user/g giving "useruration" | 00:09 | ||
clkao makes another test and goes to sleep | |||
good bedside hacks | |||
osfameron | IntelliJ IDEA does all this stuff, rather than the point and click gui-stuff that perl-hackers tend to accuse IDEs of doing | 00:10 | |
clkao++ # hacking *and* chatting on irc | |||
svnbot6 | r3323, clkao++ | Tests for infix operator overloading too. | ||
nothingmuch | cheston.com/pbf/PBF006BCBallerinaSlippers.html | 00:11 | |
clkao | why not? just some tests | ||
now if i wake up and they are magically un-todoed.. | 00:15 | ||
osfameron | you mean if a prince kisses them? | 00:19 | |
oh, todo, not toad. | |||
clkao | p6bible-- # cant do -q to search | 00:21 | |
osfameron | nor perldoc for that matter | 00:22 | |
clkao | ? perldoc does -q | 00:23 | |
for faq | 00:24 | ||
osfameron | clkao: oh yes, but only in faq | ||
:) | |||
and when was the last time you found something useful in perldoc -q ? | |||
clkao | but i consider p6bible has a finite set of known document in its territory | ||
osfameron | good point | ||
svnbot6 | r3324, putter++ | Some t/rules/Disabled/from_perl6_rules/anchors.t fixes. | 00:43 | |
meppl | gute nacht | 00:56 | |
Darren_Duncan | the Locale-KeyedText test suite is now uploaded - it compiles but does not execute citing a few Pugs features missing | 01:02 | |
svnbot6 | r3325, Stevan++ | Perl::MetaModel - adding Perl::Meta::Property and tests; | ||
r3326, Darren_Duncan++ | updated ext/Locale-KeyedText : added full test suite, which compiles but does not execute yet due to missing Pugs features | |||
Darren_Duncan | while doing this, I noticed these omissions or bugs: | 01:03 | |
1. you can not invoke a stateless class method using ClassName.meth_name() ; it says &meth_name doesn't exist | 01:04 | ||
2. The documentation for the 'lib' module needs updating to say that you call import() in a BEGIN block if you want it to work for "use Foo;" | 01:06 | ||
3. The 'Test' module needs to have a can_ok() function like Test::More does, or equivalent | 01:07 | ||
4. Pugs does not throw an exception when you say "use Foo-0.0.5;" and your Foo module declares "Foo-0.0.4;" | 01:08 | ||
... it seems to ignore the version entirely | 01:09 | ||
that's fine for now when getting things up and running, but needs addressing later | |||
A lot of introspection doesn't seem to work now, or I'm not using it correctly. | 01:10 | ||
Mainly #1 is the first show-stopper I'm encountering ... the only work around I can see is exporting my functions and I don't want to do that | 01:11 | ||
5. the introspection features missing | |||
6. 'is constant' is not implemented | 01:14 | ||
that is, does not compile | 01:15 | ||
eric256__ | quite in here today | 02:07 | |
02:07
eric256__ is now known as eric256
|
|||
eric256 | can i do file IO in pugs yet? or should i avoid it for a while? | 02:09 | |
mugwump | t/builtins/io/io.t is not :todo, so I guess so! | 02:14 | |
eric256 | hmmm.. there are tests in reduce. that fail...should they be made :todo? can someone confirm they don't work? | 02:15 | |
thanks mugwump, i'm still getting the hang of this. ;) | |||
x86 | macdaddy.shellshark.net/~x86/fire.gif | 02:18 | |
wow ;) | |||
eric256 | lol | 02:20 | |
people are amazingly stupid | 02:21 | ||
mugwump | you're supposed to light it AFTER it comes out of your mouth :) | ||
x86 | no | 02:25 | |
you light it before | |||
but you're supposed to blow it out before taking it to the gut ;) | |||
most of the time | |||
mugwump | oh it's not kerosene, it's sambuca or something | 02:26 | |
x86 | or at least not spill some of the flammable mixture on your neck ;) | ||
Schwern | Does Mark Lentczner hang out here? | 02:34 | |
06:06
chady_ is now known as chady
|
|||
svnbot6 | r3327, corion++ | Fixed wrong test count | 06:26 | |
06:37
Gruber_ is now known as Gruber
06:44
castaway_ is now known as castaway
|
|||
nothingmuch | morning | 06:53 | |
Khisanth | night! | 06:54 | |
autark-jp | Has anybody else noticed that the output of examples/mandel.p6 differs depending on whether it is run by pugs or -Bparrot? | 07:50 | |
(running it through pugs took me 64m 57s btw vs. 5.8s on -Bparrot :) | 07:51 | ||
autrijus | autark-jp: yes, that's because pugs uses infinite precision (bigrat) | 09:39 | |
svnbot6 | r3328, scook0++ | Style updates for Haddocks | ||
autrijus | autark-jp: and the codegen doesn't use parrot bigrat yet | 09:40 | |
so it's truncated to native float. | |||
the output of parrot is currently the same as mandel.p5 | |||
clkao | autrijus: hey! i committed 2 tests yesterday and it's still todo! this isn't like you! | 09:48 | |
svnbot6 | r3329, iblech++ | * EOLs at EOFs. | ||
r3329, iblech++ | * Usual svn properties added to ext/Locale-KeyedText/t/* and | |||
r3329, iblech++ | clkao++'s t/oo/methods/overload.t. | |||
autrijus | clkao: where is svn.elixus.org backed up? | 09:49 | |
clkao: er. where idd you get the as_string idea? | |||
clkao | autrijus: huh? it's in S06? | ||
autrijus: i have a copy of the dump.. | |||
autrijus | oh, you rewrote it as prefix:<~> | ||
that's good | 09:50 | ||
clkao | oh, because it doesn't parse, so i changed it to normal function name | ||
autrijus | method infix:<+> ($a, $b) { return "$a $b" } | ||
clkao | and accidentally committed | ||
autrijus | this sounds very wrong | ||
I though it's | |||
multi sub infix:<+> (Foo $a, Foo $b) { return "$a $b" } | |||
multi sub prefix:<~> (Foo $a) { return $a.bar } | 09:51 | ||
I don't quite know how it fits into method | |||
maybe | |||
clkao | oh. right. but S06 has method form | ||
autrijus | multi method prefix:<~> () { return $.bar } | ||
I think all builtins are multi subs | 09:52 | ||
ignore the self-inconsistent parts of S06 :) | |||
can you rewrite them as multi subs outside the class definition first? | |||
and maybe ask on p6l about how to do it methodishly | |||
clkao | ya.. but i am busy now | ||
autrijus | (multi userdefined symbolic subs is easier to do and better speccted) | ||
sure, then some helpful gnome please :) | |||
autrijus also needs to run to $work | 09:53 | ||
clkao | summon heplful gnomes | ||
autrijus | & | 09:54 | |
iblech | clkao: /me will do that | 09:57 | |
svnbot6 | r3330, iblech++ | Added the utf-8 equivalent to >>~<<. | 09:59 | |
quietus9 | maybe not the most useful thing in world but | 10:00 | |
i ported roman.pm to perl6 | 10:01 | ||
perlbot nopaste | |||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
svnbot6 | r3331, iblech++ | * Added more overloading tests (objects in arrays, hyperification). | 10:08 | |
r3331, iblech++ | * There're two class definitions now in overload.t, one uses multi methods and | |||
r3331, iblech++ | the other uses multi subs to overload operators. | |||
10:13
Aragone is now known as Arathorn
|
|||
svnbot6 | r3332, iblech++ | Started the OO quickref. | 11:43 | |
11:48
chady is now known as chady_
|
|||
svnbot6 | r3333, scook0++ | More function type declarations. | 12:03 | |
r3334, iblech++ | Some more work on quickref/oo. | 12:04 | ||
nothingmuch | truss-- | 12:25 | |
svnbot6 | r3335, masak++ | spelling in perl6_meta_model.pod | 12:57 | |
alexg_ | I'm trying to build Pugs 6.2.3 on OSX 10.4 (Tiger), but I'm getting link errors (everything seems to compile fine: | 13:04 | |
Linking ... | |||
___DISCARD__ | |||
collect2: ld returned 1 exit status | |||
make: *** [pugs] Error 1 | |||
Anyone seen anything similar? | |||
autrijus | alexg_: sudo gcc_select 3.3 | ||
it's in the README of trunk | |||
alexg_ | Thanks | 13:05 | |
autrijus | np :) | 13:06 | |
wilx | Alex G....Ali G.? :) | 13:10 | |
svnbot6 | r3336, autrijus++ | * be more googleable with the Tiger gcc4.0 hint | ||
autrijus | yay I finally finished reading the poignant guide | 13:11 | |
why++ # and for redhanded.hobix.com/inspect/autriju...Puppy.html too | 13:12 | ||
osfameron | I couldn't get past the second page | 13:13 | |
it's very self-indulgent | |||
(the poignant guide to Ruby, I mean) | 13:14 | ||
wilx | Hehe, nice article :) | ||
theorbtwo | The poingnant guide to Ruby was rather fun, I thought. | 13:15 | |
Though it didn't convince me that Ruby was worth the effort. | 13:16 | ||
autrijus | ruby does have lots and lots of good ideas :) | ||
osfameron | I tried really hard to read it... | ||
wilx | Hmm, Ruby seems to me like crippled Smalltalk. | ||
autrijus | (and it's evident that larry .dup, I mean .clone'ed most of them) | ||
stevan | wilx: a smalltalk without the IDE | ||
autrijus | wilx: that is right. | ||
smalltalk with a perl5 syntax! | 13:17 | ||
stevan | autrijus: I have been reading a lot about Smalltalk metaclasses | ||
I think if we add the proper syntax level hooks | |||
we can make a refactoring browser with ease | |||
autrijus | yup. | ||
I've been reading up more and more on smalltalk and lisp too | |||
stevan | I am reading the classic Smalltalk 80 manual | 13:18 | |
wilx | stevan, IIRC GNU Smalltalk doesn't have any IDE: ) | ||
autrijus | there are few languages that can't be said as a crippled version of smalltalk and/or lisp :) | ||
stevan | I alwasy knew it would come in handy :) | ||
wilx | Hehe. | ||
stevan | wilx: never used GNU, I always used Squeak | ||
wilx | Well, there are languages that don't claim everything being object. | ||
autrijus | (but Haskell is one. it looks like Perl 6 can be one, too.) | ||
stevan | SML, Erlang | 13:19 | |
autrijus | wilx: right, sure, but that may be viewed as "crippled" | ||
wilx | Heh. | ||
I guess, for somebody. | |||
stevan | FOrth :) | ||
theorbtwo | RPL may be one of them. | 13:20 | |
stevan | SNOBOL | ||
APL! | |||
autrijus | forth is a crippled version of itself :D | ||
theorbtwo | RPL is like an unholy alliance of forth and lisp, as I understand it, with some other things thrown in. | ||
stevan | :D | ||
SM_ax | I like "absolutely nothing in common with PHP" about haskell :) | ||
autrijus | SM_ax: thank you. I really tried | ||
but can't come up with anything ;) | 13:21 | ||
svnbot6 | r3337, luqui++ | Added an option to specify your own hsc2hs. | ||
autrijus | bbiab. | 13:22 | |
clkao: I'll perhaps do userdefined symbolic first | 13:23 | ||
clkao: the finer details of overloading depends on some rulings... I asked on p6l. | |||
Limbic_Region | autrijus - I think you need to add a version level in the roadmap | 13:24 | |
kind of like the "junk drawer" | |||
autrijus | elaborate? | 13:25 | |
Limbic_Region | reads along the lines of - wait for @larry to finish spec'ing out all the missing chapters | ||
:-) | |||
autrijus | nah. we don't wait, we improvise :) | 13:26 | |
svnbot6 | r3338, kolibrie++ | started quickref/var | ||
luqui | hello | 13:28 | |
stevan | morning luqui | ||
luqui | it seems my new architecture doesn't like ghc | ||
I replaced my Fedora x86 with gentoo amd64 and ghc now just dies whenever I run it :-( | 13:29 | ||
rather, when I run things compiled by it | |||
autrijus | luqui: oh. you want ghc-cvs latest | 13:34 | |
as of at least 4 days ago | |||
s/least/most/ | |||
putter reported that the issue with amd64 was fixed there | |||
stevan | autrijus: do we have multi-methods yet? | 13:35 | |
stevan is looking for tests right now | |||
autrijus | stevan: sure we do | 13:36 | |
luqui | autrijus, oh... I have to build it again, huh? | ||
stevan | autrijus++ | ||
luqui | well, back in two hours. thanks :-p | ||
j/k | |||
stevan | autrijus: I dont see any tests though, so I will implement a few :) | ||
autrijus | go ahead :) | ||
luqui: pray tell, what is manhattan mmd? | 13:37 | ||
stevan | its the red thin kind, as opposed to the new englang MMD which is white and creamy with potatoes | 13:38 | |
(sorry clam chowder joke) | |||
autrijus | heh :) | ||
stevan | Nice, Test::Builder is looking close to being ready to use | 13:39 | |
integral | presumably mmd that uses manhattan distance? | ||
stevan | I talked to chromatic already about a Test::Builder::Tester too | ||
autrijus | integral: ahh. | 13:41 | |
instead of straight inheritance distance? | |||
i.e. you can count distance with two types that does not belong to each other? | |||
luqui | well, "straight inheritance distance"? | ||
autrijus | (as long as they share a common ancestor) | 13:42 | |
luqui: Foo isa Bar isa Baz... distance(Foo,Baz) = 2 | |||
luqui | no. manhattan isn't really the issue | ||
but that's how I'm referring to it | |||
it's inheritance distance at all that bugs me | |||
but manhattan refers to measuring the manhattan distance in the dimension of the arity | |||
foo($a, $b) checks by adding together the distances of $a and $b to each checked type | 13:43 | ||
autrijus | hrm. strangely, pugs does it the other way | ||
it mmds with $a first and use $b as tiebreaker | |||
luqui | ahh leftmost | ||
autrijus | right. is that wrong? | 13:44 | |
luqui | that only happens when $a is followed by a colon in the declaration | ||
autrijus | er | ||
I thought the argument types are not used in MMD _at all_. | |||
only invocant types cuont. | |||
count | |||
luqui | yeah, hang on | ||
autrijus | or are you saying that the sum of inv types uses the args in leftmost order as tiebreaker? | ||
luqui | multi foo(Foo, Bar: Baz); # manhattan on Foo and Bar | ||
multi foo(Foo: Bar: Baz); # leftmost on Foo and Bar | 13:45 | ||
autrijus | wtf? | ||
multiple colons? | |||
luqui | yeah... I think that's in an AES somewhere | ||
maybe it's changed, but I haven't heard anything | |||
autrijus | it's not in s06. | ||
luqui | hmm | ||
autrijus | I don't remember that at all | ||
it strikes me as borderline insanity ;) | 13:46 | ||
luqui | well, invocants at all are starting to strike me as insanity | ||
svnbot6 | r3339, Stevan++ | Perl::MetaModel - adding allSubclasses() method (and tests) | ||
luqui | I'll p6l it. | 13:47 | |
autrijus | please do. | ||
I'm switching to manhattan as you said. | |||
(for (Foo, Bar: Baz)) | |||
luqui | okay | 13:48 | |
do you have an inheritance metric? | |||
clkao | autrijus: ok.. | 13:49 | |
autrijus | luqui: bottom of svn.openfoundry.org/pugs/src/Pugs/Context.hs | ||
it's likely All Wrong but I can't find a reference :) | 13:50 | ||
I'll bbiab :) | |||
luqui | looking | 13:51 | |
er, this cvs repository doesn't come with a configure. It just configure.ac and stuff (I have no idea how to use autoconf) | 13:53 | ||
I've determined that I have to run autoconf and aclocal | |||
what else? | |||
integral | they don't have a autogen.sh file? | ||
luqui | doesn't look like it | 13:54 | |
cerainly not named that | |||
jhorwitz | luqui: usually automake too. those three usually get the job done in absence of an autogen.sh | ||
luqui | * going to #haskell | 13:55 | |
theorbtwo | aclocal && automake && autoconf, IIRC. | 13:57 | |
x86 | i read that as "alcohol" :P | 14:11 | |
svnbot6 | r3340, autrijus++ | * switch to Manhattan distance for MMD dispatch on invocants. | ||
r3341, autrijus++ | * minor patch to quickref/var | |||
luqui | ugh, building ghc is such a pita | 14:13 | |
and not the tasty kind | |||
stevan | little hummus, some babaganoush | ||
luqui | and they're off building haskell with haskell | 14:23 | |
and it dies | 14:25 | ||
Vaevictus wonders about the pugs ebuilds | |||
luqui | damnit, even my 6.2.1 build doesn't work | ||
Vaevictus | lol ... 6.0.11 | 14:26 | |
luqui | fairly old | ||
Vaevictus | yeah. :( ... it did build... now to make a new one in my overlay | 14:27 | |
how old is it, specifically? | |||
stevan | autrijus: just commited the test for multi methods | ||
it does not do the type based dispatching though | 14:28 | ||
luqui | well, there was no 6.1, so it's not as old as it seems | ||
stevan | it behaves very similar to the way old multi-subs did,.. always going to the Bool method | ||
Limbic_Region | $larry just commented on the multi-colon multi-method thing leaving it a bit less clear | 14:30 | |
luqui | haha | ||
how was that unclear, though? | |||
svnbot6 | r3342, Stevan++ | t/oo/methods/multi.t - tests for multi-method dispatching | ||
Limbic_Region | I didn't say unclear - just less clear | 14:31 | |
luqui | oh... does anything need clarifying though | ||
I'm pretty sure I grok it | |||
Vaevictus | lol | 14:33 | |
ghc is old in portage too | |||
luqui | 6.4.2? | 14:34 | |
theorbtwo | YAPC::NA hackathon is 23-26, right? | ||
Limbic_Region | luqui - I think the part where $larry says "maybe" leads me to believe it is subject to change | ||
stevan | theorbtwo: yes | 14:35 | |
Limbic_Region mumbles something about "what isn't subject to change" | |||
luqui | ohhhh that reply | 14:36 | |
svnbot6 | r3343, Stevan++ | Perl::MetaModel - Spelling error :) | ||
luqui | I was behind | ||
Vaevictus | hmmm | 14:37 | |
6.4 looks masked | |||
luqui | autrijus, on the final one, no tiebreaking is used | ||
multi foo(Foo: Bar: Baz) | |||
multi foo(Foo: Bar: Quux) # illegal, already a foo:(Foo: Bar:) | |||
everything interesting is masked | 14:38 | ||
lumi | Hi | 14:41 | |
svnbot6 | r3344, Stevan++ | Perl::MetaModel - "You cannot instantiate an AbstractClass" in docs/create_your_own_object_model.pod | ||
Limbic_Region | Lo | 14:42 | |
lumi | I'm having trouble building parrot | 14:43 | |
Where are the parrotians hiding? | |||
luqui is kind of a parrotian | 14:46 | ||
lumi | I tried both the svn and the release, and make dies a horrible death | ||
luqui | how? | ||
lumi | Er, paste? | 14:47 | |
perlbot: nopaste? | |||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
Limbic_Region | perlbot nopaste | ||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
luqui | lumi, we could also retire to irc.perl.org#parrot | ||
pasteling | "lumi" at 62.90.49.81 pasted "Parrot make dies like so" (26 lines, 1.3K) at sial.org/pbot/10196 | 14:48 | |
lumi | I'm there as well | ||
luqui | yikes | ||
Limbic_Region | lumi - you could hide the problem by not compiling the switched core ;-) | 14:49 | |
lumi | It's a Mandrake linux with Perl 5.8.6 | ||
luqui | what gcc? | ||
lumi | gcc (GCC) 4.0.0 (4.0.0-3mdk for Mandriva Linux release 2006.0) | ||
Limbic_Region bets 4.0 | |||
lumi | Gosh | 14:50 | |
luqui | 4.0... hmm | ||
can't say I have any experience with that | |||
are you compiling with optimization? | |||
lumi | Just plain vanilla Configure and make | 14:51 | |
luqui | I don't think that defaults to optimization | ||
lumi | Can't imagine that turning on optimization would help | ||
luqui | certainly not :-) | ||
It looks like a gcc bug though | |||
so just don't compile the switch core | 14:52 | ||
lumi | Okay | ||
Umm | |||
How? | |||
luqui | 'cept, I don't know how to tell it to do that | ||
Limbic_Region | scary - that's what I said | ||
luqui goes to #parrot | |||
Limbic_Region thinks it is a perl Configure.pl option | |||
Limbic_Region hasn't compiled parrot in months though | 14:53 | ||
luqui | yeah, but it's undocumented | ||
Limbic_Region | perl Configure.pl --help | ||
oh | |||
Limbic_Region was thinking of the computed goto core | 14:54 | ||
--cgoto=0 | |||
luqui is researching the problem | 14:55 | ||
Limbic_Region hopes luqui and the #parrot folks can help | |||
luqui | hmm, looks like it's on by default | 14:59 | |
Limbic_Region thought the switched core was THE default? | 15:00 | ||
luqui | grr | 15:01 | |
it seems that nobody figured the switch core would fail to build | |||
lumi, do you have gcc-3.3 or something that you could use instead? | 15:02 | ||
lumi | I do now | 15:04 | |
lumi tries it | |||
Same | 15:05 | ||
Oh mh | |||
ajs | Side note on colons: S29 as it stands still relies on colon delimeters for optional parameters. As I understand it, that's now dead, correct? I'm working up a huge diff to change it, but don't want to finalize that until I'm clear. | 15:06 | |
lumi | No, same | 15:07 | |
luqui | really?... really? | 15:08 | |
that doesn't make sense | |||
lumi | The "oh mh" was "I didn't make clean" | ||
But it still does the same | |||
ajs | Nevermind. I was mistaking invocants on a sub for the old style ";" (not colon) separator for optional params | 15:10 | |
now if I just knew what invocants on a sub were all about :-/ ... so many edge P6 things I have not absorbed... | 15:11 | ||
lumi | Subs have invocants? | ||
ajs | multi subs can... but I'm not sure what that means | 15:13 | |
S6: "Multimethod and multisub invocants are specified at the start of the parameter list, with a colon terminating the list of invocants:" | |||
luqui | invocants are things that get multimethod dispatched on | 15:14 | |
non-invocants are ignored by mmd | |||
ajs | Right... so if I have "class Foo { ... }" and "multi sub x(Foo $i:)", then I still have to call it as "x($obj)", correct? Or can I invoke it on $obj as $obj.x and "steal" that method slot from the class? | 15:16 | |
luqui | I think x($obj) and $obj.x are equivalent in that case | 15:17 | |
lumi | Thanks, luqui | ||
Or is that spelt luqui++ ? | |||
luqui | the latter is better :-) | 15:18 | |
nah, doesn't matter | |||
I don't think our bot keeps track | |||
ajs | So if module A defines "class A { method x() {...} }" and module B defines "multi method x(A $inv:)" who wins? | ||
luqui | an ambiguity error? | ||
or redefinition error | 15:19 | ||
ajs | This seems like a kind of slippery slope. I worry about modules not bothering to sub-class because they can just be full of methods that get added to the increasingly bloated base classes..... | ||
But it does allow for what I see in S29, so I'll revise my view of it, and re-read from scratch | 15:20 | ||
thanks luqui! | |||
luqui | yeah, and perl's not going to keep you from designing a particular way | ||
maybe the bloated base class is the right idea for My Project | |||
luqui has been pushed into working on a Java project | 15:21 | ||
luqui is annoyed at being forced to design software a particular way | |||
luqui especially when it's the wrong one | |||
ajs | Well, perl does keep you from designing some ways... for example, you can't just re-defined a constant or change someone's private attributes... I just assumed you couldn't add methods to a class from outside the class definition in the same way.... | ||
lumi | Mixing in stuff in classes is good | 15:22 | |
luqui | ajs, well, you can change someone's private attributes | ||
but you have to work hard at it | |||
ajs | Hrmm... "mixing in" has a special meaning WRT P6 | ||
lumi | Java tries awfully hard to stop people from doing fun stuff | ||
As in Roles? | 15:23 | ||
luqui | I like C++ because I can convince macros and templates to do what I want in a type safe way most of the time | 15:24 | |
roles at runtime | |||
ajs | Roles are the core mechanic behind mixins, but you don't usually create a mixin out of someone's metaclass in-place, which is what this sounds like | 15:25 | |
That's some ugly black magic, and I'm a little scared about how easy we're making such dark deeds | |||
luqui | wait, what does it sound like? | ||
'splain more | |||
lumi | I saw this done in Smalltalk | 15:26 | |
Basically I guess it's safe as long as you are either expanding, or wrapping, or really knowing what you're doing | |||
ajs | Ok, so by adding a method to an existing class, you're saying "class A does role { method mynewmethod (...) {...} } {...}", but you're donig it once the class is defined. The only way to do that would be to add a role to the metaclass at run-time | 15:27 | |
lumi | Extending maybe | ||
PerlJam | ajs: er, no. | ||
luqui | not to the metaclass, just to the class | ||
ajs | PerlJam: how so no? | ||
luqui | and not at runtime, just at post-class-definition time | 15:28 | |
PerlJam | ajs: lots of ways probably. | ||
lumi | No, you're talking about defining a method on a class, at compile time | ||
PerlJam | ajs: what you add a method to an existing class ... you're adding it to the class. | ||
ajs: or you could add it to an anonymous clone | |||
ajs: or you could add it to just the object (if that is your wont) | |||
luqui | it helps to think of classes in perl simply as data types, not collections of methods or anything any fancier | 15:29 | |
ajs | Sorry, lumi, I was taking the long view on "run time" vs "compile time". That is, relative to any piece of code, "run time" is that time that other code is executed after you are. | ||
luqui | then your definitions describe how those classes behave | ||
ajs | lumi: I know that's not the usual P6 definition, but it's one that works well for p6-like dynamic languages | ||
luqui | hey thomas | 15:30 | |
TSa-Perl6 | HaloO | 15:31 | |
ajs | PerlJam: I think you came in late. We're describing a particular thing that happens when you say: "multi sub x(Foo $invocant:)" as perl S6. That, as far as I can tell, modifies the *class object* (I stand corrected, not the metaclass) directly, from outside of the class derf | ||
TSa-Perl6 | actually it's TSa | ||
ajs | er class def | ||
and "as per S6" not "perl S6" | |||
luqui | TSa-Perl6, what do you mean? | ||
putter | luqui: The README contains some hints on building w amd64. Let me know if you have any questions. | ||
luqui | mmk | 15:32 | |
luqui goes back to trying to build | |||
PerlJam | ajs: okay. Perl lets you modify classes at will. So what's the problem? | ||
luqui | putter, which README? | ||
putter | pugs | 15:33 | |
luqui | ohhh | 15:35 | |
ajs | PerlJam: My problem is that without that syntax, modifying a class object requires some very scary looking direct manipulation of the class object. With "multi sub"s that have invocants, we just gift-wrap it and practically beg programmers to use it. I'm not CONVINCED that that's a huge deal... but I've got goosebumps I didn't have 5 minutes ago | ||
PerlJam | Hmm. Can you give an example of the "scary looking direct manipulation"? | 15:36 | |
ajs | It's also very bad for the maintainer. You never know where to look to find the code that is invoked for a particular class | ||
luqui | Scary direct manipulation in Perl 5: | 15:37 | |
sub Foo::mymethod { ... } | |||
:-) | |||
ajs, maybe that's a good thing. After all, the code for MySpecialAddition probably belongs in MySpecialAddition, not the Nums it acts on | 15:38 | ||
putter | wilx: re ruby and st, it's odd how much figuring out a languages strengths seems to be an "art form"... in the | ||
ajs | luqui: that's a sub. I'm not SO worried about a static sub being defined that way (though it also seems kind of odd outside of a class def) | ||
luqui | ajs, that's a method in Perl 5 | 15:39 | |
it's exactly the same thing as what you're talking about using the Perl 5 model | |||
ajs | Yeah, I know... but in P6, I don't think you can just say "class A { method B::mymethod(){...} }" | 15:40 | |
luqui | and worse, that sub is allowed to access private data in Foo, which Perl 6 multis are not | ||
ajs | or can you...? | ||
putter | case of ruby, its perlish text handling facility and very powerful eval make it one of the best metaprogramming environments ive seen. | ||
osfameron | in what way is its eval powerful ? | ||
luqui | you spell it multi sub mymethod(B $b) | ||
putter | For example, one can create a text table (here doc) with a description, optimized for clarity, of what you want to do, | 15:41 | |
PerlJam | ajs: read the section of S12 entitled "Open vs Closed Classes" | ||
ajs | luqui: and thus, we're back to my concern | ||
luqui | you're concerned about spelling it with a multi instead of two colons? | ||
PerlJam | luqui: yeah, that's what I'm thinking | ||
(that he's concerned about) | |||
I just don't get it I guess. | |||
putter | pull it apart with regexps, and eval the software into existence. I like it better than even CL for some things. | ||
ajs | PerlJam: open vs. closed classes are different. I have no beef with someone saying "class A {...} class A {...more...}". | ||
luqui | maybe we could allow method B::mymethod() as an alternative. | 15:42 | |
oh, by the way, in perl 6 you can't define methods on another class within a definition of a class | |||
it would assume that the first invocant was the current class | |||
... maybe (/me thinks about the class Foo; form (as opposed to the class Foo { } form) ) | 15:43 | ||
putter | osfameron: compile time equivalence. create lexicals, etc (though that may be going away). I guess the part I didnt mention is | ||
ajs | I guess I'll just have to stand back and watch, and hope that most users don't think to use this tool. I simply can't imagine any code that would have reason to use it | ||
luqui | MySpecialAddition | 15:44 | |
? | |||
How else do you define new behavior on Nums? | |||
putter | things which are syntax in other languages (eg "has") are simply normal functions. so the runtime ruby code is very much operating on itself. another aspect | ||
ajs | By modifying Num? | ||
luqui | putter, in perl 6, has is syntax, but it is really just a compile time sub call stated as a macro | 15:45 | |
ajs | Or sub-classing, or mixing in to an instantiated object, or.... | ||
15:45
TSa-Perl6 is now known as TSa
|
|||
luqui | ajs, I mean existing Nums | 15:45 | |
to catch code that uses them unawares | |||
putter | of the nice evals is that they are a couple of variants targeted at different scopes (eg, "eval in class" etc). | ||
ajs | Existing Nums (an instance) or existing "Num" (the class) | ||
luqui | code that uses "Num" without marking it special in any way | 15:46 | |
ajs | Modify Num | ||
putter | luqui: the point is in ruby one doesnt have a compile/run-time macro/not distiction. makes things nicely cleaner. | ||
luqui | and add multis on it? | ||
okay, so you're basically advocating that we define all relevant multis within the classes that it uses (horrible sentence) | 15:47 | ||
hmm | |||
osfameron | putter: sounds interesting and vaguely lispy. | ||
ajs | Yes and no... given polymorphism and mixins, then yes, but that's a huge given, as it allows you to: | ||
lumi | So Ruby basically has a different flavour of no syntax than lisp? | ||
luqui | putter, how can ruby not have a compile time? | ||
putter | Anyway, my point simply being "ruby isnt merely a smalltalk w defects", but has some nifty strenths st doesnt. | 15:48 | |
ajs | my Num $x = something(...); $x.somemethodthatNumneverheardof; | ||
luqui | exactly | ||
that's what we want | |||
lumi | It's Smalltalk with p5re? | ||
ajs | That requires exactly no modification of Num | ||
luqui | when you define a multi on Num, you're modifying it, if you want to look at it that way | 15:49 | |
ajs | That's just garden variety polymorphism | ||
Who said $x is a Num? | |||
luqui | your declaration | ||
ajs | Nope | ||
luqui | oh | ||
right | |||
the question is, how do you get something() to return a Num that can do somemethodthatNumneverheardof without knowing it | |||
ajs | Add in mixins, and your options expand exponentially without ever touching the base class | 15:50 | |
It doesn't return a NUm | |||
luqui | let's say it does | ||
let's say somethingelse() returns a plain old Num, and I'd like to do this: | |||
ajs | And now you're back to what I said I can't imagine a need for | 15:51 | |
luqui | my $x = somethingelse(); $x.somemethodthatsomethingelseneverheardof() | ||
custom operators? | |||
my $x = somethingelse(); my $y = $x (+) 1; | |||
lumi | Look perhaps at the Squeak code, it does this often | ||
ajs | Custom operators can be defined on your own sub-class of Num just fine | ||
lumi | Although it doesn't have mixins/traits by default | ||
luqui | but somethingelse() doesn't return your special sub-class | ||
it returns a regular old Num | 15:52 | ||
ajs | And can be polymorphically handed to things that don't know anything about your class | ||
lumi | You could mix it in, | ||
ajs | ok so, you: my $Num = MyNum.new(somethingelse()); | ||
lumi | my Num $x = something(...) but CrazyNum; | ||
ajs | or: my $Num = somethingelse() but MyNumRole; | ||
lumi: yes | 15:53 | ||
and "my Num $x" in my example, not "my $Num" | |||
luqui | sure, but you don't want to do that, because (+) is a perfectly good operator that can be used on any Num | ||
ajs | luqui: what's special about a Num? | ||
luqui | it's the example I'm using | 15:54 | |
(+) doesn't make sense on anything but nums (until some module says otherwise) | |||
ajs | right, but what's specail about it that makes you want to modify it vs. using polymorphism or mixins. There's something that makes you want to modify it from the outside that I'm not seeing | 15:55 | |
putter | luqui: err, because the language design has emphasized hiding the distinction? eg, in p5, you could edit @ISA, but the docs warn you off it as having flakey caching issues (or once did). in rb, that kind of thing is much more accepted, and so is made to work. | ||
ajs | luqui: No, (+) makes sense on every sub-class of Num that doesn't explicitly prevent it from working | ||
luqui | ajs, sure | ||
PerlJam | ajs: so ... in order to use an operator that operates on Num but wasn't conceived of at the time that the Num class was created, I have to subclass? or what? | 15:56 | |
luqui | so you're saying I should modify Num to have that operator in it? | ||
ajs | and of course on every mixin (which is just a run-time anonymous sub-class) | ||
PerlJam: you have a very large number of options. Depends on what you want to do | |||
luqui | we want to add (+) to operate on Every Num Ever | 15:57 | |
PerlJam | ajs: what if I just want to define the operator that operates on Num and never touch the Num class? | ||
"never touch" is probably a bit of an overstatement :-) | |||
luqui | I think the misconception might be that the definition of a new method is touching the class somehow | 15:58 | |
ajs | Then do so. Nothing stoping you. It's just: multi sub infix:(+) (Num $a, Num $b) {...} | ||
luqui | it's not, it's just defining the method | ||
ajs | no modification of Num there | ||
luqui | ajs, exactly | ||
ajs | no modification of num there | ||
luqui | so what's the problem? | ||
PerlJam | ajs; Then I remain in a state of non-understanding the problem you're getting at | ||
luqui | how is a method any different from an operator? | ||
PerlJam | luqui: because "it modifies the class" | 15:59 | |
luqui | the operator could very well do that too | ||
and the method could very well not do that :-) | |||
oh | |||
PerlJam | indeed | ||
ajs | Now, if you wrote: "multi sub mymethod(Num $inv:) {...}" you directly modify an existing class, potentially violating assumptions that other classes had (e.g. that it did not offer some feature, and thus would throw an excpetion) | ||
luqui | nevermind | ||
ajs, an assumption about *not* providing a feature is liskov-incompatible | 16:00 | ||
ajs | luqui and PerlJam: please keep your questions to one at a time each. I can't answer 10 questions that fast | ||
luqui | okay, we'll wait | ||
PerlJam | ajs: I'll just shut up and let you guys hash it out if one of you summarizes to p6l :-) | ||
ajs | I think this would be better on p6l anyway... Let me just pop over there... | 16:01 | |
luqui | yeah, now you know what about your problem we're not understanding, so you can explain it better | ||
lumi | An operator is just a pretty method | ||
luqui | lumi, that's how I think of it | 16:02 | |
lumi | Or not, in the case of [>>+~$<<] or however that went | ||
luqui | well, no, I think a method is a pretty operator | ||
[>>+^=<<]? :-) | |||
lumi | Yes, that | ||
luqui envisages the anti-perl world loving that one | |||
luqui personally is opposed to that operator because you can't describe what it does to a computationally literate person in one sentence | 16:04 | ||
lumi | It reduces over a list of lists by xoring the items' numeric values? | 16:06 | |
Am I close? | |||
In place? | |||
PerlJam | luqui: I challenge you to adequately describe reduce in one sentence | ||
luqui | lumi, that's pretty close | ||
PerlJam, touche | |||
maybe that comes with computationally literate? | |||
PerlJam | well, define that term a little then :) | ||
luqui | that "one sentence" thing is a principle I made for myself just now | 16:07 | |
it clearly sucks | |||
lumi | Is my one sentence too computationally unfeasible? :P | ||
luqui | lumi, I just didn't think it was precise enough | ||
PerlJam | I know many people who are "computationally literate" but have no idea about reductions or lambdas or big-O or even recursion. | ||
luqui | you could do what you described a number of ways | ||
PerlJam, programattically literate? | 16:08 | ||
ajs | Ok, S12 cleared it all up | ||
PerlJam | luqui: yes. | ||
luqui: these things are just outside their realm of experience. | |||
wolverian | PerlJam: the mathematical definition of reduce is trivial to describe in one sentence | ||
ajs | multi subs DO NOT modify the class at all | ||
luqui | PerlJam, computersciencely literate? | ||
PerlJam | And not having a CS background, they didn't get exposed to them in school either. | ||
wolverian | PerlJam: however, the binary combinator approximation is not :) | ||
luqui | anyway, I've rejected my principle | ||
ajs, if you want to think of it that way | |||
that's how I think of it | 16:09 | ||
ajs | multi subs define multiple dispatch methods, normal methods define single dispatch. dot-nottation searches single dispatch first, and then looks off in the MMD tables | ||
lumi | The type system and the dispatch on it are orthogonal I guess | ||
PerlJam | wolverian: Heck, that makes me respect perl6 even more because it can describe all of that in one compound operator! ;) | ||
luqui | ajs, nowdays we're considering single dispatch just to be multi dispatch with one invocant | ||
ajs | lumi: yeah | ||
luqui: S12 says no | |||
wolverian | PerlJam: I respect perl6 mostly because it is the first language I know of that lets you use the mathematical definition | 16:10 | |
lumi | Call it a "type" and not a "class" and you've solved the class altering problems :P | ||
luqui | ajs, where? | ||
ajs | quote: The caller indicates whether to use single dispatch or multiple dispatch by the call syntax. The "dot" form and the indirect object form default to single dispatch. Subroutine calls with multiple arguments and operators with multiple operands default to multiple dispatch. | ||
luqui pulls up S12 | |||
ajs | it's an ordered search | ||
luqui | but you can't ever define a multi method and a single method on the same single invocant | ||
PerlJam wonders how often people will use multiple dispatch vs. single dispatch :) | |||
luqui | so the two pieces of the search merge into one | ||
Limbic_Region | PerlJam - I have the feeling that most people who start using p6 will have very p5ish looking code | 16:11 | |
luqui | basically class A { method foo(B) } is converted exactly into multi sub foo(A: B) | ||
ajs | luqui: that has to be wrong. Do you search the entire class heirarchy to find a conflict? What the the tree changes after you define your multi? | ||
Limbic_Region | and just like in p5 - as you explore and begin to be exposed to "new things", they will slowly become adopted | ||
luqui | ajs, all I know is that's how larry seems to be referring to it | 16:12 | |
ajs | Ok, so I have a DIFFERENT p6l message to compose ;-) | ||
thanks | |||
luqui | sure | ||
Limbic_Region | so to provide my answer to your musing - I would say very few at first and after a couple of years - quite a few | ||
luqui pianos | 16:13 | ||
Limbic_Region is basing this off the fact that most of his p6 to date has been very p5ish | |||
PerlJam | Limbic_Region: perhaps. | 16:14 | |
I think some people view multiple dispatch as a step backward in a way because it "feels less OOPy" :) | 16:15 | ||
Limbic_Region | I don't | ||
people have been using multi-method dispatch in p5 forever (without knowing it) | |||
PerlJam | Or maybe it's just a concept that people have to get used to in order to use it. | ||
Limbic_Region | the top part of the sub is argument handling | ||
PerlJam | like recursion | 16:16 | |
Limbic_Region | the portion of code that gets executed is based off the result of that handling | ||
Odin- | I think people will get used to it. | ||
Limbic_Region does too | |||
Odin- | Most of the new features will get used ... it's just a question of time. | ||
PerlJam | the more examples of it, the better IMHO though. Show people the power where ever you can. | 16:17 | |
Limbic_Region | as soon as you tell them that instead of making 1 huge clunky looking sub, you can modularize it and have it "just work" | ||
PerlJam wanders off to meet with a contractor | |||
umbop | will perl6 handled reference / derefence in a completely different way? | ||
Limbic_Region really sees MMD as being important when people don't use named args in p5 | |||
Odin- | Perl already is a unique mix of features and you're adding several unusual features in. That'll take a while to sink in... | ||
Limbic_Region | umbop - when/where possible, p6 will autodereference for you | ||
umbop | ahh | 16:18 | |
how handy | |||
Limbic_Region | so my $foo = hash {}; $foo<key> = 42; | ||
does what it is supposed to | |||
umbop | cool | 16:19 | |
luqui | some people are of the impression that it does that too much | 16:23 | |
svnbot6 | r3345, Stevan++ | Perl::MetaModel - Property handling methods coded and tested | ||
Limbic_Region | luqui - is that because they are lumping other sub/method functionality in with MMD? | 16:24 | |
luqui | no, the too much referring to the autodereferencing | 16:26 | |
Limbic_Region | oh | ||
I just think it will take getting used to | 16:27 | ||
luqui - so with the Ss coming out before the As and Es, what is the process for asking about the gritty details (enhanced pack/unpack in [AES]09 for instance)? - Just send a note to p6.l ? | 16:32 | ||
luqui | yeah, or ask me, and if I don't know, ask p6l | ||
in the case of pack/unpack, go straight to p6l | |||
Limbic_Region | ok - well, I was just looking at perlmonks.org/index.pl?node_id=332117 | 16:33 | |
luqui | small correction - with the Ss coming out *instead of* the As and Es | ||
Limbic_Region | "Perl6 Timeline By Apocalypse" | ||
oh | |||
luqui | hmm, I hadn't seen that | 16:34 | |
Limbic_Region | lot's of great stuff in there that hasn't been documented yet | ||
aside from p6.l that is | 16:35 | ||
and I have only recently started following the list | |||
luqui | oh, that was before A12 huh? | ||
Limbic_Region | given the post date - yes | ||
luqui | actually I have seen that, but it was in text only form | 16:36 | |
that was before we decided to abandon the apocalypses | |||
Limbic_Region | right - but the subjects themselves still need to be spec'd well enough to be generalized in the Synopsises right | ||
luqui | sometimes | 16:37 | |
knewt | oooh. the p6 periodic table printed out on a colour laser looks rather nice | ||
luqui | with pugs here, some things are just obvious enough not to need speccing | ||
that needs to be modified to include [] :-) | |||
Limbic_Region | I agree, but everytime I mention something not in pugs - autrijus says "where is that spec'd" | 16:38 | |
knewt | well, the periodic table is a year old now | ||
Limbic_Region | I reply - in unwritten chapter X | ||
luqui | Limbic_Region, good point | ||
yeah, he does generally only bite on things that are documented somewhere | 16:39 | ||
anyway, any time he does that, you can write an obvious spec to p6l, say "is that reasonable", and Larry will probably say "mostly, except ..." | |||
and there's your spec | |||
Limbic_Region | and everytime I write the list saying "what behavior should x have so that I can write tests so that it can be implemented" - I mostly get "it hasn't completely been spec'd yet" | ||
anyway - I am not complaining - really | 16:41 | ||
luqui | well, the design team moves slowly, but we tend the lists pretty well, so the best way to get things fleshed out is to ask questions | ||
I don't think you're complaining | |||
Limbic_Region | It is just that there really isn't much I feel capable of helping with - but writing tests is one | ||
luqui | I know exactly how you feel | ||
being the fellow who said, before pugs, "I'd love to work on the compiler" | |||
Limbic_Region was truly disapointed with the coroutines thread he initiated | |||
luqui | I'm pretty disappointed that it's in a language that I'm still unable to understand | 16:42 | |
Limbic_Region | heh | ||
luqui | well, that one came down to one of the few debates that went unresolved among @Larry | 16:43 | |
Limbic_Region | well, my argument is two fold | ||
1. Parrot already provides the functionality that mostly resembles coroutines in other languages | |||
2. People from other languages looking for coroutines aren't going to be looking for it to be spelled the way p6 apparently is spelling it | 16:44 | ||
luqui | "gather" ? | ||
well, we're also saying "coro" or something, but that's where the debate came up | |||
Limbic_Region | gather/take versus plain jane yield | ||
luqui | well gather/take is really for generators, which happen to be related to coroutines | 16:46 | |
coroutines with yield are really a different abstraction, and we're not sure how to do it yet | |||
Limbic_Region | that didn't really come across in the thread | ||
what came across from my perspective is that the same thing can be accomplished with gather/take | |||
and that's how p6 is going to do it | 16:47 | ||
luqui | mostly because coroutines in non-generator context, it seems to me, Larry doesn't care about much | ||
hmmm... | |||
well, p6 does provide continuations, so we could always leave it up to a module | |||
I think that ended up being my point | |||
I don't remember | |||
Limbic_Region | well a continuation isn't really the same thing | ||
luqui | but with continuations you can easily implement coroutines | 16:48 | |
Limbic_Region | yeah - I keep forgetting source filters won't be uber black magic | ||
luqui | especially if you stick it right in there alongside sub and whatnot | ||
Limbic_Region | ok - so let me explain my understanding of how/why coroutines are useful and not apply a context (generator/iterator or otherwise) | 16:50 | |
you have a routine that has work to do - at some point it can no longer continue working and has to relinquish control | 16:51 | ||
upon relinquishing control, it can return information about what it has done up to that point | 16:52 | ||
when control is returned, it leaves off right where it stopped | |||
remembering everything about what was going on | |||
this process can happen as many times as needed to finish the work | |||
Odin-LAP | That's what continuations do, isn't it? | ||
Limbic_Region | sound right? | ||
no | |||
luqui | well, sortof | ||
Odin-LAP just came in, btw, and is largely clueless. | 16:53 | ||
Limbic_Region | on the surface they seem very similar | ||
Odin-LAP | I just remember the parrotfolk making lots of noise on the subject... | ||
lumi | How is returning a continuation different from being a coroutine? | 16:54 | |
luqui | not very. a coroutine can be thought of as a sort of stateful continuation | ||
Limbic_Region | the continuation IS the return in continuations | ||
luqui | such that when you invoke it, it updates itself so that the next time you invoke it it does something different | ||
Odin-LAP | Hmm. I see. | 16:55 | |
luqui | well, not with CPS | ||
Limbic_Region | in a coroutine, any arbitrary return | ||
lumi | Stateful continuation? | ||
luqui | technically, you call subs with your current continuation, along with some other stuff | ||
lumi | Retur a tuple, (value,continuation) | ||
luqui | the subs you call may themselves be return continuations | ||
lumi, exactly | |||
lumi | Return | ||
Or return $value but CurrentContinuation or something | 16:56 | ||
luqui | ugh | 16:57 | |
lumi | :P | ||
luqui | that's not what properties are for | ||
Limbic_Region laughs | |||
but that really is in essence what a coroutine does from a naive perspective | |||
luqui | (on p6l people seem to be thinking that properties are for things like that, though) | ||
lumi | I must dash, have fun | ||
Odin-LAP | luqui: Any use opens up the potential for abuse. | ||
luqui | sure | ||
Limbic_Region | return @thesvalues but remember how to keep processing from this point forward | ||
now return @thosevalues and keep now remember this point | 16:58 | ||
luqui | but the "but" is referring to "return", not @thesevalues | ||
Limbic_Region | finally return $theanswer and know that we are done | ||
luqui - I wasn't being realistic | |||
Odin-LAP | Riddle me this. Why not place this in 'core'? | ||
luqui | place what in core? | 16:59 | |
Odin-LAP | Coroutines. Is the problem lack of consensus on *how* to do it, or..? | ||
Limbic_Region | a continuation is more like a 1 and done sorta thing (from my understanding of things) | ||
luqui | Odin-LAP, that's precisely the problem | ||
a continuation is a pure object--it doesn't mutate | 17:00 | ||
that's the main difference between it and a coroutine | |||
luqui realizes that he should stop saying 'pure', because he's never really sure what it means | |||
Limbic_Region isn't sure why gather/take has to preclude also having traditional style coroutines | 17:02 | ||
luqui | Limbic_Region, it doesn't | ||
Limbic_Region | well - I am glad to hear the door isn't closed | ||
luqui | we know this | ||
Odin-LAP | Hm. What's gather/take do, precisely? | 17:03 | |
Limbic_Region | that thread was 22 messages deep | ||
luqui | like I've been saying, the reason we're don't yet have coroutines in the core is because we're in disagreement about how to do them | ||
Odin-LAP, it creates generator arrays: | |||
Limbic_Region | ok - here is where my confusion came in | ||
luqui | my @values = gather { for 1..10 { take 2*$_ } } | ||
Limbic_Region | it sounded to me like the gather/take were being used synonomous with coroutines | 17:04 | |
luqui | ahh | ||
Limbic_Region | so when you were saying you were in disagreement | ||
you get the idea | |||
luqui | yeah | ||
Limbic_Region is clear now | |||
Odin-LAP | luqui: Ah, I see. | ||
Limbic_Region | ok - /me is off for $work | ||
luqui | Odin-LAP, it just happens to do that lazily, which is where the coroutine behavior comes from | 17:05 | |
bye limbic | |||
svnbot6 | r3346, Stevan++ | t/oo/inheritance.t - some basic tests for inheritence | 17:11 | |
r3347, Stevan++ | t/oo/attributes.t - TODOing a test | |||
Limbic_Region | luqui - so would it be worth while to go through the p6 timeline by A, look at the Ss that are out so far and indicate where/what the S doesn't cover that was expected to be there? | ||
IOW - if the S doesn't cover something that was outline for the A - mention it | 17:12 | ||
ajs | Question: sub x( Num $?p = $CALLER::_, Num $+q ); &y := &x.assuming:q(0); for @x { y; } | 17:24 | |
what does x get for $p? | |||
svnbot6 | r3348, iblech++ | EOL at EOF and usual svn properties. | 17:33 | |
r3349, iblech++ | More work on quickref/oo (added section about roles and fixed two XXXs). | |||
luqui | ajs, syntax error near $?p ;-). (it's ?$p) | 17:35 | |
luqui now reads the actual question | |||
I think it gets 0 | 17:36 | ||
oh | |||
no | |||
I'm an idiot | |||
luqui didn't see the :q part of the assuming call | 17:37 | ||
Hmm... I think curries are supposed to be caller-invisible, so it should get elements of @x | |||
that seems only reasonable | |||
ajs | luqui: heh thanks, I hyad just given up and passed that on to p6l ;-) | 17:43 | |
svnbot6 | r3350, jhorwitz++ | * compile namespace declarations (module/package/class) before sub definitions | ||
luqui | ajs, okay, then I'll wait for Larry to answer this one to see if we agree | 17:45 | |
ajs | It's a hard one. All tied up in the question of where the default happens and what the currying routine can know about the curried routine.... byte code libraries make this really hard | 17:46 | |
Limbic_Region | luqui - did you see my earlier question? | ||
luqui | I did now | ||
Limbic_Region, perhaps. | 17:47 | ||
I think we just need to get our asses in gear for updating the Ss | |||
so that when something gets resolved on p6l it goes in | |||
then as you folks find things that need to be specced for implementation, they go into a visible place after we discuss them | |||
Limbic_Region | luqui plus plus | 17:50 | |
svnbot6 | r3351, kolibrie++ | specify in quickref/vars which synopsis to view for more detail | ||
Limbic_Region | well, what I will do (time permitting) is outline the things I know aren't in the Ss for the Ss that are already out and send that to you. You can then know if there has been discussion on the list or if it is indeed something new that has to be discussed. | 17:53 | |
sound fair luqui? | |||
luqui | (sorry I've been in and out) | 18:08 | |
svnbot6 | r3352, jhorwitz++ | * clean up formatting | ||
r3352, jhorwitz++ | * note problems when declaring multiple namespaces in same pad | |||
luqui | Limbic_Region, sure | ||
jhorwitz | mod_pugs now works like mod_perl, using Apache::RequestRec objects passed in from mod_parrot. woot! | 18:22 | |
stevan | jhorwitz++ | ||
that RULES | |||
integral | is this for apache 1.3 or 2 ? | ||
jhorwitz | perlbot nopaste | ||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
jhorwitz | stevan: apache 2 | ||
stevan starts counting the days till he can use Pugs in production :) | 18:23 | ||
pasteling | "jhorwitz" at 216.52.77.2 pasted "simple mod_pugs handler" (7 lines, 92B) at sial.org/pbot/10206 | ||
stevan | jhorwitz: so does this run on top of mod_parrot? | 18:24 | |
jhorwitz | yes | ||
stevan | so it will be fast too :) | 18:25 | |
jhorwitz++ | |||
jhorwitz | i still need to make some changes in mod_parrot before a release is possible, but i should have on in the next day or two. | 18:26 | |
s/on/one/ | |||
Aankhen`` | jhorwitz++ # Woo hoo! | 18:34 | |
svnbot6 | r3353, Stevan++ | Perl::MetaModel - adding method support (and tests) | ||
pasteling | "Aankhen``" at 61.246.18.236 pasted "Would this work as expected?" (13 lines, 183B) at sial.org/pbot/10208 | 18:38 | |
Aankhen`` | Argh. | ||
I have a Perl 5 regex in there... | 18:39 | ||
$#@!*)(()#!%&!#)_&%#!)&%()#!&%_!#)&%*#&!%_(#&!%*#!% | |||
theorbtwo | Hm, anybody looked at the new hat? | ||
pjcj | ooh - a new hat! | ||
does it work with pugs? | |||
or is that the question? | 18:40 | ||
Aankhen`` | Pretending that I actually used the right syntax for substitution, is that valid Perl 6? Would it work as expected? | ||
luqui | Aankhen``, yeah, that looks fine | 18:41 | |
theorbtwo | That is, indeed, the question. | ||
Aankhen`` | So basically any Str object gets &bar as a method? | 18:42 | |
luqui | I think you need to say "Str does $foo" instead | ||
but yeah | |||
Aankhen`` | Hrm, I was going according to an e-mail from Autrijus on p6l. | 18:43 | |
luqui | well it's close enough so that we know what you mean | ||
pjcj | theorbtwo: I'm not sure the new hat supports enough for pugs, but I don't have pugs source handy to be sure | ||
Aankhen`` | OK. | ||
luqui | new hat? | ||
pjcj | www.haskell.org/hat/ | ||
luqui | ahh. | 18:44 | |
Aankhen`` | Man... lotsa failed tests while compiling Parrot. | 18:47 | |
luqui runs make test on parrot | 18:59 | ||
nothingmuch | evening | 19:00 | |
luqui | hi nm | ||
nothingmuch | what's cooking? | ||
luqui | My wish for the ability to run pugs | 19:01 | |
nothingmuch discovered that prokofiev is at fault for many mediocore pizzas | |||
luqui | prokoviev made pizzas? | ||
PerlJam | luqui: Are you going to patch it too? | ||
nothingmuch | when sister plays "diabolic intentions" or whatever it's called the dough won't rise | ||
luqui | no, it's a problem with ghc | ||
haha | |||
"diabolic intentions?" is that part of a larger piece? | 19:02 | ||
theorbtwo | jabbot: nopaste? | 19:10 | |
jabbot | theorbtwo: nopaste is irc.csie.org:8888/ | ||
Aankhen`` | Uhh... | 19:13 | |
GHC crashed on "Compiling Pugs.Parser". | |||
What the heck? | |||
integral | what error? The fromJust one? | 19:14 | |
nothingmuch | oh, i see why | ||
diabolic suggestion | |||
Aankhen`` | I dunno, integral. | ||
integral | you could always try a make clean, and see if it happens again | 19:15 | |
nothingmuch | not intentions | ||
nothingmuch confused | |||
pasteling | "Aankhen``" at 61.246.18.236 pasted "Compilation fails" (8 lines, 224B) at sial.org/pbot/10209 | ||
Aankhen`` | I ran an `svn up` before this, then `nmake clean`, then started the process. | ||
autrijus | Aankhen``: try "nmake unoptimised" ? | 19:16 | |
Aankhen`` | OK. | ||
autrijus | rehi \camels, btw. | 19:17 | |
Aankhen`` | Hrm, now it seems to be proceeding. | ||
jhorwitz | greetings | ||
Aankhen`` | Although it skipped all the ones that were done... would that cause problems? | ||
nothingmuch | damnit, can't find mp3 | 19:18 | |
autrijus | Aankhen``: usually not. if it does, then you can always clean and remake. | 19:19 | |
Aankhen`` | OK. | ||
Khisanth | autrijus: your greetings seem to get more and more abstract :) | ||
Aankhen`` | Welp, it's going through the tests now, so I guess that's alright. | ||
autrijus | Khisanth: \/\/\... | ||
PerlJam | Khisanth: I thought it was a clear "lambda camel" greeting. | ||
Limbic_Region | autrijus - perlmonks.org/index.pl?node_id=457952 # Parrot, Java, and Harmony (though there is a pugs reference you may be interested in) | ||
autrijus | ooh harmony. | 19:20 | |
autrijus likes harmony. more free code to learn language implementation from | |||
nothingmuch | luqui: i'm ripping a copy for you | ||
ogg ok? | |||
it's an old recording, but still very nice | |||
autrijus | Limbic_Region: it all depends on a Champion really | ||
I wonder if I can convince jserv to be the ->Parrot champion... he's this hardcore Kaffe guy who found parrot a "perfect text-book case of good VM design" | 19:21 | ||
autrijus is also in search of a Ruby/Cardinal champion | |||
Limbic_Region | I have a tendency to not voice my opinions | ||
autrijus | because they are inflammatory? | ||
Limbic_Region | no - not at all | ||
autrijus | I just thought of a iThreads design. I think I can implement it in ~10 minutes. | 19:22 | |
autrijus sees how long it actually takes | |||
Limbic_Region | Faith without works is dead | ||
line from the Bible | |||
applying it here | |||
autrijus | work without faith is boring ;) | ||
Limbic_Region | Having an opinion without contributing in any other way is fairly meaningless | ||
theorbtwo | "Ideas are cheap, show me the code"? | ||
I don't think that's so much the case. | |||
Ideas are good when they make somebody else write code. | 19:23 | ||
Limbic_Region | theorbtwo - I know - see my Pugs advocacy post stating the exact same thing | ||
theorbtwo | If ideas weren't important, the S* docs wouldn't be so hard a dep. | ||
Limbic_Region | but if I said "I think p6 should have coroutines" | 19:24 | |
ajs | "show me the code" would seem to be a bit harsh in a project on which the original designer has spent years producing some of the finest documentation I've ever seen for a language design spec ;-) | ||
Limbic_Region | that's a lot different than if I said | ||
ajs | "show your work" is fair | ||
Limbic_Region | "I feel p6 should have coroutines because then I could do X and Y and it would make Z a whole lot easier" | ||
so in part - the reason you have an opinion IS work | |||
PerlJam | Limbic_Region: "...and by the way, here's an implementation" helps too ;-) | ||
Limbic_Region | right | 19:25 | |
I don't vote so I don't bitch about the laws | |||
actually, I tend to abstain from all political discussions | |||
I guess what I am saying is that the degree to which I voice my opinion on subject X is directly proportional to the effort I am willing to put into supporting subject X | 19:27 | ||
nothingmuch | xrl.us/f47u is a shortcut to nothingmuch.woobling.org/Prokofiev%...o.%204.mp3 | 19:29 | |
my sister says it's performed by prokofiev himself, | 19:30 | ||
the recording is from the 1930s | |||
Aankhen`` | I failed 19/260 tests. | 19:35 | |
luqui | nothingmuch, thanks | ||
nothingmuch | www.amazon.com/exec/obidos/ASIN/B00...20-7794521 | 19:36 | |
perlbot: shorten | |||
autrijus | hm. so it took 15 minutes, but I'm firmly convinced it's a bad idea now :D | ||
autrijus goes back to 5005 threading | |||
nothingmuch | who has a shorten command? | 19:37 | |
stevan | ouch | ||
nothingmuch | 5005 threading should work out OK in p6 | ||
autrijus | nothingmuch: no, ithread is the default | ||
luqui | that's cool | ||
I have some rachmaninoff pieces with rachmaninoff... I don't like them that much | |||
autrijus | nothingmuch: it's just it will be too disruptive for Pugs to maintain its arena code | ||
nothingmuch | autrijus: as I see it ithreads are an aweful way to get fork with shared memory | ||
autrijus | nothingmuch: so it's best to take what GHC has and let parrot codegen handle ithread | ||
nothingmuch | and this is necessary because too much is unsafe | 19:38 | |
Aankhen`` | autrijus >> Are tests supposed to fail on Win32? | ||
nothingmuch | ithreads-- | ||
slow, and cumbersome | |||
autrijus | Aankhen``: tests are supposed to fail a lot | ||
Aankhen``: we are not in preflight. | |||
Aankhen`` | OK. | ||
nothingmuch | and you need to recursively share, which is STUPID! | ||
luqui agrees | 19:39 | ||
autrijus doesn't disagree | |||
nothingmuch | luqui: i think we have a CD performed by a rachmaninof which is ne the composer rachmaninof, buteither way I don't like rachmaninof that much =) | ||
luqui | though you do need to recursively lock, so it seems to make sense | ||
nothingmuch | autrijus: shouldn't sharing a single reference be enough? | ||
autrijus | luqui: lock is so 20th century | ||
luqui | what's used nowadays | ||
autrijus | we're in the age of STM :) | ||
theorbtwo | ithreads would be much nicer if you didn't have to manually recurse. | ||
luqui has *never* worked with threads | |||
obra | STM comes after STL, right? | 19:40 | |
nothingmuch | my $structure = ....; | ||
autrijus STN's obra | |||
nothingmuch | share($structure); | ||
blammo, some other thread can have at it | |||
theorbtwo: semantically there's no difference, methinks, but i'll be happy either way | |||
and when that is dereferenced it should work | |||
s/but/so/ | |||
theorbtwo has worked with threads enough to not want to work with threads any more then I need to. | |||
nothingmuch | ithreads would be much much nicer if they weren't soooooo sloooooow to start | ||
autrijus | nothingmuch: hey, it clones the whole arena, what do you expect | ||
theorbtwo | Indeed. | ||
nothingmuch | autrijus: COW or something | 19:41 | |
i'd like both threading models | |||
theorbtwo | autrijus: COW. | ||
autrijus | ...which is native in parrot :) | ||
(which is why I don't want it in Pugs.) | |||
luqui | Rach 3 is luqui's favorite piece | ||
nothingmuch | autrijus: that's why I don't really mind ithreads like behavior in parrot based whatever, but i would like proper ways to share | ||
even so, cow is still going to be somewhat costly | 19:42 | ||
autrijus | we are again in vehement agreement ;) | ||
nothingmuch | has to mark everything, i think | ||
nothingmuch would like to be able to have closure like threads | |||
autrijus | nothingmuch: you mean like forkIO {...} | ||
nothingmuch | i.e. they snapshot the parent's lexical scope, and mess with that asynchroneously | ||
theorbtwo | nothingmuch: async {} is already extant, no? | ||
autrijus | that's exactly what GHC does. Ruby too. | ||
and yes, async{} too :) | |||
nothingmuch | theorbtwo: i mean in perl5, to get that kind of work done | ||
autrijus | (because it's based on GHC's forkIO) | ||
nothingmuch: you can do that in perl5, using (surprisingly) async{} | 19:43 | ||
that is, threads::async{} | |||
nothingmuch | that's not lightweight, seƱor | ||
luqui | you never said anything about lightweight | ||
autrijus | use forks; | ||
# lightweight! | |||
theorbtwo | Indeed; I wish use fork was default/builtin. | ||
nothingmuch | yeah, and you get your data serialized too =P | ||
beh | 19:44 | ||
theorbtwo | It's like they tried as hard as possible to ignore the capabilities that sane OSes gave them. | ||
autrijus | theorbtwo: yeah. latency suffers | ||
but arena manipulation is _so_ better. | |||
luqui | nothingmuch, that's a really short piece | ||
theorbtwo | Latency suffers when you go into swap, too. | ||
autrijus | theorbtwo: that's why I mandate 2G+ memory with dual Xeon for all my poor clients ;) | ||
nothingmuch | luqui: i'm amazed every time by how short it is | 19:45 | |
autrijus | (running modperl2+ithreads in win32.) | ||
nothingmuch | it fits so much in | ||
win32! eeek! | |||
nothingmuch needs posix for sanity | |||
autrijus | nothingmuch: I deal with win32 and aix as my day job ;) | ||
(not exactly proud of it.) | |||
jhorwitz | aix! eeek! | ||
autrijus | heh... at least if you start running perl and ghc, you can pretend aix to be a really slow freebsd or something | 19:46 | |
not so on win32 ;) | |||
and soon, win64. *shudder* | 19:47 | ||
theorbtwo | If forced to use a non-GNU OS, I'd probably end up installing much of a GNU system in my ~/bin (or local equiv). | ||
ls --sort=size is just too nice. | |||
autrijus | oh, you can do that? ;) | 19:48 | |
<- alias to `ls -l | sort -n +4` | |||
maybe I should switch to gnuls too. | 19:49 | ||
autrijus installs ports/misc/gnuls/ | |||
theorbtwo | The ls manpage on freebsd gives a snippet something like that. | ||
But it's just inconvient. | |||
autrijus | very true. | ||
I think the gnu userland is wonderful... although from what I heard, I'm glad I don't know anything about glibc :) | 19:50 | ||
nothingmuch | things I get very sad without: | ||
grep -[ABC] | |||
less | |||
find -delete | |||
find's nicer features | |||
like relative times, and regexen | |||
theorbtwo | less++ | ||
nothingmuch | grep -r | ||
theorbtwo | I just recently found out about grep -r -- it's quite nice. | ||
nothingmuch will look at `history` to be sure | |||
castaway mumbles something about less not being in the path in our un*x machines | |||
nothingmuch | rsync saves me lots of time each day | ||
but it's not like it has a crappy alternative on HPUX or something | 19:51 | ||
you just have to install that | |||
oh, a flexible hexdump is nice | |||
castaway | or live with it | ||
theorbtwo | castaway: Change your rc file. | ||
nothingmuch | hexdump -C is good | ||
castaway already did | |||
theorbtwo | Hm, od does everything I want it to do... | 19:52 | |
nothingmuch | watch | ||
svnbot6 | r3354, Stevan++ | Perl::MetaModel - larger tests of actual object model, however doing this has caused me to hit a barrier in my understanding, so back to the books I go :) | ||
castaway | (cos we can install stuff on our machines, but not on customer ones, so better to get used to the "normal" tools) | ||
nothingmuch | lately also 'gvimmodule', which opens the right thing for 'gvimmodule Foo::Bar' by searching @INC | ||
theorbtwo | watch is very nice. | ||
castaway | right thing? | 19:53 | |
nothingmuch | castaway: uses the find in INC routine from Test::TAP::HTMLMatrix | ||
and then execs gvim with that path | |||
autrijus | yay. switched to gnuls. now to learn its 16,384 options... | ||
nothingmuch | ā¢ [syeeda:~] nothingmuch % echo $PERL5LIB | tr ':' '\n' | wc -l | ||
79 | |||
see why it's good for me? | 19:54 | ||
clkao | *yawn* | ||
nothingmuch | oh, awk, and bash for loops are wĆ¼nderbar together | ||
theorbtwo | There's only 39 of them! | 19:55 | |
nothingmuch | can't remember anything else at the top of my head | ||
theorbtwo | ls --help |cut -c3-4|grep '^-'|wc -l | ||
castaway | ouch | 19:56 | |
799paths in inc? | |||
nothingmuch | uhuh | ||
castaway | 7. even | ||
gah!79 | |||
why? | |||
nothingmuch | for i in `find many paths -name lib` /some/path/*/lib `find ~/Perl -name lib | grep -v _darcs` `find ... | grep -v branch | grep -v tag` .... | 19:57 | |
autrijus | luqui: hey | 19:58 | |
nothingmuch | i have dayjob | ||
autrijus | luqui: if I declare infix:<foo> | ||
nothingmuch | and afternoon job | ||
autrijus | what prec does it have? | ||
nothingmuch | each has about 15 modules | ||
autrijus | (by default) | ||
nothingmuch | and there's ~/Perl which is another 10 moduels or so | 19:59 | |
autrijus | luqui: also, sorry, I misparsed your "ahh leftmost... that only happens when $a is followed by a colon in the declaration" | ||
nothingmuch | /usr/local/src has a few svn co's | 20:00 | |
that's why there's 79 =) | |||
shower time | 20:01 | ||
biked 4km up hill, and back down again, and then made pizza... /me deserves it! | 20:02 | ||
actually pizze | |||
_metaperl | nothingmuch, ping | 20:11 | |
I am about to start reading your slides | |||
autrijus notices domm for the first time :) | 20:14 | ||
jhorwitz | autrijus: you see good news about mod_pugs? | 20:15 | |
autrijus | jhorwitz: yes. amazing! | ||
jhorwitz++ | |||
<- writing it into today's journal | |||
autrijus dreams a ModPugs::Registry | |||
SetHandler parrot-script | 20:16 | ||
jhorwitz dreams in bytecode now. not sure what it means... | |||
autrijus | ParrotResponseHandler ModPugs::Registry | ||
Options +ExecCGI | |||
something like that | |||
jhorwitz | we're not far from it. | 20:17 | |
autrijus | we're not. | ||
that's the scary part. | |||
Limbic_Region | what I find scary is the result of all the very soon to be hackathons | 20:18 | |
autrijus | that too. | ||
rumour has it that 3 more hackers will join autrijus leo and chip in the .au hackathon | |||
Limbic_Region | autrijus - considered a schedule of "upcoming events" | ||
jhorwitz is sad he won't be at the hackathon. but he will be at YAPC. | |||
do we have a list of lambdacamels going to YAPC::NA? | 20:19 | ||
jhorwitz ponders putting it on the YAPC wiki | |||
autrijus | I think so, somewhere | ||
svnbot6 | r3355, iblech++ | More work on the live cd generator. It now displays an introduction to Pugs | ||
r3355, iblech++ | before booting, and I've fixed some minor other things as well. | |||
r3356, Stevan++ | Perl::MetaModel - its really a Perl::Meta::Class, not a Perl::Meta::MetaClass (at least I think it is, if not i can always svn revert) | |||
adehohum | hi guys, should () capture in named rules, then be accessible as $0 after the match? e.g. rule fishy { (.*)shark }; "whaleshark" ~~ m/<fishy>/; say $0.perl; gives undef | 20:20 | |
autrijus | adehohum: $<fishy>.perl ? | 20:24 | |
Limbic_Region | sounds fishy to me | 20:25 | |
adehohum | Nope, I am still fishless | 20:26 | |
jhorwitz heads home | 20:27 | ||
autrijus | adehohum: $/<fishy> ? | ||
adehohum: thanks for the bug report. fixing | |||
fixed. committing | |||
wilx | Whee. | 20:28 | |
What a speed :) | |||
adehohum | whee ;-) | ||
autrijus | done | 20:29 | |
try again? :) | |||
nothingm1ch | updating smoke loop for parrot etc | ||
anybody want to integrate our YAML harness to parrot's t/harness? | |||
autrijus | what's the win of this? | ||
nothingm1ch | that way we could have smoke reports for parrot too | ||
autrijus | oh, pretty smoke graph for parrot? | ||
nothingm1ch | yup | 20:30 | |
autrijus | probably not me. but that'd be nice :) | ||
Limbic_Region | nothingm1ch - you are familiar with the performance graphs of Parrot right? | ||
I worked with matt on them | |||
nothingm1ch | no | ||
i have never ever tried parrot. | |||
Limbic_Region | if a particular test is broken - it just shows a gap | ||
nothingm1ch | don't know what it's about =) | ||
Limbic_Region | let me see if I can find the link | ||
svnbot6 | r3357, autrijus++ | * initial check in of user-defined symbolic unary (does not work yet) | ||
r3357, autrijus++ | * `$<foo>` now actually means `$/<foo>`. | |||
r3357, autrijus++ | * fix named subrule handling in run_pge.pir | |||
Limbic_Region | www.sidhe.org/~timeparrot/graphs/ | 20:31 | |
fwiw - I haven't worked on that or anything else parrot related since late November | |||
Limbic_Region is off | 20:32 | ||
nothingm1ch | ah, that's more of a benchmark | ||
btw, i can't compile haddock | 20:33 | ||
adehohum | that's fishy too | ||
sorry | |||
autrijus | adehohum: have you tested that fishiness works? | 20:34 | |
adehohum | my ancient G4 takes a while to rebuild Parser.hs... | ||
autrijus | "make unoptimised" | ||
adehohum | yeah... bit late now | ||
nothingm1ch | does anyone mind making run_smoke.pl inline the css? | 20:50 | |
autrijus | please do | ||
nothingm1ch | if not i'll commit after I see that it works OK | ||
autrijus | pugs> sub postfix:<!> { $_ ?? $_ * &?SUB($_-1) :: 1 } | 20:54 | |
undef | |||
pugs> 10! | |||
3628800 | |||
works. | 20:55 | ||
clkao | ebwahahahah | ||
overload now works? | |||
mad autrijus++ | |||
autrijus | :) | ||
_metaperl | what does the :<> do | 20:56 | |
clkao | so is my tests passing? | ||
_metaperl | ":<!>" --- that part | ||
theorbtwo | MP: Mostly just syntax, I think. | 20:57 | |
theorbtwo wonders if there's a purticular reason autrijus used the slow defintion of !. | 20:58 | ||
nothingm1ch | ok, haddock stituation fixed | ||
autrijus | theorbtwo: easiest to write | 20:59 | |
stevan | _metaperl: <> are just brackets (i think) | ||
vcv-- | :<!> defines the operator | ||
svnbot6 | r3358, autrijus++ | * user-defined symbolic post- and prefix unary functions. | ||
theorbtwo | sub postfix:<!> { $_ ?? [*] 1..$_ :: 1 } | ||
autrijus | theorbtwo: I forgot I had [*]. | 21:00 | |
stevan | what no infix :P | ||
_metaperl | oh, so he defined the operator "!" | ||
stevan | _metaperl: yes | ||
_metaperl | so he could do 7! | ||
so the colon is not just for adverbial blocks | |||
autrijus | stevan: I don't know what the default prec should be. | 21:01 | |
stevan | _metaperl: I think the colon is more part of the "postfix" part then it is of the <> part | ||
_metaperl | but also adjective descriptors I guess you could call them | ||
stevan | prec? | ||
precedence | |||
autrijus: when has something "unknown" stopped you before :) | |||
_metaperl | so how far along are hyperoperators? | 21:02 | |
stevan | autrijus: any good meta-class papers you can recommend? I am in need of some new literature on the subject | 21:04 | |
nothingm1ch | I'm thinking of checking in my monolithic script | ||
Akiyuki | Is there a way to transfer someone to another page using perl? Like Location.href.. | ||
wolverian | www.zegeniestudios.net/ldc/ # nice page. | ||
(linux distribution chooser. pretty, at least.) | |||
obra | Akiyuki: you want #perl, not #perl6 | 21:05 | |
adehohum | autrijus: I'm having build problems so I will check out your capturing fix tomorrow | ||
Akiyuki | :( | ||
x86 | whoa, you cant 'chomp $_' yet with pugs? | 21:06 | |
ninereasons | right, x86. it's buggy in some contexts. | ||
x86 | wow | ||
but you can 'chomp $somevar' ? | 21:07 | ||
osfameron | shouldn't we kill chomp already? | ||
x86 | just not $_ ? | ||
osfameron | or at least turn it into a function? | ||
you have "is chomped" on filehandles anyway | |||
autrijus | hm? how is it buggy? | 21:08 | |
ninereasons | the issue is, x86, that in some contexts, $_ is still read-only. | ||
autrijus | ahh. | 21:09 | |
ninereasons | or was the last time I checked, autrijus | ||
autrijus | well then it's the same with perl5. | ||
$ perl -e 'for ("\n") {chomp}' | |||
Modification of a read-only value attempted at -e line 1. | |||
ninereasons | it's unexpected when reading lines from a file though, that $_ can't be chomped. | 21:10 | |
svnbot6 | r3359, autrijus++ | * unicode too. | ||
r3360, autrijus++ | * oops, left debug statements in | |||
autrijus | pugs> sub prefix:<ōæ½xA3U> (@_) { [+] *@_ }; | 21:11 | |
undef | |||
pugs> ōæ½xA3U [1..1000] | |||
500500 | |||
:D | |||
ninereasons | neato | ||
nothingm1ch | nothingmuch.woobling.org/pugs_test_...s/haddock/ | 21:12 | |
ninereasons | do infix and suffix work, also, autrijus ? | ||
theorbtwo | No infix yet? | ||
autrijus | ninereasons: postfix work | 21:13 | |
theorbtwo: what is the default assoc for infix? | 21:14 | ||
if you know the answer I'll do it right away ;) | |||
ninereasons | very nice! | ||
theorbtwo | Require an explicit associativity for now, and put the defaulting in when we find out which it is? | 21:15 | |
autrijus | I had not yet parsed Precidence ;) | ||
precedence, even | |||
"tighter" etc | |||
ninereasons | postfix postfix postfix - I've made that s/post/suf/ mumble mistake repeatedly | ||
theorbtwo wonders if you can define an infix Ćø and get [Ćø] for free. | |||
autrijus | what does ōæ½xC8ōæ½xFB do? | 21:16 | |
(and yes, eventually) | |||
theorbtwo | Donno, it was just an example. | ||
autrijus | I'll put it to the additive layer for now | ||
x86 | kill it would be fine by me, people should learn regular expressions anyway | 21:17 | |
(chomp) | |||
nothingm1ch | smoke has hs-plugins too now | ||
theorbtwo | Cool, NM! | 21:18 | |
nothingm1ch | err, not yet it doesn't | ||
how do i tell makefile.pl the path to it? | |||
adehohum | autrijus: built at last. $0 is still undef after the match but I can do $/<fishy>[0] to get the phrase I want that was captured in the named rule. is that what is expected? | ||
nothingm1ch | oh, i see | ||
autrijus | adehohum: yes. | 21:19 | |
adehohum: named doesn't count in positional | |||
also $<fishy>[0] too | |||
have you tested that? | |||
adehohum | I have now, that works too | ||
nothingm1ch | ok, now it does | ||
theorbtwo | Oh, good. | ||
iblech | autrijus++: Yay! :)) But: sub prefix:<ā¬>(Num $x) {...} doesn't create a "ā¬" prefix operator (but when s/ā¬/some-ordinary-char/ it works) | ||
nothingm1ch | autrijus: is embedding perl5 a good idea? | 21:20 | |
theorbtwo was half-way through answering your question, then got distracted. | |||
autrijus | iblech: have you tried latest? | ||
r3359 fixed that | |||
iblech | a sec | ||
adehohum | cheers autrijus, goodnight all | 21:22 | |
svnbot6 | r3361, Stevan++ | Perl::MetaModel - some method sketches,.. nothing like a hot shower to clear out the meta-meta-cobwebs and get the brain moving again | ||
iblech | r3361 still doesn't work -- see sial.org/pbot/10211 to reproduce | ||
autrijus | fixed. | 21:23 | |
r3362 | |||
did I mention this is very sick? :) | |||
but very slick, too | 21:24 | ||
theorbtwo | Sick how? | ||
autrijus | theorbtwo: let me show you the sickness | ||
pugs> sub prefix:<((> (Num $x) { $x + 9} | |||
undef | |||
pugs> (((1) | |||
10 | |||
theorbtwo | Oh. | ||
iblech | autrijus++ # yay! works now :) | ||
theorbtwo | Yeah, that's pretty sick. | ||
autrijus | talk about obfu. :) | 21:25 | |
wolverian | sub prefix:<sub> { ... } | ||
ninereasons | heh | ||
wolverian | hmm. sub infix:<;>? :) | 21:26 | |
does the compiler have any hope there of understanding the code? | |||
theorbtwo | wolverian, at a guess... | 21:27 | |
iblech | the compiler will understand the code, but humans will not :p | ||
svnbot6 | r3362, autrijus++ | * iblech reported that Ć¢Ā¬ doesn't work for some reason. fixed. | ||
r3363, iblech++ | Added test involving the (should not happen) death of a bare block if it | |||
r3363, iblech++ | contains $_. | |||
theorbtwo | It does, but you can no longer access the syntax ;, meaning you can no longer use things that are not proper expressions. | ||
wolverian | svnbot6-- # utf doesn't work? | ||
theorbtwo | Ah, good, that's not just me. | ||
wolverian | is this a pugs problem (it does run on pugs, right?) or something else? | 21:28 | |
nothingm1ch | wolverian: there is no other impl of perl 6 =) | ||
iblech | wolverian: No, (svn log)--, as svnbot6 only pipes svn log's output to IRC. (I think.) | ||
wolverian | nothingm1ch: right; I just wasn't sure if it was written in perl6. | 21:29 | |
iblech: hmm. svn writes non-utf logs? can't that be configured? | |||
theorbtwo | I can't seem to input utf8 to pugs via readline. This may be a local problem of mine, though... | ||
iblech | wolverian: No idea. | ||
theorbtwo: Works here fine ($LC_ALL=de_DE.utf8) | 21:30 | ||
theorbtwo | LC_ALL is not set for me. | ||
I should possibly change that. | |||
wolverian | "The Subversion repository stores log messages in UTF8, and assumes that your log message is written using your operating system's native locale." | ||
autrijus | pugs> sub prefix:<say"> { [*] (1..$_) } | ||
pugs> sub postfix:<!"> { say $_ } | |||
pugs> say"10!"; | |||
3628800 | |||
wolverian | autrijus: sub prefix:{'say "'} # works? | 21:31 | |
ninereasons | what fun :) | 21:32 | |
nothingm1ch | is there anything interesting to do with parrot smoking? | ||
autrijus | wolverian: the space throws off parsing | ||
svnbot6 | r3364, nothingmuch++ | Smoke script | ||
wolverian | autrijus: is that a feature or a bug? :) | ||
autrijus | wolverian: it's a neccessity ;) | 21:33 | |
imagine | |||
sub infix:< > | |||
;) | 21:34 | ||
or, even better! | |||
sub infix:<> | |||
if you want this sort of thing, use a macro | |||
wolverian | right. :) thanks. | 21:35 | |
autrijus | np | ||
theorbtwo | So macro 'else if' {'elsif'} will Just Work? | 21:38 | |
BTW: In ~/.inputrc "set convert-meta off". | |||
wolverian | what does that do? | ||
autrijus | theorbtwo: yes, that's the idea. | 21:39 | |
theorbtwo | wolverian: The inputrc thing keeps it from trying to interpret ord('x') & 0x80 as ESC x. | 21:40 | |
wolverian | is that bad? :) | 21:41 | |
theorbtwo | (Where it == readline.) | ||
autrijus | breakfast. bbiab :) | 21:42 | |
theorbtwo | hm, it looks like the Ok bit of mkMatchOk is meaningless? | 22:31 | |
svnbot6 | r3365, nothingmuch++ | Small fix to smoke loop and inline CSS | ||
r3365, nothingmuch++ | requires newest Test::TAP::HTMLMatrix, which supports inlined css properly | |||
theorbtwo | Er, nevermind. | ||
mugwump jumps up and down like a monkey on crack | 22:32 | ||
nothingm1ch summons castaway to ruffle mugwump | 22:42 | ||
scheiĆe | |||
sorry for committing crap | 22:43 | ||
x86 | better be! | 22:44 | |
:P | |||
nothingm1ch | nothingmuch.woobling.org/pugs_test_status/ is back | 22:46 | |
meaner than before | |||
svnbot6 | r3366, nothingmuch++ | remove leftover Dumper from test graph script | 22:48 | |
revdiablo | I wonder what it would take (no pun intended) to get gather/take working | 23:09 | |
mugwump | lots of scripts, for a start | 23:10 | |
tests even | |||
revdiablo | well, there's one test that's :todo<feature> | ||
I suppose I could play with Perl6::Gather, and work up a few more tests to add | 23:19 | ||
svnbot6 | r3367, mugwump++ | Add test script for set operations | ||
revdiablo | Perl6::Gather doesn't appear to be working lazily. understandable, but that kind of loses a lot of the fun of it. :-/ | 23:40 | |
autrijus | journal up :) | 23:42 | |
revdiablo: hook it up with Coro.pm? | |||
autrijus needs to sleep a bit | |||
*wave* & | |||
revdiablo | ciao | ||
Boots | hello? | 23:47 | |
vcv-- | Hello | ||
Boots | A while back Rob Kinyon was working on getting Pugs support on Cygwin. The email thread ends with him asking if he should commit his stuff. Does anyone know the resolution of that? | 23:48 | |
stevan | Boots: Rob still has not gotten things to compile | 23:52 | |
it is suggested to just use Win32 instead | |||
Boots | thanks | ||
On a side note, I recall that someone was working on a kwid <-> POD converter. I would like to start writing the summaries in kwid but would prefer to continue providing them to the website as POD. Poking on the internet seems to indicate that kwid has stalled a little. Does anyone know anything more specific? | 23:55 |