Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-08-12

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 froh-doh <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> should do without intervention on the web server
00:00 fglock left perl6
00:00 DaGo joined perl6
00:00 dduncan that has to be issued BY the web server
00:00 froh-doh no, the META is a tag INSIDE the web page
00:00 dduncan and it is better to do it in the HTTP headers if possible, though that's a reasonable fallback if you can't control the HTTP headers
00:01 froh-doh yes, I'd classify it as a "workaround" :)
00:01 dduncan I wonder if there's a .htaccess directive for this ... putting in actual HTTP headers for static documents
00:02 dduncan nevermind
00:02 dduncan that document says you can
00:02 dduncan the AddType directive
00:04 aufrank hey folks
00:04 marksto1 Hello, aufrank.
00:04 marksto1 is now known as markstos_
00:05 froh-doh dduncan: it seems that it should work inside .htaccess as well: http://httpd.apache.org/docs/2.0/howto/htaccess.html
00:08 dduncan well, good luck to you all, and now, back to $job for me ... &
00:08 dduncan left perl6
00:09 aufrank I'm about to report a pugs build bug
00:09 aufrank this is on osx 10.4 with ghc 6.4.2
00:09 aufrank during make unoptimized
00:10 pasteling "aufrank" at 65.37.87.113 pasted "pugs build error during make unoptimized" (17 lines, 2.1K) at http://sial.org/pbot/18934
00:17 aufrank it seems like its looking for an installed libparrot, but I have never installed parrot
00:25 kanru joined perl6
00:27 diakopter_ joined perl6
00:33 miyagawa joined perl6
00:35 diakopter joined perl6
00:43 HXanadu joined perl6
00:56 svnbot6 r12141 | lwall++ | Some quote tests obsolete with new q[[...]] rules.
01:05 svnbot6 r12142 | lwall++ | just trying to shorten the longest names in the TAP matrix, which is
01:05 svnbot6 r12142 | lwall++ | overflowing my web page...
01:06 markstos_ I see other people making commits, but for me the last 24 hours have returned this when I do "svn update"
01:06 markstos_ svn: PROPFIND of '/pugs': could not connect to server (http://svn.openfoundry.org)
01:07 diakopter markstos_: stale dns?
01:07 cmarcelo ³/quit
01:08 cmarcelo joined perl6
01:10 markstos_ diakopter: Maybe. Is there an easy fix for that? This is on a FreeBSD server.
01:10 diakopter mine reports 140.109.17.109
01:11 TimToady if that's not it, maybe something's blocking the http port?
01:12 TimToady bbl &
01:13 markstos_ Our firewall rebooted yesterday. Maybe that's related. :)
01:14 markstos_ I have 140.109.17.109, so that's the same.
01:15 markstos_ Yep, seems to be our firewall. Sigh, our sysadmin just went on vacation for three weeks, the firewall runs on a floppy, and I'm scared to touch it. Oh well. I could use a different machine for this.
01:30 meppl joined perl6
01:37 aufrank I'm going to bed, but I'll backlog in the morning to see if anyone had any ideas about the build error I posted above
01:37 aufrank thanks for any help!
01:37 buubot purge!
01:42 tup joined perl6
01:45 meppl joined perl6
01:48 diakopter i keep getting authorization failed when trying to commit... can someone check my commit bit?
01:57 TimToady I see no diakopter on openfoundry.  or do you have a different handle there?
01:57 diakopter WILSON is the id, I think...
01:58 diakopter I log in with the correct password, and it says "account is not verified"
01:58 TimToady there's a wilson_huangtw
01:58 diakopter so I go to the email I got when I registered
01:58 diakopter not that one
01:58 diakopter and both click the link and reply to the email but still, the account is not verified
01:58 diakopter I guess I could re-register with a different email address
02:01 diakopter perhaps they had to partially restore from backup a few days ago.. I initially created the account during the outage
02:01 diakopter oh well, i'll re-register
02:01 TimToady could be.  I don't see an outstanding invite either, so maybe you need a new invite.
02:02 diakopter hmm; I never got an invite
02:03 TimToady what's your email?  feel free to use " at ", etc.
02:09 TimToady if you didn't get an invite, what email are you looking at?
02:09 diakopter ah, there we go; that's the first time I got the "registration successful" email - matthew at veradox com
02:10 diakopter the registration with the openfoundry site
02:11 TimToady i think you need an invite from the pugs project.  hang on.
02:13 TimToady okay, I clicked the pugs box to add you to that project.  but I don't see a "wilson".  did you use some other id?
02:13 diakopter the second time I used diakopter
02:13 TimToady nevermind
02:13 diakopter I guess wilson is klined
02:13 TimToady yes, it's there.
02:14 TimToady you should be good.
02:14 diakopter thanks!
02:14 TimToady np
02:14 TimToady dinner &
02:16 TimToady it's customary to add yourself to AUTHORS first, by the way, in case you didn't know...
02:16 TimToady and if you did know, well, it's still customary.  :)
02:17 diakopter in AUTHORS, is the () name the PAUSE id or the svn id
02:17 TimToady CPAN
02:17 TimToady so yes, PAUSE
02:18 TimToady your svn id would be in quotes as your nickname.
02:18 TimToady and your chinese or klingon name goes on the right.  :)
02:18 svnbot6 r12143 | diakopter++ | my first commit - adding myself to AUTHORS.
02:19 TimToady and there you are.  welcome aboard, or abroad, if you're from Taiwan. :)
02:19 TimToady re-dinner &
02:30 markstos_ left perl6
02:40 deleff joined perl6
03:00 lumi joined perl6
03:04 agentzh joined perl6
03:05 agentzh a quick question: is it okay to move t/statements/closure_traits/ to t/closure_traits?
03:05 agentzh because the path t/statements/closure_traits/* is too long...
03:06 gaal joined perl6
03:07 agentzh gaal: do you think it's okay to create a new t/closure_traits/ with the related tests under t/statements/?
03:08 agentzh i don't want closure_traits to be under t/statements anyway.
03:11 weinig is now known as weinig|foood
03:12 weinig|foood is now known as weinig|food
03:18 audreyt TimToady: I understand that "is rw" vivifies and "is ref" not
03:18 svnbot6 r12145 | agentz++ | moved t/statements/first.t to t/closure_traits/first.t
03:18 audreyt TimToady: how else is "is rw" able to coerce its argument into a lvalue, though?
03:18 audreyt sub f ($x is rw) {$x++}    f(3)
03:19 audreyt is currently error is pugs. is that correct?
03:19 audreyt s:2th/is/in/
03:21 svnbot6 r12146 | agentz++ | moved t/statements/init.t to t/closure_traits/init.t
03:22 agentzh joined perl6
03:22 svnbot6 r12147 | agentz++ | moved t/statements/exit_in_begin.t and statements/exit_in_check.t into t/closure_traits/.
03:31 gaal joined perl6
03:31 svnbot6 r12148 | agentz++ | readded check.t to t/closure_traits/
03:32 weinig|food is now known as weinig|fed
03:32 agentzh lunch &
03:32 agentzh left perl6
03:39 cmarcelo audreyt: hey. judy build integration here is up, but a lot of tests are failing with latest rev, i'm going to check this now... any news on svk situation?
03:42 audreyt cmarcelo: sadly not, either they are all busy, or something
03:42 audreyt I'll keep prodding
03:42 audreyt oh wait
03:42 audreyt it's weekend, of course nobody is there ;)
03:44 cmarcelo sorry for crashing repo for svk users.. =P
03:45 weinig|fed is now known as weinig
03:57 audreyt it's not your fault :)
03:59 deleff left perl6
04:18 amnesiac joined perl6
04:22 soisoisoi joined perl6
04:44 vsoni joined perl6
04:47 gaal motning
04:53 audreyt hey
04:53 vsoni audreyt: hi
04:53 audreyt hi vsoni
04:53 vsoni audreyt: long time
04:54 vsoni aydreyt: how was OSCON
04:54 gaal agentzh: sure, if you think there'll be many of them. an alternative is subrouting/closure_traits/* or .t
04:54 gaal audreyt: as you saw I punted on circularity :(
04:55 gaal I'll add Capture to Pugs.Val.Code now, and then we can have some fun
04:55 audreyt yup
04:55 audreyt I wonder how to teach Cabal about #include
04:55 gaal why does cabal need to know?
04:56 audreyt if you change Code.hs
04:56 gaal oh. hmpf.
04:56 audreyt Val.hs needds to be rebuilt
04:56 cmarcelo folks, t/builtins/hashes/delete.t is supposed to be broken in trunk ?
04:56 audreyt yes
04:56 gaal well, the answer is not to fix cabal, fix ghc so #include can be thrown away :)
04:57 gaal j/k
04:57 gaal #include of things like version is legit
04:58 audreyt the test is bogus
04:58 gaal Cabal doesn't depeng on ghc, right?
04:58 gaal so the fix can't be ghc-specifig
04:59 cnhackTNT joined perl6
04:59 TimToady audreyt: f(3) is an error.  hopefully detectable at compile time in this case.
05:00 TimToady Note that this is the \'type\' of a \'sub\', and has nothing to do with
05:00 TimToady subtyping.
05:00 TimToady Maybe we should s/Sub/Code/ on SubType, SubMethod, etc.
05:01 TimToady since they're VCodes, after all.
05:01 TimToady biab &
05:01 vsoni left perl6
05:03 svnbot6 r12149 | audreyt++ | * hashes/delete.t: fix bogus test.
05:03 kanru joined perl6
05:04 audreyt TimToady: yeah, SubType is gone from the new AST in Pugs.Val.*
05:22 pdcawley joined perl6
05:24 DaGo joined perl6
05:29 spinclad ' i think i am a camel / who is looking for a camel / who is looking for a camel / who is looking for its young '
05:36 gaal audreyt: captures are in. how to test-drive them?
05:42 svnbot6 r12150 | gaal++ | * Captures in da house
06:06 svnbot6 r12151 | gaal++ | * add missing fields in Code for ENTER, LEAVE, CATCH and CONTROL.
06:07 DaGo joined perl6
06:08 audreyt gaal: write parser for \()
06:08 audreyt as its own quote
06:10 gaal k
06:14 TimToady you have c_undoBlocks in there twice
06:14 gaal trying to figure out if it's possible to reuse ruleFormalParam etc.
06:14 gaal oops, fxing
06:15 svnbot6 r12152 | gaal++ | * remove duplicate field, reported by TimToady++.
06:16 TimToady arguably you just want to put undo and keep blocks in the leave list with conditionals around them.
06:16 gaal eaiser introspection if they're separate...
06:16 TimToady true.  probably premature optimization
06:17 TimToady on the other hand, maybe they want to interleave execution
06:17 gaal hmm.
06:18 gaal so add a datatype
06:18 gaal c_leaveBlocks :: [LeaveCode]
06:18 tea joined perl6
06:19 gaal data LeaveCode = NormalLeave Code | KeepLeave Code | UndoLeave Code
06:19 gaal (except named conformantly)
06:20 TimToady something like that.  arguably most blocks won't have any of these properties...
06:20 gaal but those that do would appreciate them working correctly :)
06:20 agentzh joined perl6
06:21 gaal good thing there's no such thing as abnormal entry.
06:21 gaal sometimes lack of symmetry is nice
06:21 agentzh TimToady: what is the type of %$pair (where $pair is a Pair object) ?
06:21 TimToady goto label; repeat { ...; label: ... } while 1;
06:22 gaal ouch
06:22 gaal oh right, duff's device etc.
06:23 TimToady I suspect it's just Pair, but Pair does Hash, or some such.
06:23 TimToady on the other hand, maybe the intent is to transform into a Hash.
06:24 audreyt if Pair does hash then %$pair can remain Pair
06:24 audreyt but this concerns e.g.
06:25 agentzh it's a bit counterintuitive IMHO.
06:25 audreyt %$pair.<x y z> = <1 2 3
06:25 audreyt >
06:25 audreyt and
06:25 agentzh my gut feeling is % is a hash convertor or something like that.
06:25 audreyt my %h := %$pair
06:25 audreyt so maybe it should alloc a concrete Hash
06:25 audreyt which is more intuitiv
06:25 audreyt e
06:26 TimToady maybe, but if Type($thing) always constructs a new one, we need some way of saying that we don't care if there's a new one.
06:26 agentzh so then $pair has multiple keys?
06:27 TimToady new Type can construct, and Type() can just ask for the interface one way or another.
06:27 audreyt Type is vlue type
06:27 audreyt (pure)
06:27 TimToady so Type() would be a noop if it already supports the role
06:27 audreyt so "new" is the same
06:27 TimToady whereas new would force a new copy anyway
06:28 TimToady seems intuitive that saying "new" makes a new one.
06:28 TimToady and the longer thing is more work.
06:28 audreyt k.
06:29 TimToady after $a := Type($b) we don't care whether $a =:= $b
06:29 svnbot6 r12153 | gaal++ | * TimToady++ observes that LEAVE traits may be interleaved with
06:29 svnbot6 r12153 | gaal++ |   KEEP/UNDO. Turn exit blocks into one tagged list.
06:29 TimToady or whichever one it is...
06:29 agentzh TimToady: thank you for clarification.
06:30 HXanadu joined perl6
06:31 agentzh ?eval my $pair = :when<now>; say %$pair.does('Hash');
06:31 evalbot_12127 is now known as evalbot_12152
06:31 evalbot_12152 OUTPUT[ ] Bool::True
06:31 agentzh heh
06:31 TimToady anyway, I think %$pair is Hash($pair) and not Hash.new($pair).
06:32 TimToady ?eval my $pair = :when<now>; say $pair.does('Hash');
06:32 agentzh TimToady: gotcha.
06:32 evalbot_12152 OUTPUT[ ] Bool::True
06:32 agentzh oh, Pair already does Hash.
06:32 agentzh so %() is a noop.
06:32 TimToady yep.
06:33 TimToady either that, or .does is hardwired to return True.  :)
06:33 HXanadu_ joined perl6
06:33 TimToady ?eval my $pair = :when<now>; say $pair.does(Hash);
06:33 evalbot_12152 OUTPUT[ ] Bool::True
06:33 agentzh hehe
06:33 TimToady ?eval my $pair = :when<now>; say $pair.does(Int);
06:33 crem joined perl6
06:33 evalbot_12152 OUTPUT[ ] Bool::True
06:33 audreyt ?eval Pair.does(Hash)
06:33 agentzh oh, dear...
06:33 TimToady ?eval my $pair = :when<now>; say $pair.does(Array);
06:33 evalbot_12152 Bool::False
06:33 evalbot_12152 OUTPUT[ ] Bool::True
06:33 TimToady whew
06:34 * agentzh is lost.
06:34 TimToady True is return value of say
06:34 audreyt aye
06:35 TimToady ?eval my $pair = :when<now>; $pair.does(Hash);
06:35 agentzh oh, i see.
06:35 evalbot_12152 is now known as evalbot_12153
06:35 evalbot_12153 Bool::False
06:35 agentzh so this is a pugs bug.
06:35 TimToady ?eval my $pair = :when<now>; %$pair.does(Hash);
06:35 evalbot_12153 Bool::False
06:36 TimToady so it would seem
06:36 agentzh this one too.
06:36 * agentzh is adding these two to the test suit...
06:37 TimToady agentzh++
06:37 audreyt while in other languages we'd use IHashCollection
06:37 audreyt and HashTable
06:37 agentzh :=)
06:37 audreyt to mean the interface and the concrete class
06:37 audreyt and perl6 also encourages the use of roles as interfaces and class for managing instance
06:37 audreyt the .does(Hash) pattern seems to run counter to that goal quite badly :)
06:38 audreyt class Hash {...};   class Pair does Hash {...}
06:38 audreyt though it's probably sound :)
06:38 audreyt but that implies that if class Hash "has $!something"
06:39 audreyt then Pair will implicitly carry around that via a closure
06:39 audreyt but it will just restrict the use
06:39 audreyt such that there is only one key
06:39 audreyt i.e. it's really a constrained mutable Hash
06:40 TimToady i've always thought of using classes as roles more like taking a snapshot of the class and calling the snapshot immutable.
06:40 audreyt but I think it's not much useful...
06:40 audreyt TimToady: but does the attr slots get carried over?
06:40 audreyt class Moose { has $!x; has $!y }
06:40 audreyt class Foo does Moose {...}
06:40 spinclad label: ...; repeat { ...; comefrom label; ... } while 1;
06:41 audreyt it's essentially noop, then?
06:41 audreyt i.e. only methods (and also public accessors of ourse) are carried over
06:41 TimToady what is noop?
06:41 audreyt the "does Moose" part
06:41 spinclad (sorry, was backlogged)
06:41 audreyt i.e. it's like saying
06:41 audreyt role Moose {}; class Foo does Moose
06:41 audreyt and unlike
06:41 audreyt role Moose {has $!x; has $!y}; class Foo does Moose
06:41 weinig is now known as weinig|sleep
06:41 TimToady why not the latter?
06:42 TimToady as long as you ignore subsequent changes to Moose?
06:42 audreyt would Foo.new() take x=> y=> ?
06:42 audreyt (I assume "yes")
06:43 audreyt i.e. Foo will alloc two slots for x and y?
06:43 TimToady I would think so.
06:43 audreyt if so, how does "Pair does Hash" work without carrying over all Hash'es internal storage?
06:43 agentzh good question.
06:43 TimToady hmm.
06:45 TimToady seems like we have two kinds of "does" here.
06:45 agentzh one does the interface and one does the implementation?
06:46 TimToady on the other hand, if a real role includes an attribute, it has to be handled by the class.
06:46 TimToady so maybe it's sane to just say does Class ignores attributes.
06:46 TimToady I dunno...
06:46 * agentzh grins.
06:46 audreyt 08:46 < TimToady> so maybe it's sane to just say does Class ignores attributes.
06:47 audreyt it's sound :)
06:47 audreyt so Class does Role
06:47 audreyt and because Role isa Class
06:47 audreyt so Class ignore Role's attribute
06:48 audreyt so if you does SomeClass, its meta Class gets to act as a Role
06:48 audreyt without Roles storage :)
06:48 audreyt (er, that's probably the maximally confusing way to put this)
06:48 TimToady MEGO
06:49 TimToady could have something to do with it almost being midnight though...
06:49 audreyt anyway, I think this is a way to formalize punning
06:50 audreyt but if we don't formalize punning, then we need IConvertible IEnumerable etc etc
06:50 audreyt either way is fine. punning is breaking new grounds :)
06:50 TimToady Roles don't actually contain attributes.
06:50 TimToady they merely have the skeletons of attributes that the class sets up
06:51 audreyt A completely private role attribute may be declared like this:
06:51 audreyt has $!spleen;
06:51 audreyt The name of such a private attribute is always considered lexically scoped.
06:51 audreyt If a role declares private lexical items, those items are private to
06:51 audreyt the role due to the nature of lexical scoping.  Accessors to such
06:51 audreyt items may be exported to the class, but this is not the default.
06:51 audreyt hmm.
06:52 audreyt TimToady: sure. that is another way to say "you can't instantiate a instance from a role"
06:52 TimToady we probably need stevan to hammer on this too.
06:52 audreyt Moose::Meta::Class doesn't yet handle "does" I think
06:53 audreyt stevan: hey :)
06:53 audreyt oh, stevan is about to sleep too.
06:53 audreyt tomorrow then :)
06:53 obra morning
06:53 audreyt agentzh: %$pair should definitely "does Hash"
06:53 audreyt agentzh: hold the $pair part for a bit :)
06:53 obra audreyt: nelhage wrote more RT::Plugin::REST failing tests
06:53 agentzh audreyt: thanks
06:53 audreyt good
06:54 audreyt I'll lookAtTheTests
06:54 obra once it works, he can give you cli tools for hiveminder ;)
06:54 audreyt moose ;)
06:56 HXanadu__ joined perl6
06:57 * TimToady (va)mooZzzes. &
06:59 svnbot6 r12154 | agentz++ | [t/data_types/pair.t]
06:59 svnbot6 r12154 | agentz++ | added tests for $pair.does(Hash) and (%$pair).does(Hash).
07:05 svnbot6 r12155 | agentz++ | [t/data_types/pair.t]
07:05 svnbot6 r12155 | agentz++ | commented out the test for $pair.does(Hash) according to audreyt.
07:13 Aankhen`` joined perl6
07:16 agentzh (bbiab)
07:26 agentzh question: should BEGIN blocks interpolated in double-quoted strings be fired at compile-time or run-time?
07:27 agentzh for example, say "This is { BEGIN { say 'hi' } }";
07:33 audreyt compile time.
07:33 audreyt qq is not eval.
07:34 agentzh audreyt: thanks!
07:34 audreyt =)
07:35 agentzh ?eval eval('$handle = { BEGIN { say "hello, world!" } }');
07:35 evalbot_12153 is now known as evalbot_12155
07:35 evalbot_12155 OUTPUT[hello, world! ] undef
07:35 agentzh ?eval eval('$handle = { INIT { say "hello, world!" } }');
07:35 evalbot_12155 undef
07:35 agentzh audreyt: is this a bug?
07:36 agentzh i think INIT should run ASAP during runtime.
07:36 agentzh just like BEGIN in this example.
07:38 audreyt aye I think.
07:38 audreyt test it :)
07:39 agentzh i'll leave it failing in t/closure_traits/eval.t.
07:41 audreyt agentzh: re the thread about moving t/ to another repo
07:42 audreyt I think src/ and t/ needs to stay in the same repo, that's true
07:42 audreyt but preferably if parrot/ is in the same repo
07:42 audreyt then that will also simplify things
07:42 audreyt in particular svk merge history
07:42 agentzh yep!
07:42 audreyt so moving everything to svn.perl.org makes sense :)
07:43 audreyt [particle]'s suggestion makes a lot of sense...
07:43 agentzh hopefully you can persuade the parrot folks.
07:43 agentzh *nod*
07:43 audreyt actually Ask and Robrt are the only people we need to persuade... :)
07:43 audreyt # http://noc.perl.org/
07:43 lambdabot Title: The Perl NOC - perl.org
07:45 agentzh i was only thinking about expirable TODOs. but you guys think much further. ;-)
07:45 audreyt i.e. our history is already in http://svn.perl.org/perl6/pugs/
07:45 lambdabot Title: Revision 10863: /pugs
07:45 audreyt and if we move t/ one level up
07:45 audreyt into
07:45 audreyt http://svn.perl.org/perl6/t/
07:45 audreyt I think it'd be all for the best
07:46 agentzh Hmm, it looks like a great idea.
07:46 agentzh but i'm afraid you would not be able to send out commit bit freely.
07:47 audreyt especially attractive in the time of openfoundry mod_dav_svn troubles :)
07:47 audreyt sure, see my p6l reply
07:47 agentzh okay
07:47 audreyt I asked Robrt for a web gateway for sending invites
07:47 audreyt nd adding people  (using their perl.org auth)
07:47 audreyt he has coded it up already
07:48 audreyt but it's not yet actively used
07:50 agentzh audreyt: nice writing!
07:51 audreyt :)
07:51 audreyt (bbl)
07:55 luqui joined perl6
07:56 * agentzh tries to fix the INIT {} bug under src/
07:59 * agentzh gives up now.
08:02 integral joined perl6
08:05 svnbot6 r12156 | agentz++ | [t/closure_traits/eval.t]
08:05 svnbot6 r12156 | agentz++ | added more tests to runtime-fired BEGIN/CHECK/INIT/etc. one of the tests for INIT {} is failing due to a Pugs bug.
08:17 svnbot6 r12157 | agentz++ | added t/closure_traits/interpolate.t to test BEGIN/CHECK/INIT/END blocks interpolated in double-quoted strings
08:17 svnbot6 r12157 | agentz++ | removed the redundant syntax/begin_in_strings.t
08:20 tea left perl6
08:36 ludan joined perl6
08:42 nothingmuch joined perl6
08:42 svnbot6 r12158 | agentz++ | [t/statements]
08:42 svnbot6 r12158 | agentz++ | renamed array_values_in_bool_context.t to values_in_bool_context.t and also added more tests to it.
08:43 agentzh blb &
09:00 agentzh left perl6
09:08 foo\ joined perl6
09:22 tup joined perl6
09:30 integral joined perl6
09:48 buetow joined perl6
09:49 kane-xs joined perl6
09:53 chris2 joined perl6
09:59 svnbot6 r12159 | luqui++ | Simplified the CHECK and INIT tests.
09:59 svnbot6 r12160 | luqui++ | Redid the CHECK and INIT code to execute CHECKs in reverse order.
09:59 rodi joined perl6
10:12 diakopter joined perl6
10:15 elmex joined perl6
10:29 svnbot6 r12161 | luqui++ | More useful error message when using a non-rhsable closure trait as an rhs.
10:32 Southen_ joined perl6
10:48 froh-doh I've seen in Overview/Data.pod that scalars should have an "exists" method. Another mention of this is in a conjecture inside Spec/Subroutine.pod. Is this still an alive idea? Is it useful to add a test for this?
10:49 froh-doh (side note: I know I've already asked this question here, should I post it in the mailing list?)
10:58 agentzh joined perl6
10:59 agentzh luqui++ # fixed CHECK {...} and check.t
11:00 luqui froh-doh, hmm
11:00 luqui Something tells me that they shouldn't
11:01 luqui okay, if exists exist, it should be written $scalar.VAR.exists, I imagine
11:02 luqui i.e. the idea that there are methods which do not direct to the cell is bogus
11:02 luqui that is why we introduced .VAR
11:02 froh-doh is it something already available?
11:02 * froh-doh tries
11:03 luqui I don't think VAR is implemented
11:03 luqui ... in any form
11:03 TimToady joined perl6
11:04 luqui I will change and add a note for audreyt and/or TimToady to check my sanity
11:04 froh-doh you're right: '*** No such sub: "&VAR"
11:04 luqui where that sentence is the note :-p
11:08 froh-doh luqui: is there some place where I can read about VAR?
11:08 froh-doh ah, Object.pod
11:08 froh-doh grep++
11:08 luqui also S12
11:09 froh-doh aka S12
11:11 svnbot6 r12162 | luqui++ | Made up some stuff about .VAR and .exists on scalars.
11:13 agentzh luqui: should a "global" FIRST {...} runs before the mainline code?
11:13 agentzh *run
11:13 luqui agentzh, I would consider FIRST to belong to the lexical scope of the mainline code
11:13 luqui that is, it would run before the mainline code *of that file*
11:14 agentzh yes, i second.
11:14 agentzh so i've hit a pugs bug. :)
11:14 luqui yeah.  there's also the INIT thing with eval
11:16 agentzh :=)
11:17 svnbot6 r12163 | agentz++ | [t/closure_traits/]
11:17 svnbot6 r12163 | agentz++ | rewrote ascending_order.t and descending_order.t following luqui's style in check.t (one of these tests for FIRST {...} is failing due to a pugs bug)
11:26 svnbot6 r12164 | agentz++ | [t/closure_traits/]
11:26 svnbot6 r12164 | agentz++ | multiple.t: fixed the expected CHECK running order in tests and added tests for FIRST {...} (luqui++)
11:26 svnbot6 r12164 | agentz++ | tweaked the links in check.t.
11:37 jferrero joined perl6
11:37 svnbot6 r12165 | agentz++ | [t/closure_traits/]
11:37 svnbot6 r12165 | agentz++ | simplified the rval parts of check.t and init.t
11:37 svnbot6 r12165 | agentz++ | fixed the parse error in rvalue.t
11:46 agentzh what's the running order of FIRST {...} versus ENTER {...}?
11:47 kanru joined perl6
11:55 svnbot6 r12166 | agentz++ | [t/closure_traits]
11:55 svnbot6 r12166 | agentz++ | added tests for FIRST {...} to interpolate.t.
11:55 svnbot6 r12166 | agentz++ | tweaked the comments in other test files.
11:55 nnunley joined perl6
12:03 agentzh BEGIN {...
12:04 agentzh in Perl 6, &exit call in BEGIN {...} implicitly calls END {...} while CHECK {...} does not?
12:05 agentzh Hmm, this behavior is not specified, so we should assume it remains the same as in Perl 5.
12:05 iblechbot joined perl6
12:07 gaal audreyt: ping
12:10 lisppaste3 joined perl6
12:10 svnbot6 r12167 | agentz++ | tidied up exit_in_begin.t and exit_in_check.t a bit.
12:10 f0rth joined perl6
12:11 dolmans joined perl6
12:17 agentzh ?eval my $sub = { my $var = 2; FIRST { $var = 1 } $var }; $sub()
12:17 evalbot_12155 is now known as evalbot_12167
12:17 evalbot_12167 \1
12:17 agentzh ?eval my $sub = { my $var; $var = 2; FIRST { $var = 1 } $var }; $sub()
12:17 evalbot_12167 \1
12:18 agentzh is it a bug? i think FIRST {} should be called at subroutine entry time, and ASAP.
12:18 agentzh audreyt, TimToady: please confirm. :)
12:19 * jferrero is away: Ocupado... ahora vuelvo...
12:24 froh-doh I'd like to add a script into util, is is better to discuss it here before?
12:25 agentzh froh-doh: what's that script?
12:25 froh-doh agentzh: it's a slightly modified version of http://www.perlmonks.org/?node_id=567025
12:25 lambdabot Title: Color diff for terminal
12:26 agentzh froh-doh: is it supposed to used with pugs?
12:26 froh-doh the modification is to make it work with svk natively
12:26 froh-doh agentzh: no, it would help to show differences between revisions
12:26 agentzh heh, you will write it in Perl 6?
12:27 froh-doh uhm, interesting :)
12:27 froh-doh I'll try
12:27 agentzh if it's in Perl 6, it had better go into examples/
12:27 agentzh froh-doh: good luck!
12:28 wolverian I like vimdiff. :)
12:28 froh-doh thanks. Anyway, I'd like it to be useful (hence 'util' :), but maybe it's useful only for me and it can happily reside in my $PATH
12:30 froh-doh it basically gets the diff output and colorises it, to make it visually clearer where the differences are
12:30 lollan joined perl6
12:32 agentzh froh-doh: heh, i'm using TortoiseSVN, which can give me that functionality on Win32. :=)
12:32 lumi joined perl6
12:33 froh-doh agentzh: that's why it basically doesn't work in Win32 (I guess) ;)
12:33 agentzh hehe
12:38 * jferrero is back (gone 00:18:53)
12:52 dolmans what dose `don't backtrack' mean? dose that mean that ".*:<alpha>" will match fail against "abc"?
12:58 froh-doh uhm, where is __END__ ?
13:00 agentzh dolmans: to the first approximation, not backtracking means the text to be matched should be ambiguous.
13:00 svnbot6 r12168 | agentz++ | [t/closure_traits]
13:00 svnbot6 r12168 | agentz++ | fixed a bug in first.t and also tidied it up.
13:01 agentzh sorry, i mean "should not be ambiguous"
13:02 agentzh {.*\w} surely fails to match "abc"
13:03 agentzh end of day for me &
13:03 agentzh left perl6
13:05 dolmans agentzh: don't really understand.
13:16 aufrank /away
13:25 svnbot6 r12169 | scw++ | Fix Pugs::Emitter::Rule::Parsec with changes to P::R::C
13:25 svnbot6 r12169 | scw++ | to compile Pugs::Grammar::MiniPerl6 without v6.
13:37 froh-doh is there some way to do     open my $fh, '-|', $forked_command;    ?
13:42 gaal Pipe.open
13:42 gaal see Prelude.pm
13:47 froh-doh uhmm, Prelude.pm does not esist in my installation, but Prelude.pm.yml :/
13:52 Jedai ?eval my %h = (1 => 2); "1 : ok" if %h.exists('1'); %h<3> = %h.exists('3') ?? 'oops' !! 4;
13:52 evalbot_12167 is now known as evalbot_12169
13:52 evalbot_12169 \"oops"
13:52 svnbot6 r12170 | fglock++ | v6 - fixed AST stringification in v6::AST::Base
13:52 Jedai ?eval my %h = (1 => 2); %h.exists('1')
13:52 evalbot_12169 Bool::True
13:53 Jedai Is %h<3> = %h.exists('3') ?? 'oops' !! 4; ok ? Is it a bug ?
13:53 svnbot6 r12171 | fglock++ | v6-Compiler - make Sub::Multi errors locally non-fatal
14:01 elmex joined perl6
14:09 gaal froh-doh: the .yml file is a compiled version. You can browse the source here: svn.openfoundry.org/pugs/src/perl6/Prelude.pm
14:20 diakopter joined perl6
14:28 rashakil joined perl6
14:28 svnbot6 r12172 | audreyt++ | * Now that gaal++ implemented "vv" to convert oldval to newval,
14:28 svnbot6 r12172 | audreyt++ |   we take back the `cmd` and qx{cmd} and q:exec{cmd} notation
14:28 svnbot6 r12172 | audreyt++ |   and make them to what they used to do in Perl 5 -- namely,
14:28 svnbot6 r12172 | audreyt++ |   capture an external command's output.
14:28 svnbot6 r12172 | audreyt++ | * Also simplify .meth parsing now that ./meth is gone.
14:30 pmurias joined perl6
14:30 pmurias hi,
14:31 pmurias would should i do to fix the Delta source ended unexpectatly error?
14:32 cmarcelo use svk sy -s 12103 //mirror/pugs...
14:32 cmarcelo it'll skip the problematic revs..
14:33 froh-doh how can I translate    my $fh = \*STDIN;   ?
14:33 audreyt my $fh = $*IN;
14:33 froh-doh thanks, and sorry for boring
14:34 audreyt no need to :)
14:34 froh-doh ok, so only "sorry for boring" ;)
14:34 Jedai ?eval my %h; %h<1> = %h.exists('1') ?? "oops" !! "ok";
14:34 evalbot_12169 is now known as evalbot_12172
14:34 evalbot_12172 \"oops"
14:34 audreyt heh
14:35 pmurias cmarcelo: thanks, it seems to be doing something...
14:35 Jedai Is this normal ?
14:35 audreyt no, this is otterly broken
14:35 audreyt I mean, utterly
14:35 Jedai I add a test in exists.t ?
14:35 audreyt hm, wait
14:35 audreyt actually...
14:36 audreyt perhaps it's fine.
14:36 audreyt it depends on who is the recipient of the assignmen
14:36 Jedai Well I wondered, because in Perl5 it worked
14:36 audreyt if it's the (autovivifieD) Scalar that's stored in %h<1>
14:36 audreyt then that behaviour is correct
14:36 audreyt if {}= is a special method on %h itself
14:36 audreyt as is the case with perl5
14:37 audreyt then it should be "ok"
14:37 gaal audreyt: hey :) in the parser, do any of the existing functions help with capture?
14:37 gaal they're a little twisty
14:37 gaal parseHasParenParamList etc/
14:38 wolverian hm, so is there a %h=<foo> form like with methods? (to replace the contents of %h with the contents of %h<foo>)
14:38 audreyt yes, it's
14:38 audreyt parseHasParenParamList
14:38 audreyt maybe s/ParamList/Capture/ whilst you are at that
14:38 audreyt wolverian: %h .= <foo>
14:38 wolverian ah. thanks
14:39 audreyt but I don't think it's specced
14:39 wolverian it's basically a fold
14:39 audreyt *** the right-hand-side of .= must be a function application
14:39 wolverian a special-case fold anyway
14:39 audreyt is the current pugs error
14:39 audreyt but I think it should be made to work
14:39 wolverian nice :)
14:40 Jedai So this is correct ? Ok, I guess we should remember it when translating Perl5 to Perl6. I'll correct the example which used this incorrectly.
14:40 audreyt TimToady: S12 mentions a very curious, unseen in S02, category
14:40 audreyt method self:sort { ... }
14:41 audreyt I understand the motivation for this
14:41 audreyt but it seems it's closely tied to .=
14:42 audreyt Jedai: I _think_ the current pugs behaviour is correct, but thi part is less than well-specced
14:42 gaal audreyt: but sould I make a transformer over that to return newExp? or just copy the code? (this functino seems to lose named information too, if I understand what it does correctly)
14:42 audreyt I think it parsed nameds to Syn "named"
14:43 xern joined perl6
14:43 audreyt so for 0th approx you can transform
14:43 audreyt but feel free to copyCode too
14:43 gaal where should newexp live? Pugs.AST ?
14:44 Jedai ?eval "regex" ~~ /^\w+$/
14:44 evalbot_12172 Match.new(   ok => Bool::True,    from => 0,    to => 5,    str => "regex",    sub_pos => (),    sub_named => {} )
14:44 gaal or should this be a function returning a VV PureCapt in which the leaf Exps are oldExps?
14:45 audreyt the latter.
14:45 audreyt hm wait
14:45 audreyt no
14:45 audreyt PureCapt should have Val as leaf
14:45 audreyt the Exp-level Capt would have Exp as leaf
14:45 audreyt two different things
14:46 gaal ? we now have:
14:46 gaal data Cap = CaptMeth { c_invocant :: Exp, , c_argstack :: [Arglist] }
14:46 audreyt yes but that's wrong
14:46 audreyt invocant needs to be Val
14:46 gaal or a CaptSub variant
14:47 audreyt for it to be a Val
14:47 gaal hmmmmm
14:47 audreyt \$x
14:47 audreyt \f()
14:47 audreyt the latter does not mean defer{}
14:47 gaal right
14:47 audreyt it cannot rerun f() ecach time it is $()d
14:47 audreyt so at value level it's firstclass value with value leaves
14:47 audreyt at exp level it's a exp node with exp leaves
14:48 audreyt maybe parameterize it?
14:48 audreyt data Cap a = ...
14:48 audreyt where a is Exp or Val?
14:48 audreyt not sure
14:48 audreyt (and then
14:48 audreyt type ExpCap = Cap Exp
14:48 audreyt )
14:48 gaal yeah...
14:49 audreyt ?eval `ls`
14:49 evalbot_12172 Error: Unsafe function 'Pugs::Internals::runShellCommand' called under safe mode
14:49 audreyt good
14:49 gaal whee
14:49 gaal btw, this is marked unsafe:
14:49 gaal ?eval %?CONFIG<sitelib>
14:49 evalbot_12172 Error: Can't modify constant item: VUndef
14:50 gaal oh, weird error too
14:50 gaal I can't think why it was marked unsafe, but I don't want to blindly change it
14:51 gaal leaks information about running evalbot?
14:52 pmurias left perl6
14:58 audreyt yeah but. that's fine
14:58 audreyt ununsafe it?
15:01 wolverian can I see (:t foo etc) names defined in a let instead of top scope in ghci?
15:02 pasteling "aufrank" at 65.37.87.113 pasted "compilation of Prelude.pm looks for installed libparrot" (7 lines, 547B) at http://sial.org/pbot/18942
15:02 audreyt Prelude> let x = 1
15:02 audreyt Prelude> :t x
15:02 audreyt x :: Integer
15:02 wolverian hrm, I mean, in a 'let foo = 2 in ...'
15:02 audreyt aufrank: this is trunk parrot?
15:02 aufrank does anyone have advice about why building pugs is failing for me?  (error is pasted above)
15:02 aufrank audreyt: yes, trunk parrot
15:03 audreyt does it work if you ls -l the blib/lib/libparrot.dylib from parrot tree to /usr/local/lib?
15:03 aufrank I'll try... I didn't want to make install parrot because that has lead to problems in the past and I was told it's generally a bad idea.  has that changed recently?
15:04 audreyt nope.
15:05 aufrank audreyt: did you mean ln -s, not ls -l ?
15:05 audreyt the only thing changed is that when you "make install"
15:05 audreyt parrot now tells you to think twice
15:05 audreyt ;)
15:05 audreyt yeah, ln-s
15:05 aufrank does pugs require libparrot to be in /usr/local/lib/ ?
15:06 audreyt no
15:06 audreyt we do whatever the parrot-config tells us to
15:07 TimToady I always install parrot, but I'm prepared to hand-uninstall it if I get weirdness.
15:09 cmarcelo what should I do to solve "impossible happened" instead of "make realclean" (which solves it)?
15:09 aufrank audreyt: is there something I can do to parrot-config to tell it "leave /usr/local/ out of this!"
15:09 aufrank audreyt: symlink worked, btw
15:10 audreyt aufrank: I don't know. :/ trace line 384 in Makefile.PL ish
15:10 audreyt cmarcelo: GHC 6.4.1?
15:10 cmarcelo 6.5 now
15:10 audreyt oh?
15:10 audreyt hm
15:10 audreyt rm dist/build/src/Pugs/Parser.*
15:10 audreyt or whichever one that's reporting the impossible
15:10 audreyt and make again
15:10 audreyt failing that
15:11 audreyt rm dist/build/src/Pugs/AST/Internals.*
15:11 audreyt and make again
15:11 audreyt let me know which worked
15:15 cmarcelo killing Pugs/Compile/Pugs.* (where the error shows) didn't solve. rm'ing ...AST/Internals.* passed the critical point, so we can tell that worked..
15:16 froh-doh I'd like to add an example in the examples directory, and I'm using svk
15:16 froh-doh is it still ok to use    /util/add-svn-props.sh newfile1 newfile2
15:17 froh-doh (which I forgot to do with my first commit, now that I think about it!)
15:20 foo\ joined perl6
15:22 cmarcelo audreyt: actually it didn't worked, at the end it had a link problem concerning one function of Pugs.AST.Internals... I just "realclean" by now.
15:26 audreyt cmarcelo: ok... aw.
15:26 audreyt maybe it was a mistake to trust .hs-boot :/
15:26 audreyt was the imposssible about envPos?
15:28 cmarcelo Sometimes happened with envPos, but I think there was another one too.. after I solve things here I'll try again rm'ing and making..
15:30 cmarcelo i'm kind of lost here because lots of fails are popping up in pugs-judy (r12148) and I fail to see why =P.. I reviewed some things and now will make-smoke it again..
15:30 svnbot6 r12173 | audreyt++ | * envPos and the "impossible" error -- try a workaround
15:30 svnbot6 r12173 | audreyt++ |   before giving up on .hs-boot until GHC 6.6.
15:31 audreyt cmarcelo: well, some new tests have been added
15:32 audreyt so chances are that's not your fault
15:32 audreyt diff it with existing smoke.pugscode.org errors
15:32 audreyt and nopaste the entire diff when you are done... I need to crash now :/
15:32 cmarcelo I'm matching with a same rev non-judy version I made here..
15:33 audreyt oh? :/
15:33 audreyt nopaste the diffs of failures too
15:33 audreyt then
15:36 cmarcelo diff smoke.html with smoke.html is ok? or you mean a manual diff =P
15:36 cmarcelo s/manual/visual/..
15:39 svnbot6 r12174 | polettix++ | Added examples/colordiff.pl and called util/add-svn-props.sh on
15:39 svnbot6 r12174 | polettix++ | docs/other/primes_rambling.pod.
15:41 audreyt I'd prefer w3m dump to text and diff the text
15:42 audreyt but I'll bbl :)
15:42 * audreyt sleeps &
15:42 cmarcelo ok
15:45 audreyt nice rambling :)
15:46 audreyt sub is_prime ($n) { ... } # this would save the .shift as well
15:46 audreyt &
15:55 stevan audreyt, TimToady: re: the Roles stuff in the backlog
15:55 foo\ joined perl6
15:55 stevan I think Hash, Array, etc should probably not have any attributes
15:55 stevan or rather.. the role versions of them
15:55 svnbot6 r12175 | polettix++ | Used formal sub arguments as suggested by audreyt
15:56 stevan maybe we call them IHash, IArray and IEtc
15:56 stevan they simply provide the interface,...
15:56 stevan then the concrete implementation (Hash, Array, Etc) all use the instance representation types for storage
15:57 stevan so class Array does IArray { # no has @!storage }
15:58 stevan it just uses the internal instance structure,.. in this case a perl6array
15:58 stevan this approach has a couple of benefits I think
15:58 audreyt sub (@x) {...}
15:59 audreyt @x will be constrained then to IList then?
15:59 lambdabot Maybe you meant: . v
15:59 stevan 1) array like behavior becomes a mixin through the Role
15:59 audreyt i.e. it wouldn't care about the concrete class
15:59 audreyt similarily
15:59 stevan audreyt: yes, probably
15:59 audreyt sub (%x) { ...} would be constrianed then to IMapping
15:59 stevan yes
15:59 audreyt sub (%x is rw) {...} would be constrained to IHash
16:00 audreyt etc
16:00 stevan yes
16:00 stevan :)
16:00 audreyt it's very much less punny
16:00 stevan this approach also discourages inheriting from Array, Hash, etc
16:00 audreyt but what does .does(Array) mean?
16:00 audreyt synonym for .isa(Array) then
16:00 audreyt right?
16:00 stevan which is probably a good thing since they need custom instance structures to be efficient
16:01 stevan yes, I suppose that would need to be special cases
16:01 stevan unless
16:01 audreyt unless .does(AnyClassHere)
16:01 stevan .does(<class>) meant something different from .does(<role>)
16:01 audreyt simply means .isa(AnyClassHere)
16:01 stevan I am not sure it means the exact same as .isa
16:02 audreyt I wonder why the method is .isa and the trait auxillary is "is"
16:02 markstos_ joined perl6
16:02 stevan I think it should be more duck-type-check-ish
16:02 audreyt class Point3d isa Point { ... }
16:02 audreyt but .does(Role) is nominal
16:02 audreyt why .does(Class) suddenly becomes structural?
16:02 stevan structural on the class yes, hmm
16:03 audreyt I think it needs to stay nomincal
16:03 stevan yeah
16:03 audreyt and either:
16:03 audreyt 1) class F does C {...} does _not_ copy over any instance slots
16:03 audreyt   and simply mixes in the virtual methods
16:03 audreyt   so .does(C) can succeed and .isa(C) fail
16:03 audreyt or
16:03 audreyt 2) class F does C {...} is meaningless
16:03 audreyt    and .does(C) simply means .isa(C)
16:04 stevan hmm
16:04 stevan I am seeing echos of the implcit/explicit composition stuff nothingmuch and were talking about for handling attributes internally
16:04 vel joined perl6
16:04 stevan almost as if we need two views
16:04 audreyt actually timtoady's 3)
16:04 stevan Class.asa(Class)
16:05 stevan Class.asa(Role)
16:05 audreyt class F does C {...} indeed copy over instance slots
16:05 audreyt and recursively flattens C's inheritance tree
16:05 audreyt is viable, but I think a bit too hard to explain
16:05 stevan hmm
16:05 stevan that does conform more to role-ness
16:06 audreyt but then "does Point" is not structural
16:06 audreyt all it's saying is flattening inheritance chain from that point on
16:07 audreyt I don't know. I think it makes sense
16:07 audreyt but then it wouldn't work across incompatible layouts
16:07 audreyt and we're sure that Array and Hash would have different layouts
16:07 stevan yeah
16:07 markstos_ What does it mean to "flatten an inheritance chain" ?
16:07 audreyt as they don't have attribute slots
16:07 stevan audreyt: are we sure?
16:08 audreyt markstos_: class C is C2 {} class C2 is C3 {} class D does C {...flatten C/C2/C3...}
16:08 stevan markstos_: to flatten the class, to move all methods/attributes/etc to the same level
16:08 audreyt stevan: implement Array on p6opaque?
16:08 stevan as if there is no indirection
16:08 markstos_ Aha.
16:08 audreyt stevan: that's very unlikely; I can't even think of a good encoding
16:08 markstos_ flattening is not something I've seen before.
16:09 audreyt not even javascript can do that :)
16:09 stevan audreyt: yeah,.. but I have to say that diff instance types is hard
16:09 markstos_ Are there languages that do use it?
16:09 audreyt markstos_: right, it's fresh idea :)
16:09 markstos_ "fresh" but also perhaps "hard to explain" as you said either, because it's new.
16:09 hexmode joined perl6
16:09 audreyt I share your concerns.
16:10 markstos_ But sometimes new/fresh is good.
16:10 markstos_ if it's actually better. :)
16:10 stevan markstos_: we use this technique in Class::C3 actually
16:10 markstos_ Oh.
16:10 stevan and if you squint, Perl 5 method caching is exactly this
16:10 markstos_ Ah.
16:10 stevan because it stashes aliases in the symbol table
16:10 audreyt the flattening is weird because for things you do inherit
16:10 audreyt then you don't mix them in
16:10 audreyt you only mix in things you don't inherit directly
16:11 audreyt which is very subtle
16:11 stevan yeh
16:11 TimToady actually, when I said "snapshot" I wasn't thinking of inheritance at all.
16:11 markstos_ As I work on porting CGI::App to Perl6, I have first impressions of the language. A number of things are simpler-- less syntax-- like getting rid of 'self' in a lot of places. But sometimes there is more syntax to learn, and that's where i get more hesistent. I still need to study the difference between 'package', 'class' and 'module' now.
16:12 TimToady just immutability of the current class
16:12 audreyt TimToady: oh. I misunderstood then. sorry
16:12 TimToady but it's an interesting idea nonetheless
16:12 stevan i think it would need to be inheritence as well,..
16:12 stevan because what if the local class didnt have anything in iti
16:12 audreyt TimToady: but to mix in inheritance would break roleness
16:12 stevan then does Foo would mean nothing
16:13 TimToady A12 speculates that roles can mix in inheritance sneakily already.
16:13 * markstos_ prepares for juggling performance &
16:14 stevan hmm,... that would take care of it
16:14 stevan mixing in the @ISA
16:14 TimToady well, we have other containers that are immutable but whose contents aren't.
16:15 TimToady and we'd certainly like to have sneaky delegation.
16:15 TimToady yes, I'm just this role, but I actually delegate to this other object...
16:15 audreyt TimToady: in the S12 example
16:16 audreyt I mean A12 example
16:16 audreyt say I have Friend.greet
16:16 audreyt and Dog does Pet
16:16 audreyt can Dog.greet "next METHOD" into Friend?
16:16 audreyt i.e. is it really inheritance?
16:16 stevan ouch
16:17 stevan we would have to mixin the inheritence or next METHOD would not work
16:17 TimToady well, welcome to duck typing.
16:17 stevan unless we re-write the code
16:17 audreyt not sure what duck typing has to do with this...
16:18 froh-doh .oO( is "duck typing" vaguely related to "duct taping"? )
16:18 * stevan prefers his duck roasted,.. with some rice noodles
16:18 TimToady next METHOD is only going to find a method of the same name, but not maybe the same meaning,  but that's a red herring, yes.
16:18 * stevan doesnt like herring
16:18 stevan no matter what color it is
16:18 stevan maybe mxining in the @ISA chain is not a bad thing
16:19 stevan it will make it more predictable
16:19 audreyt well, at least we have C3
16:19 audreyt so it won't violate things badly
16:19 stevan yes
16:20 nothingmuch joined perl6
16:20 stevan and as an optimization, maybe we can switch things around
16:20 audreyt so. "does" and "isa" differs only in that "does R" won't put R into your @ISA
16:20 audreyt they are otherwise equivalent
16:21 audreyt (with the restriction that instantiating a role is forbidden, but that happens elsewhere)
16:21 audreyt and you can "isa" a role or "does" a class freely
16:22 stevan I think isa/does need a certain level of interchangability
16:22 Psyche^ joined perl6
16:22 stevan what if...
16:22 stevan class Foo { has $.bar } class Bar is SomethingWithLongISAChain { } ... class Foo does Bar;
16:22 stevan or rather,..
16:22 stevan class Bar is SomethingWithLongISAChain { } ... class Foo does Bar;
16:22 stevan ah wait,.. nevermind
16:23 stevan my brain is not working 100% yet
16:23 stevan not enough coffee
16:23 TimToady my brain is never working 100% yet...
16:23 stevan I was trying to exploit the unorderedness of role composition
16:23 audreyt and in both isa/does, you get slots
16:23 TimToady even with coffee
16:23 stevan well,.. Moose will start exploring these issues soon
16:23 audreyt and in both isa/does, you cannot peek at super's slots
16:24 audreyt (which is markedly different from otherLanguages)
16:24 HXanadu joined perl6
16:24 audreyt and access to super's slots, like everybody else, has to go thru accessor
16:24 * stevan has to do some errands
16:25 TimToady which is actually important for delegation-emulating-inheritance.
16:25 stevan but I think we are all thinking on the same page here
16:25 TimToady across languages, say.
16:25 audreyt curiously, that solves delegation-based problem of incompatible layouts.
16:25 audreyt heh. evidently
16:25 TimToady we are in violent agreement.
16:26 audreyt Redundant Array of Insane Designers
16:26 stevan in Moose, you can always do this:  $foo->meta->get_attribute('bar')->get_value($foo, 'bar');
16:26 audreyt cool. the A12 wording "Roles never inherit" is misleading
16:26 nothingmuch "always" ?
16:26 stevan similar to CLOS and the get-slot-value method
16:26 nothingmuch it took me *FOREVER* to get you to put that in you twit
16:27 audreyt because it's true upto the fact that "roles can't instansiate"
16:27 audreyt and doesn't say extra things
16:27 * stevan hugs nothingmuch
16:27 nothingmuch happy birthday, boss
16:27 stevan thanks :P
16:27 audreyt but otherwise S12 would much benefit from porting it over :)
16:27 * stevan tags off to nothingmuch
16:28 nothingmuch what does "tags off" mean?
16:28 stevan (tag team lambdam??se)
16:28 TimToady wrestling?
16:28 stevan yes
16:28 weinig|sleep is now known as weinig
16:28 justatheory joined perl6
16:28 stevan cause I have to go to Home Depot and buy mulch for my birthday :/
16:28 TimToady I think you're confusing two different Jesses
16:28 audreyt stevan: happy birthday :)
16:28 stevan thank you
16:28 TimToady hippo happo bithutththdi
16:28 * obra gets confused
16:29 stevan Jesse "The Body" and Jesse "The Brain"
16:29 stevan :)
16:29 obra Happy birthday
16:29 stevan :)
16:29 TimToady you're what, 19 now?  :)
16:29 Psyche^ is now known as Patterner
16:30 stevan yeah,.. give or take 14 years
16:30 stevan I am one year older than ($Class::MOP::VERSION * 100) ;)
16:30 TimToady fortunately, years are not objects.
16:30 audreyt 5-year-old mastermoose
16:31 weinig is now known as weinig|coffee
16:31 stevan ok,.. gotta run,..
16:31 * stevan hugs #perl6
16:31 TimToady thanks
16:31 TimToady happy mulch
16:36 gaal ooh, happy birthday stevan-moose!
16:37 TimToady gaal: did you see my hate-mail about %?CONFIG  :)
16:37 gaal TimToady: polluting the global namespace is less noisy than throwing stuff in %?CONFIG? :)   </bikeshedding>
16:37 gaal heh
16:38 TimToady %*CONFIG would be the global namespace...
16:38 gaal as opposed to %?CONFIG, which is the front lobal namespace (of the compiler)
16:39 TimToady anyway, things that can pretend to be objects with lots of fiddly bits could use to be top level in ? twigildom.
16:40 TimToady Think how often $^O is used in Perl 5.
16:40 TimToady needs to be huffmanly short.
16:40 TimToady thought maybe not that short.
16:40 TimToady s:2nd/t//
16:40 gaal grumble %c ::= $?CONFIG grumble
16:41 TimToady %?::('grumble')
16:42 gaal but one thing that really isn't just the bikeshed color: let's not standardize on version convention for the compilers
16:42 TimToady certainly not.
16:42 TimToady we haven't even really decided whether authorities are really part of the version
16:42 TimToady use Foo-(1.2-Mike|1.3-Ed)
16:43 TimToady I really say really to often.  really!
16:43 TimToady *too
16:44 gaal selfraceally
16:44 TimToady I like the :parrot<mumble> notation for that reason.
16:45 TimToady though presumably one could get away with :pugs(6.2.12)
16:45 TimToady assuming orderedness is preserved.
16:45 TimToady which it presumably is with built-in versions
16:45 TimToady but problematical with tutti-frutti versioning schemes.
16:46 gaal nod
16:46 TimToady could have string versions that are savvy about 1.2.3-anything
16:47 TimToady before - compares version, after compares string
16:47 TimToady gets you alpha and beta in the right order, anyway...
16:47 TimToady except it puts those after 1.2.3
16:48 TimToady 1.2.3-alpha < 1.2.3 < 1.2.3+foo
16:48 gaal funky.
16:49 TimToady but generally, i think string comparisons would have to be forced in some policy spot
16:49 TimToady 1.2.3.-2 == alpha
16:49 TimToady 1.2.3.-1 == beta
16:50 TimToady but that screws up using - to delimit authority.
16:50 TimToady maybe - delimiter is bad anyway.
16:50 TimToady 1.2.3.-1@JRAND
16:50 TimToady OM
16:50 gaal there's always another code point :/
16:51 TimToady heh
16:51 TimToady 1.2.3.-1׀JRANDOM
16:52 wolverian could we use named instead of positional?
16:52 TimToady 1.2.3.-1<JRANDOM KRANDOM>
16:53 TimToady hard to fit into a filesystem.
16:53 wolverian just use a database :-)
16:53 TimToady is there a buzzing in the air?
16:55 wolverian no, it's an echo..
16:56 TimToady wow, I think "use v6<pugs>" passes the P5 test.
16:56 gaal bbiab... &
16:58 TimToady and < and > are unlikely to occur in a url.
16:58 TimToady and - is likely to occur in a random version number from the wide world.
16:59 TimToady filenames containing < and > would be a problem though.
16:59 TimToady hmm.
17:01 markstos_ left perl6
17:01 diakopter use v6^pugs^
17:01 TimToady on the other hand, we can write funky versions alreayd like
17:01 TimToady use Foo-('1.2.3.-1')-JRANDOM
17:01 TimToady maybe
17:02 TimToady P5 doesn't like ^
17:03 froh-doh use v6.pugs ?
17:03 TimToady P5 doesn't like .
17:04 froh-doh probably because it clashes with v6.2 ?
17:04 TimToady and it only sort of likes <pugs>, since it thinks it's a readline or glob.
17:08 [particle] use v6'pugs;
17:08 mauke haha
17:08 [particle] ooh, i've got some mail to respond to...
17:09 weinig|coffee is now known as weinig
17:09 TimToady looks like use v6-alpha.pugs; could work
17:13 TimToady but not v6.pugs, which was the whole point, sigh.
17:16 Jedai joined perl6
17:16 TimToady v6-alpha+pugs and v6+pugs seem to both work to P5.
17:17 TimToady assuming no -w
17:18 TimToady -w gets in the way of a lot of possibilities, sigh.
17:21 TimToady well, we could still make - part of the version in P6, and use bare v6-alpha in P5.
17:21 TimToady that's almost cleaner than using alpha as an authority.
17:23 TimToady use Foo-1.2.3.-42.1<http://foo.bar> still looks kinda good to me.
17:24 TimToady can always mangle the < and > for the filename.
17:24 [particle] and the slashes, and colon
17:25 TimToady I like the pillness of the authority.
17:27 TimToady well, I have to go do some archeology in my garage...
17:27 TimToady later &
17:34 hexmode` joined perl6
17:56 svnbot6 r12176 | audreyt++ | * First cut at proper compile-time role mixin support, based on
17:56 svnbot6 r12176 | audreyt++ |   discussion on #perl6 about the semantics of "does".
17:56 svnbot6 r12176 | audreyt++ |     class C {};
17:56 svnbot6 r12176 | audreyt++ |     class D does C {};
17:56 svnbot6 r12176 | audreyt++ |     D.isa(C);   # False
17:56 svnbot6 r12176 | audreyt++ |     D.does(C);  # True
17:56 svnbot6 r12176 | audreyt++ |   Composition works, and overriding role methods should work as well,
17:56 svnbot6 r12176 | audreyt++ |   but concrete class/package names is not yet renamed, and role conflicts
17:56 svnbot6 r12176 | audreyt++ |   is not yet validated.  Still, a step toward the right direction.
17:59 hexmode` joined perl6
17:59 TimToady smokin'
18:08 diakopter is there a SVN::Web -like view of the commits?
18:12 wolverian hm, is this supposed to happen on 'perl Makefile.PL': Could not find module `Distribution.Simple'
18:13 diakopter does anyone know if this project has anything like this: https://svn.webgui.org/svnweb/WebGUI%20SVN/revision?rev=2816
18:16 diakopter hmmm; if I got svk working on a server, I could host it...
18:38 audreyt joined perl6
18:44 diakopter audreyt: are you there
18:45 khisanth_ joined perl6
18:46 khisanth_ is now known as Khisanth
18:52 robkinyon joined perl6
18:56 TimToady she probably went back to sleep.  it's about 4am in Taiwan, give or take an hour
18:57 TimToady I don't know of anything like webgui.
18:57 froh-doh does she sleep in such a fractal way?
18:58 TimToady it varies depending on residual jetlag, i think.
18:59 * froh-doh thinks about "Fight Club"
19:00 diakopter TimToady: I meant the SVN::Web view
19:01 diakopter anyway, I'm working on setting it up on a server
19:01 rashakil joined perl6
19:03 rashakil_ joined perl6
19:15 justatheory joined perl6
19:16 lichtkind joined perl6
19:24 TimToady_ joined perl6
19:37 TimToady1 joined perl6
19:47 tup joined perl6
19:57 Corion joined perl6
19:57 Corion left perl6
19:59 cmarcelo left perl6
20:00 asz joined perl6
20:23 chris2 joined perl6
20:55 weinig is now known as weinig|away
21:10 jferrero joined perl6
21:19 amv joined perl6
21:20 * jferrero is away: Ocupado... ahora vuelvo...
21:25 FurnaceBoy joined perl6
21:38 * jferrero is back (gone 00:17:52)
21:40 froh-doh I added an implementation for quotemeta, but I'd like some "go ahead" before committing
22:01 kane-xs seen audreyt
22:01 jabbot kane-xs: audreyt was seen 5 hours 30 minutes 48 seconds ago
22:05 ayrnieu joined perl6
22:26 froh-doh joined perl6
23:27 miyagawa joined perl6
23:44 dazjorz joined perl6
23:44 dabreegster joined perl6
23:48 dazjorz is now known as iwantkarma
23:48 iwantkarma is now known as dazjorz
23:48 mauke_ joined perl6
23:50 khisanth_ joined perl6
23:51 khisanth_ is now known as Khisanth
23:52 weinig|away is now known as weinig

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo