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