pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by TimToady on 25 January 2008.
00:03 timbunce left 00:04 bacek joined 00:08 eternaleye_ left 00:12 timbunce joined, rindolf left 00:30 Limbic_Region joined 00:31 Alias_ joined, justatheory joined 00:33 Chillance left 00:53 kolibrie left, nnunley left, audreyt left 00:58 nnunley joined, Maddingue joined, audreyt joined, rakudo_svn joined 01:05 Psyche^ joined 01:07 Alias_ left, Alias_ joined 01:09 Schwern left 01:10 arguile joined 01:12 pasteling joined 01:13 timbunce left 01:17 Patterner left, Psyche^ is now known as Patterner 01:20 justatheory left 01:25 elmex left 01:29 Alias_ left 01:32 ikeda left 01:41 Limbic_Region left 01:48 bsb joined 02:03 josh- left 02:06 jeremy-wrk left 02:27 planofish joined 02:40 wknight8111 left 02:46 apeiron_ joined
zamanfou is now away: In the rain my tears are forever lost. 02:50
02:51 Schwern joined 02:54 apeiron left 02:57 awwaiid joined 03:02 luqui joined 03:15 Schwern left 03:16 apple-gunkies joined 03:23 pbuetow joined 03:24 Schwern joined 03:30 Schwern left 03:43 pbuetow_ joined 03:50 pbuetow_ left 03:53 pbuetow left 04:15 eternaleye joined 04:29 josh- joined 04:41 eternaleye left 04:42 penk joined
pugs_svn r21422 | Auzon++ | [gsoc_spectest] added tests to return.t and fudged for rakudo. (added 6 tests) 04:48
Auzon pugs/t/spec/S04-statements/return.t is ready for spectest_regression
04:57 luqui left 05:13 alester joined 05:25 Redeemer joined 05:26 Redeemer left 05:28 Psyche^ joined 05:41 Patterner left, Psyche^ is now known as Patterner 05:43 Alias_ joined 05:56 josh- left 05:57 josh- joined 06:16 justatheory joined 06:27 justatheory left, jferrero joined 06:46 polettix joined 07:02 IRCMonkeydsss joined 07:04 IRCMonkeydsss left 07:16 alester left 07:17 barney joined 07:35 cosimo joined 07:36 iblechbot joined 07:43 timbunce joined 08:10 hanekomu joined 08:11 masak joined 08:13 timbunce left 08:14 timbunce joined 08:16 timbunce left 08:21 timbunce joined 08:29 hanekomu left 08:37 timbunce left 08:42 zamanfou is now known as zamanf 08:43 zamanf is now known as zamanfou 08:56 jferrero left 08:58 jferrero joined 09:00 elmex joined, bacek left
moritz_ re 09:07
Patterner hbock 09:21
09:21 baest_ joined, baest left
rakudo_svn r29647 | moritz++ | [rakudo] add S04-statements/return.t to spectest_regression, Auzon++ 09:25
r29647 | moritz++ | +12 pass, +2 skip
masak moritz_: could you clarify to me what the advantage of fudge-skip is? 09:34
moritz_ masak: rakudo doesn't die if a test is skipped and it tests a not-yet-implemented feature ;) 09:35
masak and what happens once the feature is implemented?
moritz_ if it executes, and just yields the wrong results, a TODO is better
masak: we run autounfudge.pl ;-)
and hope it catches the skips 09:36
masak ah, that's new to me
masak checks out autounfudge.pl
cool! 09:37
now the picture is clearer to me
moritz_: thanks
09:38 chris2 joined
moritz_ I just started it, and it found one passing todo test in S02-builtin_data_types/anon_block.t 09:38
masak autounfudge.pl++ 09:45
moritz_ thanks ;) 09:47
pugs_svn r21423 | moritz++ | [spec] unfudge a few tests for rakudo, autounfudge++ 10:13
masak moritz++ 10:15
10:17 Jedai joined
rakudo_svn r29648 | moritz++ | [rakudo] add S04-statements/given.t to spectest_regression. Auzon++ 10:31
10:31 pugs_svn left, rakudo_svn left 10:32 pugs_svn joined, rakudo_svn joined
moritz_ perlbot: karma Auzon 10:32
perlbot Karma for Auzon: 137
10:44 pmurias joined 10:57 barney left 11:04 PZt left 11:05 PZt joined
zamanfou is now away: In the rain my tears are forever lost. 11:07
11:27 wknight8111 joined 11:29 barney joined 11:42 kanru joined, ruoso joined 11:51 iblechbot left 11:55 a-jing joined, a-jing left 11:57 iblechbot joined
pmurias ruoso: hi 11:58
ruoso pmurias, hi 11:59
pmurias i'm still unsure if the object representation should store the metadata in a special way 12:00
ruoso: would a 'use v6' for switching from c to perl6 would be a good idea? 12:02
ruoso would it be easy to parse?
pmurias if we do it the pythonic way, easy
ruoso what do you mean? by using indentation? 12:03
pmurias ues
* yes
did a mockup even 12:04
ruoso seems fine to me 12:05
pmurias should the object representations be interchangable? 12:06
12:09 wknight8111 left
ruoso pmurias, yes... 12:10
pmurias, that's the entire point... you should be able to freely interchange WHAT/HOW/REPR
moritz_ @tell Auzon when you fudge files ready for inclusion into spectest_regression, just /msg or @tell me, I'll add them when I'm online again 12:12
lambdabot Consider it noted.
moritz_ @tell Auzon thinking a bit more, just adding a note in the commit log is also enough, since I read all your commit messages (big moritz is watching you ;-) 12:13
lambdabot Consider it noted.
12:16 meppl joined
ruoso pmurias, the REPR api is not implemented as a completely separated object because that requirement would be too much arbitrary... meaning... if you implement p5hash as a REPR you would have the methods and attributes being managed in a entirely different way... 12:18
pmurias, and having it as an explicit API makes it easier for non-p6opaque representations to be implemented.
pmurias under the current design (on the wiki) a metaclass instance needs to be available to interpret the metadata 12:23
ruoso yes... 12:25
the metaclass is REPR independent
because of the REPR API
pmurias what i would make sense would be to have the repr api seperated as a set of roles, the most basic providing only attribiute storage and .dispatch forwarding, others stuff as vtables
* what i think would
ruoso pmurias, oh sure... sure... nothingmuch had pointed me that direction before... 12:26
moritz_ pmurias: re v6.pm in evalbot: no. Would you benefit from it?
ruoso I think we lack the level of maturity to properly define this hierarchy
pmurias moritz_: not really 12:27
ruoso: we can just split it into basic and advanced for now ;) 12:28
ruoso pmurias, heh...
nothingmuch have some ideas about that...
12:31 planofish left
pmurias what's the multi argument form of ``? 12:54
moritz_ in p5? 12:55
open()
pmurias in p5, it's unspeced in p6
moritz_ open $handle, '|-', @args or die $!; local $/; my $data = <$handle>; close $handle 12:56
or something along these lines 12:57
but I can never remember if it's |- or -|
13:01 kolibrie joined 13:04 cmarcelo joined
pugs_svn r21424 | pmurias++ | [smop] sm0p.pl turns use v6;p6 code... into frame = q:sm0p {...} 13:04
13:05 cmarcelo left
pmurias moritz_: i just stuck it into a nearby open3 13:05
13:08 cmarcelo joined
pugs_svn r21425 | moritz++ | [spec] fixed POD 13:14
r21426 | moritz++ | [spec] more pod fixes 13:16
moritz_ doesn't see a perlfix:sym<\> anywhere in STD.pm 13:18
is it simply missing? or is it handled as a separate term?
pmurias you can run STD on \1?
moritz_ how do I do that? 13:19
ruoso pmurias, btw... about repr-api-hierarchy... I think the most basic one is the support for private storage. That should be enough to implement a pure-prototype-oo... 13:21
moritz_ moritz@lara:~/pugs/src/perl6>echo '\1;' > test.t 13:22
moritz@lara:~/pugs/src/perl6>./tryfile test.t
Starting...
############# PARSE FAILED #############
----> <<<HERE>>>\1;
13:23 jferrero left
ruoso pmurias, I think we should create a directory inside smop to document all the roles then... 13:24
pugs_svn r21427 | pmurias++ | [smop] how a "a basic" p6opaque will look like 13:26
masak ok, so t/spec/S12-class/inheritance-class-methods.t passes in rakudo if I shuffle a few lines around in the class definitions. should I commit that? 13:27
moritz_ masak: that depends on wether the order of declarations is being tested for
ruoso pmurias, are you planning to store the methods and attribute definitions in the storage itself? 13:28
pmurias ruoso: yes creating such a directory would make sense
masak moritz_: not in this particular test, no
pmurias ruoso: in the most basic case yes
moritz_ masak: the canonical answer is "yes, but make sure the failing behaviour is tested somewhere"
masak moritz_: I submitted a bug report for it
but I guess I could write a test as well, if needed
moritz_ masak++
ruoso pmurias, how would you answer to "defined"?
moritz_ masak: another test is always good ;-) 13:29
pmurias a defined bit maybe ;)?
masak writes the test
ruoso pmurias, hmm...
pmurias or just see if the metadata is present like in the previous scheme
ruoso pmurias, you mean having it as a separated slot from the storage? 13:30
pmurias $objcje.^!private_storage('^METADATA').defined
* $object
ruoso pmurias, I think it might be ok to implement it that way in p6opaque for now... 13:31
pmurias, but that should not be exposed as the REPR API
13:32 donaldh joined
masak hm, I use lives_ok when something is syntactically correct but likely to fail, right? 13:32
pmurias exposed meaning part of the REPR API?
ruoso yes
pmurias, and I'm not sure about having "defined" inside "metadata", because you will require every object to have a metadata, even if it's a plain instance of a single proto-object 13:33
in the previous schema, the object was "defined" when it had a private storage...
and usually the prototypes would only have a metadata storage 13:34
(considering the restriction to avoid Object.BUILDALL() making undef defined
pmurias, what do you think about the following... 13:35
has Hash $.metadata; has Hash of Hash $.private_storage
13:39 pmurias_ joined
pugs_svn r21428 | masak++ | [declaration_order.t] new test file testing order-independent class declaration 13:40
r21429 | masak++ | [inheritance-class-methods.t] changed around the order of class declaration 13:41
r21429 | masak++ | due to a bug in rakudo, you must currently declare the base class first
r21429 | masak++ | the tests now run in rakudo
ruoso pmurias, then you'd have $obj.^!private_storage.{$package}{'$!a'} and $obj.^!metadata.{'methods'}
but we could then expose the API in more detailes...
like having a $obj.^!methods that would do the hash lookup directl
moritz_ masak: please use - to separate words in file names
masak oops
moritz_ masak: we're slowly moving to that conventioin (or at least try to)
masak moritz_: I remember the thread, but forgot the conclusion :/ 13:42
I just saw that all the other test files in that folder used _
moritz_ yes :(
ruoso pmurias, but I would still keep an "instanceof" to allow "diret delegation to a single prototype" which, afaics, is the most common case... 13:43
pugs_svn r21430 | masak++ | dashes, not underscores
masak moritz_++
ruoso pmurias, what do you think?
moritz_ maybe I should change the file names in one big rush in both the test suite and in rakudo's test files 13:44
but then again I should coordinate that with other people first ;-)
pmurias_ got sucked in some stupid blog posts from chromatics stupidity column 13:45
ruoso where where? 13:46
13:46 pmurias left, pmurias_ is now known as pmurias
pmurias ruoso: where where refered to? 13:46
moritz_ suspects use.perl.org/~chromatic/journal/ 13:47
lambdabot Title: Journal of chromatic (983)
ruoso pmurias, the blog post? 13:48
pmurias, but... what do you think on what I've proposed? 13:49
pmurias from planet.perl.org
the difference is slight
actually it was the top one from planet.parrotcode.org 13:50
ruoso: i don't think we should add convenience methods to the representation object 13:52
ruoso what do you mean "conveinence"? 13:53
*convenience
pmurias, you mean .^!methods is convenience? 13:55
pmurias methods which don't add any functionality but make some thing more convenient
yes 13:56
ruoso pmurias, the convenience in this case is the REPR api
the thing is we don't need to force every object repr implementation to implement a full Hash of Hash to access each method... 13:57
pmurias a Hash of Hash is equivalent to a Hash
ruoso p6opaque is designed in a way that .^!methods looks like convenience, but that might not be the case for other implementations
p5blessedhash, for instance... 13:58
pmurias the .^methods as currently wikied wouldn't map to perl5 methods
13:59 TJCRI joined
ruoso pmurias, I should update .^!methods to be Hash of Array of Method 13:59
pmurias p5blessedhash would have to use AUTOLOAD (or lowlevel equivalent) and redispatch to .how.dispatch
ruoso pmurias, yes... but .how.dispatch would need to ask the p5blessedhash for the methods 14:00
considering you implement a protoobject in p5...
I think the point of confusion here is about class-based Ɨ prototype-based OO 14:01
14:01 jiing joined
pmurias but the p5blessedhash would store them as any other data 14:01
ruoso pmurias, not really... it would look at the 'ref' the hash has, and look the methods available for that package... 14:02
then you can have a mixed hierarchy of protoobjects of different representations... 14:03
pmurias p5blessedhash would be incompatible with a lot of metaclasses 14:04
ruoso why would it?
pmurias if the metaclass has a different dispatching order 14:05
ruoso I didn't get it 14:06
the "methods storage" is "used by" whatever metaclass
the REPR is not responsible by the dispatch 14:07
pmurias has to think 14:08
ruoso the repr delegates the dispatch to the how, the ho looks up the methods using the REPR api, and make the call
s/the ho /the how/
ruoso drawing a sequence diagram 14:10
pmurias can only find contrived examples of metaclasses not assuming a method list 14:17
pugs_svn r21431 | ruoso++ | [smop] sequence diagram on the invocation 14:19
r21432 | ruoso++ | [smop] ops, the last call was coming from the wrong object
ruoso pmurias, take a look at doc/InvocationSequence.png 14:20
14:21 jhorwitz joined
ruoso pmurias, this example would be a pure-prototype-oo case 14:22
14:22 alester joined
ruoso I also need to say that I'm in favour of making the default implementation for P6 prototype-based (by delegation...) 14:23
because class-based OO makes it very hard to adopt different dispatching mechanisms... Class::C3 Ɨ Single inheritance Ɨ whatever 14:24
if we make the protoobject the storage for the metadata, we can have a metaclass instance that is transversal to the entire hierarchy
and, more importantly, that can be easily replaced 14:25
pmurias, do you see what I mean? 14:28
pmurias yes
lunch& 14:29
14:31 Lorn joined
ruoso TimToady, would it be ok for a Perl 6 implementation to make the built-in types Prototype-based-by-delegation instead of class-based? 14:32
TimToady, or is 'class-based OO' part of the spec for the builtin types? 14:33
pmurias TimToady is away for a couple of days for OSCON 14:36
moritz_ but I guess he'll have internet access there, from time to time ;-) 14:37
the last documented design minutes where 2008-06-11 - d'oh 14:38
14:44 barney left
ruoso pmurias, after all the reasoning, what do you think about p6opaque structure? 14:51
pmurias i would go for having .^!methods and .^!attributes (and perhaps .^!metadata) as separate roles with the default implemenation using .^!private_storage 14:53
14:53 polettix left 14:54 polettix joined
ruoso and storing "isa", "does" etc as part of the private_storage? 14:55
14:55 hercynium joined
pmurias unless the representation overides that 14:55
ruoso so you mean making .^!storage.{'^METADATA'}.how as *the* REPR API 14:57
ruoso renaming private_storage simply to "storage"...
pmurias dunno, ^!how might be better 14:58
14:58 polettix is now known as ipw2008
ruoso and so for .^!storage.{'^METADATA'}.{'methods'}, doesn't it... 14:58
I mean... 14:59
you said Role, and I agree with you
if some representation doesn't support methods, it *doesn't support* them
it means that the how needs to fetch the methods elsewhere
14:59 ipw2008 left 15:00 alester left
ruoso and not that the how is going to traverse some hash to fetch it 15:00
15:00 ipw2008 joined
ruoso or... 15:00
it might mean that you have a pure-prototype-oo
with no delegation
and that your methods are slots in the private_storage 15:01
and your metaclass is aware of that
15:01 ipw2008 left
ruoso and in that case, this metaclass would be incompatible with other metaclasses 15:02
which is the syntax to specify the type of the key in a Hash? 15:03
pmurias Hash of something 15:04
ruoso that's for the value
pmurias ah key
my Any %hash{Str}; 15:05
ruoso ahm...
that doesn't solve my problem...
pmurias that's the default hash
ruoso I have a
Hash{Package} of Hash
pmurias my Hash %hash{Package} 15:06
ruoso but how do I put that into a Signature?
(as the return value, I should say)
pmurias is just looking up stuff from s* not from memory 15:07
zamanfou is now away: In the rain my tears are forever lost.
ruoso hate public away notices... 15:08
pmurias zamanfou seems to live in a rainy climate
ruoso: what's the benefit of not supporting methods if the can be supported (emulated) by storing stuff in private_storage 15:09
moritz_ and in a very verbose climate, if (s)he minds telling us all status changes 15:10
ruoso pmurias, because that would make your metaclass incompatible with representations that do have a way to support methods
ruoso lunch &
ruoso brb & 15:11
pmurias what i meant is that the emulation happens at the repr level, the metaclass just calls .^!methods
15:12 cmarcelo left
rakudo_svn r29654 | moritz++ | [rakudo] fiddled with spectest_regression: 15:16
r29654 | moritz++ | - added S12-class/inheritance-class-methods.t, masak++
r29654 | moritz++ | - fixed typo in name of S12-class/anonymous.t, jonathan++ for implementing
15:16 cmarcelo joined
rakudo_svn r29655 | moritz++ | [rakudo] whitespace fixes in spectest_regression.data 15:23
15:33 alester joined
pmurias fixing my mountain bike& 15:35
15:35 pmurias left 15:44 pl0d joined 15:55 justatheory joined 15:58 penk left, penk joined 16:01 masak left 16:08 justatheory left 16:19 dmq joined 16:20 mofino joined 16:33 Exodist joined 16:40 kanru left 16:42 cls_bsd joined 16:43 TJCRI left 16:48 cls_bsd left, donaldh left, justatheory joined, cls_bsd joined 16:51 kanru joined 16:53 ruoso left 16:57 Exodist left 17:03 justatheory left 17:04 Exodist joined 17:07 alester left 17:09 ruoso joined 17:16 penk left 17:24 BinGOs left 17:27 justatheory joined, jfredett joined, nipotaway is now known as nipotan 17:37 alester joined 17:38 rindolf joined 17:40 jfredett_ left 17:47 BinGOs joined
Auzon thanks moritz_ :) 17:49
lambdabot Auzon: You have 2 new messages. '/msg lambdabot @messages' to read them.
Auzon moritz_: for some reason, the progress graph isn't updating on rakudo.de (or anywhere else that I've seen) 17:51
17:58 Chillance joined
pugs_svn r21433 | fglock++ | [v6.pm] requires perl 5.8.6 18:00
18:03 timbunce joined 18:10 kanru left 18:26 TJCRI joined, pmurias joined
pmurias ruoso: do you agree with what i'm proposing? 18:33
18:36 meppl left 18:42 kanru joined 18:55 Alias_ left
pmurias ruoso: i'm not sure myself, so i'll implement it and will see if it's a good scheme 18:59
does anyone have examples of usefull custom metaclasses?
19:04 apeiron_ is now known as apeiron 19:07 alester left 19:08 justatheory left 19:15 rindolf left
pmurias j 19:17
19:35 donaldh joined 19:56 meppl joined
moritz_ Auzon: yes, pmichaud didn't update spectest-progress.csvn for a while 19:59
Auzon I didn't know if it was that or the cronjob not working 20:00
moritz_ svn info languages/perl6/docs/spectest-progress.csv |grep Date
Last Changed Date: 2008-07-15 16:01:39 +0200 (Tue, 15 Jul 2008)
pmurias is tempted by a elf rewrite 20:08
20:08 justatheory joined
Auzon Why/ 20:08
20:09 alester joined
pmurias beind constantly hindered by little bugs and misdesignes 20:10
* misdesigns
20:15 meppl left 20:18 meppl joined 20:33 Alias_ joined 20:36 alester left 20:39 alester joined 20:57 jferrero joined 20:59 meppl left 21:01 meppl joined 21:04 Schwern joined 21:08 jhorwitz left 21:09 jferrero left, jferrero joined 21:21 Alias_ left, Alias_ joined 21:23 meppl left
pugs_svn r21434 | Auzon++ | [gsoc_spectest] moved leave.t into spec, changed $?BLOCK to &?BLOCK, other cleanup 21:25
Auzon I could've sworn that Rakudo had a basic implementation of leave. 21:26
moritz_ control exceptions are still on the ROADMAP
return() being the notable exception
21:27 meppl joined
Auzon on a side note, leave() is really cool, especially with being able to travel up multiple levels. 21:27
21:28 s1n left
Auzon It's a good way to tangle up code if you're not careful, but most powerful constructs are like that. 21:28
moritz_ and &?BLOCK is cool for recursion into anonymous blocks ;-) 21:29
Auzon and @?BLOCK for recursion into the parent block.
21:29 wknight8111 joined
moritz_
.oO( @?BLOCK[(^@?BLOCK).pick].() )
21:31
21:31 s1n joined
Auzon I can't even imagine what use that would be. Maybe obfu :) 21:32
moritz_ none at all, probably 21:33
but it looks really nice ;-)
Auzon Why is it (^@?BLOCK) instead of just @?BLOCK ? 21:34
21:34 alester left, alester joined
moritz_ because it's too late and I'm playing chess at the same time ;-) 21:34
@?BLOCKS.pick().()
[particle]1 try en.wikipedia.org/wiki/Chess_boxing 21:35
lambdabot Title: Chess boxing - Wikipedia, the free encyclopedia
21:35 [particle]1 is now known as [particle]
Auzon @?BLOCKS.pick().() would be the same as &?BLOCK() for some types of recursion... 21:35
moritz_ for some ;-)
Auzon @?BLOCKS.unique.pick().() # ;) 21:37
(assuming that .unique does what I mean)
moritz_ I don't think there's a builtin .unique 21:38
Auzon Nope, I checked
moritz_ probably because it encourages usage of the "wrong" data structure
does @?BLOCKS contain the lexical or the dynamic calling blocks? 21:39
ah, lexical, otherwise the ? twigil would be wrong
so no need for unique at all
Auzon also, @?BLOCK[0] === &?BLOCK 21:40
moritz_ but that's the same for both lexical and dynamic scopes
Auzon Ok, makes sense. I guess. ;) 21:41
[particle] @?BLOCKS.pick.clone.() 21:42
ruoso going home & 21:44
[particle] who needs closures remembering state, anyway? 21:46
moritz_ continuations? ;-)
[particle] if i'm picking blocks at random, might as well make sure i get consistently inconsistent results 21:47
moritz_ when you call srand() first you might get a nice obfu from it
21:58 iblechbot left, alester left 22:02 ruoso left, meppl left, donaldh left 22:03 justatheory left 22:04 alester joined 22:06 Alias__ joined, meppl joined 22:09 Alias_ left 22:13 alester left 22:15 Jedai left 22:16 TJCRI left 22:20 alester joined 22:32 Alias__ left, jferrero left 22:34 justatheory joined 22:41 Alias__ joined 22:45 cj joined 23:10 Limbic_Region joined 23:13 pbuetow joined 23:29 Sartak left 23:33 Exodist left 23:45 alester left 23:49 Chillance left 23:50 cmarcelo left 23:52 bacek joined 23:55 chris2 left, timbunce left