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