|
pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/ Set by diakopter on 11 July 2007. |
|||
|
00:07
__pao__ left
00:22
silug joined
00:39
thoughtpolice left
00:40
jferrero left,
silug left
00:49
thoughtpolice joined
00:55
nipotaway is now known as nipotan
01:13
cnhackTNT joined
|
|||
| meppuru | good night | 01:15 | |
|
01:20
meppuru left
01:23
lyokato_ joined
01:24
dalek left,
devogon left
01:26
jhorwitz left,
dalek joined
|
|||
| Tene | [particle]: looking at dopplr... interesting... | 01:26 | |
|
01:29
araujo joined
|
|||
| japhb | doc/ops: This is your brain over easy with a side of hashbrowns ... | 01:49 | |
|
01:59
jjore left
|
|||
| mncharity | it looks like perl5rx is a plugin for rx only, rather than being an alternative to the perl5 backend. | 02:06 | |
|
02:09
pbuetow left
02:10
pbuetow joined
02:15
turrepurre left
02:27
drbean_ joined
02:32
drbean left
02:34
drbean_ left,
drbean joined
|
|||
| pugs_svn | r19401 | rhr++ | [Unicode.pm] canonical composition | 02:49 | |
|
02:56
drbean_ joined
03:12
drbean left
03:13
felipe left
03:17
kanru left
03:21
arxc joined
03:27
jjore joined
03:36
arxc_ left
03:39
overdrive joined,
thoughtpolice left
03:41
buubot left
03:42
buubot joined
03:43
buubot left
03:44
buubot joined
03:47
cognominal_ left
03:51
alc joined
03:59
felipe joined
04:24
fridim_ joined
04:25
overdrive left
05:06
mncharity left
05:22
Limbic_Region left
05:36
matisse_enzer joined
|
|||
| matisse_enzer | Hi folks - I recently set up a buildbot (see buildbot.eigenstate.net:8040/) to poll the perl6 SVN repo and build parrot when changes are committed, and I'm wondering if anyone here s a committer and could commit some trivial change to svn.perl.org/parrot/trunk and/or svn.perl.org/parrot/branches/pdd17pmc | 05:45 | |
| TimToady | most of the parrot committers hang out on #parrot at irc.perl.org | 05:56 | |
| here are mostly pugs committers | 05:57 | ||
|
06:00
Andy_ joined
|
|||
| matisse_enzer | thanks - I will (and did) check #parrot - only two souls there :) | 06:01 | |
| I will try again another time. | |||
|
06:02
meppuru joined
|
|||
| Auzon | Try #parrot on irc.perl.org | 06:02 | |
| That's where it's supposed to be | |||
| matisse_enzer | ahh, I forgot - someone told me that and forgot. Thanks. | ||
| Auzon | No problem | ||
|
06:04
matisse_enzer left
06:09
meppuru left
06:23
Auzon left
06:44
devogon joined
07:00
Andy_ left
07:57
Aankhen`` joined
08:12
iblechbot joined
08:16
asprillia joined
08:31
fridim_ left
08:34
jferrero joined
08:47
asprillia left
08:49
asprillia joined
09:03
njbartlett_ left
09:31
jferrero left
09:38
jferrero joined
09:41
Alias_ left
09:42
jferrero left
09:53
jferrero joined
09:54
IllvilJa left
09:59
jjore left
10:01
alc left
10:02
jisom joined
10:04
arxc_ joined,
njbartlett_ joined
|
|||
| ruoso | @tell mncharity re why yap6 instead of per5v6: One of the more important performance killers in kp6 is the fact that it builds a heavy runtime in top of the perl5 runtime which is not lightweight also. YAP6 tries to implement a Perl 6 compatible runtime directly in C, so no overhead is needed. The idea is that yap6 can implement directly all the semantics of Perl 6 | 10:15 | |
| lambdabot | Consider it noted. | ||
| ruoso | TimToady, I've been thinking, and I realised that bare $obj.HOW(); returning a proxy object is not a good idea. Because sometimes you need to use the metaclass in its own context, considering its a generic one | 10:17 | |
| and in the proxy case, I can never get the metaclass object as it really is | |||
| I mean, $obj.^can() puts $obj as the invocant, | 10:18 | ||
| it makes sense to be able to call my $a = $obj.HOW(); $a.foo(); where the invocant for foo is the generic metaclass | |||
| so perhaps it is a better idea to force the invocant declaration when using HOW instead of ^ to represent object-related metacalls | 10:19 | ||
| like | |||
|
10:19
arxc left
|
|||
| ruoso | $obj.^methods(); should be the same as $obj.HOW.methods($obj: ); | 10:20 | |
| because, if the metaclass is an object by itself also, It may have other methods... | |||
| for instance, if the metaclas is also the responder interface (in nothingmuch's terms) | 10:22 | ||
| which is the case in YAP6 | |||
|
10:23
iblechbot left
10:24
ebassi joined,
drrho joined
10:29
jferrero left
10:31
masak joined
10:38
njbartlett_ left
10:40
njbartlett_ joined
|
|||
| nothingmuch | ruoso++ # i feel appreciated =) | 10:45 | |
|
10:45
njbartlett_ left
|
|||
| ruoso | nothingmuch, btw... did you take a look in yap6? | 10:46 | |
| I would really appreciate your review in the design I'm implementing... | |||
| the NOTES_* files and the include/*.h files are already related to this latest revamp | 10:47 | ||
| nothingmuch | i'll have a look when I finish my crazy work load | 10:48 | |
| if I don't respond by like monday or something feel free to /msg or email or something and bitchslap me about it =) | |||
| ruoso | nothingmuch, noprob... I'm still working in the .h files | ||
| and I'll probably not finish it until the weekend anyway | 10:49 | ||
| and I'll only get to the C code itself, when I finish the public .h files (the ones in include) | |||
| nothingmuch | if you wanna braindump a short spiel on how it's not like $something_else_i_should_know_about that might take less time | ||
| ruoso | Well, the braindump is the NOTES_BOOTSTRAP.txt file | 10:50 | |
| it's a quite short note | |||
| svn.pugscode.org/pugs/v6/yap6/NOTES...TSTRAP.txt | |||
| in the case you don't have it checked out | |||
| nothingmuch | ah, ok | 10:51 | |
| i'll read that now | |||
| i have it checked out (pugs) but I haven't ran svk up -s in like... months. maybe years =P | |||
| ruoso | heh | ||
| nothingmuch | so this is like an OO VM in C? | 10:52 | |
| ruoso | btw, where you see dispatcher, you should read prototype | ||
| nothingmuch, yes | |||
| not quite VM | |||
| but runtime library | |||
| actually | |||
| after I started to play with the stack | |||
| I should call it vm anyway | |||
| nothingmuch | read up on scheme -> C | ||
| there are many many interesting things those guys did | |||
| ruoso | ok, I'll search for it | 10:53 | |
| nothingmuch | those lambda heads are smart cookies | ||
| ruoso | any special url? | ||
| nothingmuch | i'll find something specific for you in a sec | ||
| fwiw, metaclass should be polymorphic | 10:55 | ||
| and it should almost always be completely masked by a responder interface | 10:56 | ||
| which in turn can be a very simple vtable of c funcs and a pointer to some data | |||
| much like perl's mg structure, but without the linked list stuff | |||
| ruoso | svn.pugscode.org/pugs/v6/yap6/inclu...ap6_base.h | ||
| I kinda mixed the metaclass and the responder interface | 10:57 | ||
| the metaclass is the reponder interface in YAP6 | |||
| nothingmuch | how come? | ||
| ruoso | when I get to the C level, | 10:58 | |
| the MetaClass is a special kind of object | |||
| nothingmuch | let me rephrase | ||
| ruoso | that also have a struct member named MESSAGE | ||
| which handles the request | |||
| nothingmuch | it's essentially an RI | 10:59 | |
| MESSAGE == dispatch | |||
| ruoso | yep, but it also plays the role of the metaclass | ||
| in the Perl 6 land | |||
| nothingmuch | that's an abstract object of it's own though | ||
| with it's own responder interface | |||
| ruoso | sure | ||
| which may be itself | |||
| I mean | 11:00 | ||
| some metaclass can be the responder interface for itself | |||
| nothingmuch | well, i don't see the difference, except that you renamed RI to metaclass ;-) | ||
| ruoso | heh | ||
| nothingmuch | oh, of course | ||
| but the instance slot is different | |||
| ruoso | in theory the metaclass is the RI and the Object Layout at the same time | ||
| nothingmuch | how is that possible? | 11:01 | |
| ruoso | it knows how the objects it handles are laid out | ||
| in the C level | |||
| nothingmuch | unless you are making prototype based derived metaclass instances | ||
| ruoso | it's kinda recursive, yes | ||
| nothingmuch | object layout should be encapsulated in a low level constructor method, there is no need for the VM opcode dispatcher guy to ever know anything about that | 11:02 | |
| (void *) | |||
| ruoso | nothingmuch, yes... that's why it's delegated to the metaclass | ||
| nothingmuch | errm, again, all of this is defined as the responder interface stuff =) | ||
| the metaclass is simply what is boiled down to the responder interface | |||
| it's an object that knows how to make responder interface objects | 11:03 | ||
| there are a few core responder interface types | |||
| that can be used to implement other, more arbitrary responder interfaces | |||
|
11:04
cnhackTNT left
|
|||
| nothingmuch | by telling your compiler what C code to generate for a specific RI you can, of course, extend these "core" types for performance | 11:04 | |
| but a metaclass object should have nothing to do with runtime (except for reflection) | |||
| unless it just so happens to be conveinent, but that's on a case-by-case implementation detail | |||
| ruoso | hmmm | ||
| nothingmuch | i don't see the practical benefit of joining these two types | ||
| ruoso trying to parse that | |||
| nothingmuch | a little more exemplifying: | 11:05 | |
| a core responder interface is the flat, by name method table | |||
| there are C functions for a hash or a trie or something | |||
| that maintain pointers to the code objects of the class this is implementing | |||
| ruoso | ok... | ||
| nothingmuch | the dispatch method (also written in C) will search by name, and then open a new stack frame and goto the code object | 11:06 | |
| I'll use perl5 terms to illustrate for clarity | |||
| ruoso | that's what I plan to do for the native types | ||
| for instance | |||
| nothingmuch | so basically it's a table of CVs indexed by name | ||
| and the responder interface table has a pointer to the C function ri_named_method_table_dispatch ( SV* invocant, SV* invocation ); | |||
| that returns the thunk object | 11:07 | ||
| which the interpreter can evaluate | |||
| ruoso | yes, that's what I'm doing for the native and lowlevel types | ||
| nothingmuch | anyway, in the event that you want to implement a custom responder interface | ||
| then that responder interface is an object | |||
| whose responder interface is this low level type | |||
| ruoso | yes... ok... so my metaclass is the RI | 11:08 | |
| nothingmuch | (Fwiw there can be a number of low level RIs, like indexed vtables which don't use strings at all, or ones that use a more dynamic structure, for example) | ||
| the metaclass is a highlevel object | |||
| that is instantiated by the compiler | |||
| ruoso | I mean, the metaclass in yap6_base.h | ||
| nothingmuch | the syntax of the class is converted into method calls on this metaclass | ||
| and when it's time to dump everthing to disk the metaclass creates any number of responder interfaces, and saves them in the current compilation unit, | 11:09 | ||
| ruoso | what I did was that the responder interface type is *also* a high-level object | ||
| nothingmuch | the compiler will dumb down the known "core" responder interfaces | ||
| yes, of course it is =) | |||
| that is, if the metaclass created a MethodTable->new( methods => { %methods } ) responder interfaces | |||
| the compler will know how to take apart the abstract responder interface | |||
| and dumb it down into it's low level C counterpart | |||
| that's how the bootstrapping was designed to happen in MO | 11:10 | ||
| there is a registry of known responder interfaces | |||
| and routines to dumb them do | |||
| wn | |||
| that are intimately involved with the VM | |||
| ruoso | well... in fact... | ||
| YAP6 metaclass *is* MO responder interface | |||
| nothingmuch | but responder interface from perl 6's pov are impelmentation independant, they are jsut datatype conventions | ||
| OK, so that's what I thought =) | |||
| ruoso | :) | ||
| ok... but now looking to the Perl 6 level | 11:11 | ||
| $obj.^methods() is a call to the responder interface, right? | |||
| nothingmuch | right, so from the perl 6 level, the compiler also knows how to proxy methods back into perl space | ||
| the mapping from the abstract MethodTable object to the low level C object is bidi | |||
| (prolly the core types are readonly to simplify this, and the original object is just cached as well) | 11:12 | ||
| ruoso | exactly... the Stack type for instance (yap6_stack.h) defines itself as closed and final | ||
| so it can have a custom RI that handles it in the C level | |||
| nothingmuch | right | 11:13 | |
| it appears to me like you have it nailed | |||
| ruoso | :) good to hear that from you ;) | ||
| nothingmuch | the whole poitn of MO was that language support entails implementing a very simple set of responder interfaces | ||
|
11:13
polettix left
|
|||
| nothingmuch | please make this easily addable to perl5 too ;-) | 11:13 | |
| ruoso | well.. I know that adding perl5 to this is easy | 11:14 | |
| the other way I'm not sure | |||
| nothingmuch | with all the optree rewriting we've been doing in moose land, if i can make a custom method dispatch delegate to this rI object in perl 5 maybe we can get "real" OO | ||
| what do you mean by the other way? | |||
| ruoso | I can get a SV YAP6 metaclass | ||
| but I'm not sure how I could get a YAP6 ri inside perl5 | |||
| nothingmuch | ah | 11:15 | |
| as long as Object can encapsulate an SV * | |||
| then that should be enough | |||
| lemme dig something up | |||
| use.perl.org/~jjore/journal/34643 | |||
| lambdabot | Title: Journal of jjore (6662) | ||
| nothingmuch | using josh's trickery you can replace the method call opcode's implementation for specific objects | 11:16 | |
| ruoso | cool | ||
| nothingmuch | and make it delegate to an RI instead of use perl's builtin mechanism | ||
| granted, we only get one type of Invocation object (by name, with a list of args) | |||
| but that's still pretty cool | |||
|
11:16
arxc_ left
|
|||
| nothingmuch | the opcode would call s^Hdispatch | 11:16 | |
| and the thunk type would be just a CV * | |||
| ruoso | That is *REALLY* cool | 11:17 | |
| nothingmuch | since we can assume things about the invocation | ||
| which means native MO for perl 5 | |||
| without having to use AUTOLOAD | |||
| for custom RIs | |||
| ruoso | and transparent integration between libyap6 and libperl5 | ||
| nothingmuch | *nod* | ||
| ruoso | in both ways | ||
| nothingmuch | bidi is just a matter of wrapping SV's in the perl5-native responder interface | ||
| which delegates back to the original method call code in perl | 11:18 | ||
| ruoso very happy to see the pieces getting together | |||
| nothingmuch | =) | ||
| so one nit: for clarity consider renaming MetaClass to ResponderInterface ;-) | 11:19 | ||
| ruoso | Ok... | 11:20 | |
| nothingmuch | oh | ||
| one more thing | |||
| in the core please make sure that you can cheat certain objects out of their box | |||
| that is, it should be trivial to autobox an INT type lazily | |||
| pointing to a global, shared responder interface | |||
| ruoso | This is something I'm trying to figure out | ||
| in yap6_native.h | 11:21 | ||
| nothingmuch | this requires static analysis | ||
| where you compile different variants | |||
| so that no type info has to be carried around anymore | |||
| ruoso | I'm considering having a "native" method in the responder interface (a high-level method, I mean) | ||
| nothingmuch | what do you mean? | ||
| ruoso | well... | 11:22 | |
| Perl 6 defines that native types are closed and final | |||
| and that their representation can't be changed | |||
| nothingmuch | yeah | ||
| ruoso | so, I can know that if it's a native int, I can use a low-level C structure that I defined for it | ||
| nothingmuch | exactly | 11:23 | |
| ruoso | but the thing is, | ||
| nothingmuch | this is much simpler than it sounds from what you have to do | ||
| ruoso | but | ||
| nothingmuch | it's the compiler writers problem | ||
| ruoso | Int means anything that does Int | ||
| nothingmuch | just make it easy to skip the Object type | ||
| you're forgetting that the compiler is allowed to cheat =) | |||
| when it knows that ref($x) eq Int, nto that $x->isa("Int"), then it can do that | 11:24 | ||
| ruoso | that's why I'm planning a "native" method that must return the YAP6 native type | ||
| nothingmuch | it has two RIs that pretend to be the same RI | ||
| ruoso | yes... sure... but that's optimization | ||
| nothingmuch | the compiler just has to make sure that instead of doing obj->responder_interface->dispatch( obj ) it does native_responder_interfaces[type]->dispatch( obj ); | ||
| err | 11:25 | ||
| ruoso | I mean | ||
| nothingmuch | instead of obj in the last one it should be low level int | ||
| ruoso | yes yes.. | ||
| if I can know, in the C level, that this object is handled by a known responder interface | 11:26 | ||
| I can cheat | |||
| but what I mean, is that the design must allow the responder interface to be something you don't know | |||
| that's why I'm saying it's optimization... | 11:27 | ||
| nothingmuch | erm, no, it's simpler =) | ||
| just make sure the C typing is such that you can push around void * | |||
| again, it's the compiler writer's problem to codegen the right code | |||
| ruoso | yes yes... | ||
| YAP6 design today is loosely typed | 11:28 | ||
| nothingmuch | for example, imagine the function sum { $^x + $^y } | ||
| that would codegen to an optree | |||
| with an inlined method call optree | |||
| that points to a function with an alt type | |||
| there is an easy way to reason about this not needing to be complicated | 11:29 | ||
|
11:29
Alias_ joined
|
|||
| nothingmuch | like, for example, if your Int type is infinite | 11:29 | |
| you can still codegen a naive, native int using version | |||
| do you know the psyco project? | |||
| ruoso | psyco? I don't think so | 11:30 | |
| nothingmuch | the basic idea is that you have mmd based type specialization | ||
| for clarity i'll use hs type notation | |||
| factorial :: Int -> Int -> Int | |||
| Factorial int -> Int -> Int | |||
| factorial int -> int -> Int | |||
| factorial Int -> int -> Int | |||
| factorial int -> int -> int | |||
| ad nauseum | |||
| the "root" factorial is a multimethod that jumps to these variations | |||
| which are compiled lazily based on the arguments | 11:31 | ||
| ruoso | ah yeah... sure... | ||
| nothingmuch | if the types in the call site are statically known at the time of the call | ||
| then the specialized version can be used instead | |||
| so Int -> Int -> Int is a slow, OO based version | |||
| wheras int -> int -> int is just the native C impl f a factoriaal function with the native int type | |||
| it will be used when the return value type cannot handle the overflow anyway | 11:32 | ||
| ruoso | considering every Perl 6 op is mmd | ||
| this is a mandatory design requirement | |||
| nothingmuch | any factorial function that returns an Int must check for overflows, too | ||
| ruoso | I'm already with my eye on it... | ||
| nothingmuch | and might eventually point to Int -> Int -> Int | ||
| ruoso | I still didn't actually plan how the mmd will work... | 11:33 | |
| but I think it fits in the RI | |||
| nothingmuch | anyway, it hink this is the best optimization approach for inlining/etc | ||
| that's TBD | |||
| the core RIs don't even need to support RI in yap6 | |||
| ruoso | TBD? | ||
| nothingmuch | to be decided | ||
| ruoso | ah | ||
| nothingmuch | MO's core inspiration was that new cool stuff was invented every week | ||
| if we design semantics for MMD | |||
| and in 5 years they turn out to be problematic | |||
| it's trivial to natively support a new type very cleanly | |||
| and 'use 6.1' will enable that by default, lexically | 11:34 | ||
| the Invocation and the ResponderInterface just have to agree amongst themselves | |||
| ditto for what I dubbed "concepts" in MO -- roles, class features, etc | 11:35 | ||
| did you look at how AGs were done? | |||
|
11:35
nipotan is now known as nipotaway
|
|||
| nothingmuch | there's no hack level at all, except for optimization's sake | 11:35 | |
| ruoso | for now, every responsability is let to the RI in YAP6 | ||
| I think MMD will be also RI responsability | 11:36 | ||
| nothingmuch | exactly =) | ||
|
11:36
nipotaway is now known as nipotan
|
|||
| ruoso | AG? | 11:36 | |
| nothingmuch | since the method call is a higher order object (or at least there's the possibility of that), you can extend | ||
| attribute grammars | |||
| ruoso | ah... | ||
| nothingmuch | nothingmuch.woobling.org/browse_cod...;f=/t/ag.t | ||
| lambdabot | Title: darcs - MO, tinyurl.com/225b69 | ||
|
11:37
pbuetow left
|
|||
| nothingmuch | this doesn't have to know anything about the runtime to Just Work, it's the other benefit of the two staged approach | 11:37 | |
| the same AttributeGrammar metaclass (or meta role or whatever) can be mixed in to your metaclasses | |||
| the same implementation that is | |||
| and it'll work regardless of the VM | 11:38 | ||
| if you're dilligent enough to support AGs natively in the VM it can be faster | |||
| but that is totally optional | |||
| ruoso parsing... | 11:39 | ||
| nothingmuch | bottom line: the less you define in the VM core (eg. libyap6) the more extensible it is | 11:40 | |
| that was the point i was trying to illustrate | |||
|
11:41
nipotan is now known as nipotaway
|
|||
| ruoso | well.. | 11:41 | |
| nothingmuch | MO::Run is all about finding the minimum usable prototype meta OO system thingy that is: | ||
| ruoso | besides the native types | ||
| nothingmuch | a. extensible | ||
| b. possibly fast | |||
| ruoso | everything is design by contract | ||
| and I don't even have declared C types for that | |||
| that will be implementation specific | |||
| and that's why I'm focusing in the public/*.h files | 11:42 | ||
| nothingmuch | *nod* | ||
| i think you have it in the right direction | |||
| ruoso | if you take a look in includes/yap6_stack.h | ||
| nothingmuch | just note that $responder_interface->dispatch doesn't actually dispatch | ||
| it returns a thunk object | |||
| that can be evaluated or not | |||
| this is important because it makes a generic ->can much easier to implement | 11:43 | ||
| in retrospect I should have made the thunk not close over the invocation, but instead get it as an argument | |||
| that would make it easier to do in C too | |||
| but it's a minor change | |||
| ruoso | I was thinking about that in the way to here today... | ||
| nothingmuch | one sec | ||
| let me svk up | |||
| ruoso | if there will be a $ri->call or a $ri->resolve->call | 11:44 | |
| nothingmuch | $ri->dispatch($object, $invocation)->($object, $invocation) # conceptually | ||
| it doesn't really matter how | |||
| ->call or whatever | |||
| in perl 5 terms, the method call operator will be kinda like $obj->can($method)->( $obj, @args) every single time | 11:45 | ||
| if the thunk type is low level and known (e.g. it's a simple pointer to a CV) then the runtime can easily do interesting things with it | 11:46 | ||
| without breaking responder interface encapsulation | |||
| ruoso | yehah.. | ||
| I think everything fits... | |||
| nothingmuch | if ( $thunk->is_static && $responder_interface->metaclass->is_clopsed_and_final_and_everything_is_fine ) { $self->inline_into_current_optree($thunk) } | ||
| ruoso | but please take a look at the include/*.h files | ||
| nothingmuch | svk up still running =) | 11:47 | |
|
11:47
pbuetow joined
|
|||
| ruoso | :) | 11:47 | |
| nothingmuch | i think that yap6 is a too perl 6 specific named for this, fwiw | ||
| this is really much more general then that | |||
| ruoso | nothingmuch, well.. there's the stack thing | 11:48 | |
| nothingmuch | reading right now | ||
| ruoso | that makes it more perl 6 specifc | ||
| nothingmuch | hmm | ||
| that's not mandatory though | |||
| it's just "a" stack, not "the" stack, right? | |||
| this is a library for building OO virtual machines more than anything IMHO | 11:49 | ||
| ruoso | yes, although the Stack prototype is closed and final | ||
| even if you can have several stacks | |||
| they all must be of the same type | 11:50 | ||
| nothingmuch | huhmm | ||
| interesting | |||
| ruoso | hmmm | ||
| wait | |||
| nothingmuch | well, you don't have to use this particular stack at all, if it doesn't work for you | ||
| ruoso | in fact, no, they don't | ||
| nothingmuch | that's all I'm saying ;-) | ||
| ruoso | The stack is already a high-level type | ||
| and as it's design by contract | 11:51 | ||
| nothingmuch | i like stack_eval's polymorphism | ||
| it's in effect a polymorphic run loop | |||
| you can plug in several virtual machines as long as they can eventually give back control at some point | |||
|
11:51
pbuetow left,
lyokato_ left
|
|||
| nothingmuch | and you can proxy values back and forth as long as the vms' respective object boxes are useful enough | 11:52 | |
| ruoso | hmm... I didn't think about interfacing the perl 5 stack directly | ||
| but it is possible | |||
| nothingmuch | (like, for instance, if they use yap6 ;-) | ||
| no, nto that far | |||
| i meant something less ambitious | |||
| just have a stack nodes with heteroegenous opcodes | |||
| though you could theoretically make the stack object a proxy that merges several other stacks or something | 11:53 | ||
| too many details involved in this though | |||
| to really know in advance | |||
| ruoso | it obviously depends on the embedding hability of the other vm | 11:54 | |
| nothingmuch | yeah | ||
| ruoso | but it's possible by yap6 side | ||
|
11:54
pbuetow joined
|
|||
| ruoso needs a coffee, in despair | 11:55 | ||
| nothingmuch is on the phone to | 11:57 | ||
|
12:00
pmurias joined
|
|||
| pmurias | ruoso: what do you mean by a generic metaclass? | 12:00 | |
| lambdabot | pmurias: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
|
12:02
njbartlett_ joined
12:03
jferrero joined
|
|||
| nothingmuch | ruoso: i have to work some | 12:07 | |
| it looks like a very good general direction | |||
|
12:07
pmurias left
|
|||
| nothingmuch | just recite a minimalism mantra in your head whenever you seem confused =) | 12:07 | |
|
12:07
pmurias joined
12:08
pmurias left,
pmurias joined
|
|||
| pmurias | @tell mncharity it should pararelise ok, you have to get used to mp6 (i.e. not make syntax errors as it's a slow compiler) and you can only bootstrap once you finish the backend | 12:12 | |
| lambdabot | Consider it noted. | ||
|
12:12
jisom left
12:14
IllvilJa joined
12:17
masak left,
riffraff joined
|
|||
| ruoso | nothingmuch, I need to compose a mantra then... I'm getting confused too often | 12:22 | |
| :) | |||
| nothingmuch | "less is more" =) | ||
| ruoso | heh | ||
| nothingmuch | in OO especially | ||
| the less you define the more polymorphism you get | |||
| of course, you might eventually end up with nothing if you go too far ;-) | |||
| ruoso | hehe | 12:23 | |
| moritz_ | .oO( my OO system is undef ) |
||
| ruoso | hehehehe | ||
|
12:24
masak joined
|
|||
| ruoso | pmurias, re generic metaclass: if a metaclass handles more than one class | 12:24 | |
| pmurias | i thought $foo.HOW() is distinct for each class | ||
| ruoso | well, it is in the spec, but what I was saying is that it is not a good idea | 12:25 | |
| although in the call you enforce the proper context | |||
| that's what $dog.^methods does | |||
| it calls methods in the metaclass, but enforces $dog as the invocant | |||
| as I was saying | |||
| $dog.^methods should be the same as $dog.HOW.methods($dog: ) | 12:26 | ||
| and not juts $dog.HOW.methods() | |||
| nothingmuch | .HOW can appear to be distinct even if it really isn't using a simple ref | ||
| i'm pretty sure that's the original intent | |||
| ruoso | yeah... but the problem | ||
| nothingmuch | "can be" != "always is" | ||
| ruoso | what can I do when I want to use the metaclass in its own context | ||
| nothingmuch | sometimes "always is" is really just "can be" with a little masquerading | 12:27 | |
| ruoso | instead of some object class context | ||
| nothingmuch | expl? | ||
|
12:27
meppuru joined
|
|||
| nothingmuch | wait, no | 12:27 | |
| don't explain | |||
| ruoso | for instance... | ||
| nothingmuch | i have to work ;-) | ||
| ruoso | ok | ||
| you can backlog later | |||
| nothingmuch | explain to pmurias ^_^ | ||
| ruoso | I'll post it here | ||
| nothingmuch has a very very busy next few days ahead of him | |||
| i doubt I will get to it | |||
| but I can check on the results | |||
| or /msg me if you have some conclusive link or reference | 12:28 | ||
| ruoso | everything is design by contract... so your metaclass may be something you know to do something more than the standard meta api | ||
| if the metaclass is an object in itself... | |||
| how do you call a method in the context of that object | |||
| ? | |||
| if $dog.HOW returns a proxy that keeps the reference to $dog, as to pass it as the invocant | 12:29 | ||
| pmurias | ruoso: in the context means? | ||
| ruoso: i don't suggest $dog.HOW returns a proxy | |||
| ruoso | suppose $dog.HOW retuns an object that I know to have another method | ||
| pmurias | $dog.HOW.another_method | ||
|
12:30
py77 joined
|
|||
| ruoso | ok, now... consider the metaclass can be generic | 12:30 | |
| how can you do my $a = $dog.HOW; $a.methods | 12:31 | ||
| if $a don't have a reference to $dog | |||
| $a.methods should be $a.methods($dog: ) | |||
| explicitly | |||
| to implement it in the way it is in the spec, | |||
| pmurias | ruoso: only if you have per object methods | ||
| ruoso | pmurias, per-prototype | 12:32 | |
| remember that $dog can be a prototype | |||
| pmurias | prototypes are undefined objects | ||
| ruoso | or class, if you name it that way | ||
| no... a class is a prototype object | |||
| pmurias | ruoso: i view it diffrently | ||
| ruoso getting the piece of spec that states it | 12:33 | ||
| take the beggining of the "class" section in s12 | 12:35 | ||
| pmurias | ruoso: use line numbers please | 12:36 | |
| ruoso | it's the first section | ||
| I'm seeing it in the browser | |||
| no line numbers (at least in my browser) | |||
| the thing is, | 12:37 | ||
| even if some mop uses a metaclass per class | |||
| this doesn't means that every mop should do it | |||
| pmurias | the standard one uses a metaobject per class | 12:38 | |
| ruoso | 'A "class" object is just considered an "empty" instance in Perl 6, more properly called a "prototype" object, or just "protoobject"."' | ||
| pmurias | The actual class object is the metaclass object pointed to by the | 12:39 | |
| C<HOW> syntax. | |||
| ;) | |||
| ruoso | in a class-based mop | ||
| but prototype-based mop is also supported | 12:40 | ||
| pmurias | than there is a diffrent HOW per object | ||
| * different | 12:41 | ||
| pmurias always spell diffrent differently ;) | |||
|
12:42
jferrero left
12:44
ebassi is now known as ebassi|lunch
|
|||
| ruoso | pmurias, "(For a prototype system (a non-class-based object system), all objects are merely managed by the same meta object.)" in s02 | 12:49 | |
| in the definition of the HOW function | 12:50 | ||
|
12:51
cmarcelo joined
|
|||
| pmurias | ruoso: the metaclass should take object as a parameter than | 12:55 | |
| * metaobject | |||
| why do you call the metaobject the metaclass | 12:58 | ||
| ? | |||
| ruoso | I don't know... bad habits ;) | 12:59 | |
| I argue that the object (or prototype) is the invocant for the metacalls | |||
| as $dog.^methods() is the same as $dog.HOW.methods($dog: ) | 13:00 | ||
|
13:00
thoughtpolice joined
|
|||
| pmurias | you need to invocants then | 13:00 | |
| s/to/2/ | |||
| ruoso | pmurias, not exactly | ||
| what I have is a two phase dispatch | |||
| I get the method from the $dog.HOW object, | |||
| and execute it passing $dog as the invocant | |||
| pmurias | it's curring | 13:01 | |
| ruoso | the thing is that all methods are already dispatched by the metaclass | ||
| the metaclass doesn't need to be in the arguments | 13:02 | ||
| pmurias | * metaobject | ||
| ruoso | heh... yeah... metaobjecgt | ||
| $dog.HOW.methods is really $dog.HOW.can("methods").call($dog: ) | 13:03 | ||
| while $dog.^methods is simpler... | |||
| if I keep it that way, I can call things in the metaobject without the object's context | 13:04 | ||
| like... | |||
| my $a = $dog.HOW(); $a.foo; places $a as the invocant to foo | |||
| and $a.methods() would probably return the same as $a.^methods() | 13:05 | ||
| pmurias | there are also bootstraped metaobjects | 13:06 | |
| got to work& | |||
|
13:06
pmurias left
|
|||
| ruoso | lunch& | 13:06 | |
|
13:09
polettix joined
13:27
ispy_ joined,
Patterner left
13:28
chruck left
13:35
Psyche^ joined,
Psyche^ is now known as Patterner
13:36
polettix left
13:47
thoughtpolice left
13:51
drrho left
13:54
njbartlett_ left
13:55
drrho joined
14:06
ebassi|lunch is now known as ebassi
14:18
iblechbot joined
14:20
braceta joined
14:21
braceta left
14:22
braceta joined,
pbuetow left,
pbuetow joined
14:32
jhorwitz joined
14:37
masak left,
masak joined
14:46
alc joined
15:09
ircuser joined
|
|||
| ircuser | Hi all, is there some perl6 book available? | 15:10 | |
| Alias_ | A couple, they might be out of date a bit though | ||
| moritz_ | Perl6 and Parrot Essentials was open-sourced the other day | ||
| ircuser | Because the syntax change too much? | ||
| moritz_ | not only syntax ;) | 15:11 | |
| well, depends on what you call "syntax", actually | |||
| ircuser: what do you want that book for? Perl 6 design philosphy? or learning Perl 6? | |||
|
15:11
lorn joined
|
|||
| ircuser | moritz_ good question the 2th | 15:12 | |
|
15:12
njbartlett_ joined
|
|||
| ircuser | but if perl6 need to be changed a lot i will wait for a "final book" | 15:12 | |
| ruoso | HAH! Now I had an important breakthrough | ||
| the problem I facing is that what I've been calling metaclass (which is actually the responder interface), | 15:13 | ||
| is not the metaobject and not the prototype | |||
| there's one of that methods missing, we need a WHO | |||
| which returns the responder interface | |||
| moritz_ | ircuser: even p5 doesn't have a "final book" | ||
| ruoso | and the responder interface is an object that is a C structure that is always binary compatible with a fundamental type | 15:14 | |
| That way I don't even need to have a prototype lowlovel structure | 15:15 | ||
| the lowlevel C structure always have HOW member in the top of the struct | 15:16 | ||
| ircuser | moritz_ anyway i think we can use perl5 with the perl6 interpreter | 15:17 | |
| moritz_ | it's in the specs, yes | 15:18 | |
|
15:19
chris2 joined
|
|||
| ruoso | I think I agree with nothingmuch that yap6 is not a Perl 6 runtime, but a generic OO runtime. | 15:24 | |
| I think I'll rename it | |||
| I thought on the name OZOO | |||
| nothingmuch | VROOM!!!!!!!! | ||
| ruoso | which stands for Object Zoo, or Oz Object Orientation | ||
| nothingmuch | ViRtual Object Oriented Machine | 15:25 | |
| ;-) | |||
| ruoso | heh | ||
| btw... take a look in what I've just said before | |||
| nothingmuch | not right now... in an hour or so i might have some time | ||
| ruoso | ok | ||
| VROOM++ | 15:26 | ||
| pugs_svn | r19402 | ruoso++ | [yap6] last commit before rename | 15:27 | |
|
15:27
rdice joined
15:29
TJCRI joined
|
|||
| pugs_svn | r19403 | ruoso++ | [vroom] VROOM is the new name of YAP6 after realizing that it is not Perl 6 specific | 15:29 | |
|
15:30
ircuser left
|
|||
| moritz_ | should I rename some constructs from yap6 to vroom? | 15:32 | |
| ruoso | moritz_, I'm starting doing that, | ||
| if you want to take some files to hepl | |||
| please... | |||
| but wait | |||
| moritz_ pokes const.c | |||
| ruoso | moritz_, they are already not working | 15:33 | |
| so they are not that important | |||
| because the structures were already different on them | |||
| but you can express it in terms of VROOM__Object* already | 15:34 | ||
| instead of YAP6__CORE__Value* | |||
| pugs_svn | r19404 | ruoso++ | [vroom] renamed include/*.h files | ||
| ruoso changing vroom_base.h | 15:35 | ||
| pugs_svn | r19405 | moritz++ | [vroom] src/: changed some file names, s/yap6/vroom/g | 15:37 | |
|
15:44
TJCRI left,
TJCRI joined
|
|||
| pugs_svn | r19406 | ruoso++ | [vroom] include/vroom_base.h rewritten | 15:50 | |
| ruoso taking vroom_stack.h | |||
| moritz_ | In file included from const.c:3: | 15:53 | |
| ../include/vroom.h:4:24: error: vroom_base.h: No such file or directory | |||
| but there is a ./include/vroom_base.h | 15:54 | ||
| wtf? | |||
|
15:55
masak left
|
|||
| ruoso | moritz_, at this point, I don't expect anything to work... | 15:57 | |
| the C code is now based on yap6 before this revamping I'm doing | |||
| moritz_ | ruoso: neither do I, but I just don't understand why the include file isn't found | ||
| pugs_svn | r19407 | ruoso++ | [vroom] include/vroom_stack.h rewritten | 16:00 | |
| ruoso taking vroom_native.h | |||
| moritz_ yawns | |||
| ETOLITTLEO2 | |||
| pugs_svn | r19408 | ruoso++ | [vroom] include/vroom_native.h rewritten | 16:04 | |
| ruoso taking vroom_builtin.h | |||
|
16:05
TJCRI left
|
|||
| pugs_svn | r19409 | ruoso++ | [vroom] include/vroom_builtin.h rewritten | 16:05 | |
|
16:08
dmas1 joined
16:09
rdice left,
lichtkind joined
|
|||
| pugs_svn | r19410 | ruoso++ | [vroom] some other renamings... | 16:12 | |
| r19411 | ruoso++ | [yap6] cleaning up yap6 dir, leaving a goodbye note. | 16:16 | ||
|
16:18
drrho left
|
|||
| pugs_svn | r19412 | ruoso++ | [vroom] VROOM_DISPATCH must receive a responder interface | 16:18 | |
|
16:19
cognominal_ joined
16:20
arxc joined
16:22
drrho joined
16:27
zamolxes left
16:28
Psyche^ joined
16:41
Patterner left,
Psyche^ is now known as Patterner
|
|||
| moritz_ | ruoso: should vroom compile again? | 16:45 | |
|
16:52
pmurias joined
|
|||
| pmurias | ruoso: WHO is already taken, not all implementations will use a responder interface (i suppose perl5v6 will use a perl5 class serving as a method cache) | 16:54 | |
|
16:57
jhorwitz_ joined,
jhorwitz left
16:58
jhorwitz_ is now known as jhorwitz
17:04
asprillia left
17:06
manfred joined
17:09
rdice joined
17:14
meppuru left
17:19
barney joined
17:23
aindilis left,
aindilis joined
|
|||
| ruoso | pmurias, ops... I overlooked that... | 17:30 | |
| i need another name | |||
| moritz_, not yet... I need to port the code from YAP6__CORE__Value to VROOM__Object | 17:33 | ||
| but it should be very simple | |||
| moritz_, porting that is, actually, the first item in the ROADMAP | 17:36 | ||
| pugs_svn | r19413 | ruoso++ | [vroom] WHO was already taken, my bad overlooking that, pmurias++ for noticing. The Responder Interface is get with YAP6_RI instead, and the member is called RI | ||
| ruoso | oops... | ||
| s/YAP6_RI/VROOM_RI/ | |||
| pugs_svn | r19414 | ruoso++ | [vroom] one other s/yap6/vroom/ | 17:39 | |
| ruoso | named arguments are optional by default, right? | 17:44 | |
| moritz_ | I don't think so | 17:45 | |
| only when they have a default value | |||
| [particle] | named are optional by default in perl 6 | 17:46 | |
| unnamed are required by default | |||
| ruoso | yep, i found it.... needs a sufix ! to make them required... | ||
| [particle] | yep | ||
| moritz_ rereads the spec | |||
| [particle] | ruoso: wanna see arg processing in nqp? | ||
| ...or perl6 for that matter? it's a short routine to determine optional/named/slurpy/required | 17:47 | ||
| ruoso | is it implemented already? | ||
| ruoso wondre | 17:48 | ||
| ruoso wonders if that looks like a Signature ~~ Capture | |||
| TimToady | www.vroomsite.com/ | 17:50 | |
| lambdabot | Title: Vroom® -The Web System for Business™ - Home | ||
| ruoso | TimToady, vroomcode.org seems free ;) | 17:51 | |
| TimToady | I'm more worried about a trademark suit. | 17:53 | |
| ruoso | well, we may argue that it's an reference to www.perlmonks.org/?node=vroom | 17:55 | |
| lambdabot | Title: vroom | ||
| ruoso | ;) | ||
|
17:56
drrho left
17:58
aindilis left,
alc left
|
|||
| ruoso | TimToady, btw... in the end I found my way out of the HOW/WHAT confusion... nothingmuch made me realise that what I was calling metaclass was really the responder interface... and not the prototype or metaobject... | 18:00 | |
| so HOW and WHAT can do whatever decided in the RI implementation | 18:01 | ||
| nothingmuch | it's supposed to be VROOM!!!!!!! not Vroom | ||
| ruoso | re suit: and I can always blame nothingmuch ;) | ||
| nothingmuch | aah no i have enough bureaucracy to deal with as it is, thank you very much | 18:02 | |
| TimToady | if gaal were here he'd suggest ESOOM | ||
| ruoso | I thought about OZOO | 18:03 | |
|
18:03
manfred left
|
|||
| ruoso | Object ZOO | 18:03 | |
| or Oz Object Orientation | |||
| heh | |||
| TimToady | ZOOF sound like something going by fast | ||
| nothingmuch | libozoo has no hits on google | ||
| neither does libzoof | |||
| allbery_b | zoof sounds to me lik someone got punched in the stomach | ||
| ruoso | hehe | ||
| [particle] | OZONE - developed by free software radicals | 18:04 | |
| moritz_ | rofl | ||
| [particle]++ | |||
| TimToady | You are entering... the O Zone... | ||
| ruoso | hehe | ||
| OZONE++ | |||
| [particle], ++ | |||
| TimToady | WHOOPS | ||
| ruoso | oops... bad completion | ||
| TimToady | SHROOM | 18:05 | |
| CROON | |||
| SPOON | |||
| [particle] | swoon? | ||
| allbery_b | gubru? "zooooon..." | 18:06 | |
| TimToady | JOOS pronounced "juice" | ||
| ruoso | SOOM -> Stacked OO machine | 18:07 | |
| YAA -> Yet Another Animal | |||
| TimToady | barsoom | ||
| [particle] | gezundheit | 18:08 | |
|
18:08
Auzon joined
|
|||
| moritz_ | ;) | 18:08 | |
| s/z/s/ though | |||
| TimToady | barzoom | ||
| [particle] | we americans put 'z' everywhere you don't expect it :) | ||
| moritz_ | I noticed, yes | ||
| allbery_b | zomg! | 18:09 | |
| TimToady | TROO STROO THROO etc | ||
| [particle] | I HAD A OO BUT I EATED IT | 18:10 | |
| TimToady | name it LOL and confuse #parrot | ||
| ruoso | hehe | ||
| [particle] | SHOOHORN | ||
| moritz_ | but lolcode.org is already taken | 18:11 | |
| ruoso | EOO | ||
| Empty Object Orientation | |||
| [particle] | COOL | ||
| ruoso | Cool Object Orientation Library ? | ||
| [particle] | self-naming | ||
| moritz_ | VOOT (Virtual OO Transmogrifier) | 18:12 | |
| TimToady | KOOL is a possibility, if you don't mind the tobacco association | ||
| doesn't seem to be any computery interference | 18:13 | ||
| at least, not on wikipedia | |||
| [particle] | DROOL # plays well with Moose | ||
| TimToady | MOOSTANG | ||
| Auzon | TROOL | 18:14 | |
| pbuetow | for what are you looking a name for? | ||
| ruoso | TROOL++ | ||
| Auzon | Apparently with "OO" | ||
| TimToady | yap6 | ||
| moritz_ | for VROOM, formerly yap6 | ||
| TimToady | KROOD | ||
| pbuetow | hm ok | ||
| Auzon | TRue Object Orientated Language? | ||
| TimToady | DOODZ | ||
| Auzon | Or maybe TOOL | 18:15 | |
| TimToady | TOOTSY | ||
| ruoso | DOS -> Damaged Object System | ||
| TimToady | got ROOT? | 18:16 | |
| ruoso | root would be cool | ||
| moritz_ | but that's too hard to search for | ||
| Results 1 - 10 of about 166,000,000 for root | 18:17 | ||
| TimToady | skoot | ||
| Auzon | I like skoot | ||
|
18:18
pstuifzand joined
|
|||
| ruoso | PMOS -> Post-Modern Object System | 18:18 | |
| moritz_ | PMOS++ | ||
| allbery_b | that sounds like something the folks downstairs from me (chip designers) would be playing with | 18:19 | |
| ruoso | PMORE -> PostModern Object Runtime Environment | ||
|
18:19
Auzon left
18:20
Auzon joined
|
|||
| Auzon | oops. wrong window. | 18:20 | |
| [particle] | MIPE: Modularity, Inheritance, Polymorphism, Encapsulation | ||
| TimToady | pmoose | ||
| [particle] | poogs | 18:21 | |
| ruoso | poogs++ | ||
| hehehe | |||
| Auzon | Muskox | ||
| lichtkind | TimToady: thanks for the answer | ||
| TimToady++ | |||
| ruoso | postmodern moose? | 18:22 | |
| lichtkind | TimToady: max is also list infix ? | ||
| ruoso | from all the options, I like most: OZONE, COOL, KOOL, and SPOON | 18:25 | |
| Auzon | All common words, but not in combination with Perl. That's good. | 18:26 | |
| ruoso | ozone is already taken | ||
| spoon also, by a cpan module | 18:27 | ||
| cool don't identify much | 18:28 | ||
| kool is a cigarret brand | 18:29 | ||
|
18:29
ebassi left
|
|||
| ruoso | LisMOS <- "Less is More" Object System | 18:36 | |
| moritz_ | not bad | ||
|
18:45
DarkWolf84 joined
|
|||
| ruoso | MEEOW - MEta Object Orientation System | 18:47 | |
| moritz_ | where's the W? | 18:48 | |
| ruoso | the cat ate | ||
| Auzon | Where's the second E? | ||
| [particle] | it doesn't *have* to be an acronym | ||
| Auzon | :P | ||
| ruoso | ok... let's find an acronym for MEEOW | 18:49 | |
| (having two E's make it easier to search for | |||
| [particle] | ooh! WOOF | 18:50 | |
| work-in-progress oo frobulator | 18:51 | ||
| ROOBY | 18:53 | ||
| Auzon | hahah | ||
| I dunno, some people may not like that | 18:54 | ||
| [particle] | NOOBIE | ||
| TimToady | lichtkind: max is just scalar infix | 18:55 | |
| btw, I don't the the multiple dispatch RI belongs in any of the argument objects | |||
| it probably goes in the proto sub | 18:56 | ||
|
18:56
TechSkilled joined
|
|||
| TimToady | pugs went as far as to generate one if you didn't supply one | 18:56 | |
| ruoso | NOOL | ||
| TimToady | s/the the/think the/ | ||
| lichtkind | TimToady: so you write @array.max instead of [max] @array? | ||
| TimToady | whether there's a method on @array is independent of whether there's an operator | 18:57 | |
| but using infix we can say $biggest max= $current | |||
| admittedly that's side effectful | 18:58 | ||
| but we also get [max] @array | |||
| I don't see any problem with also having @array.max | |||
| so you could even write "max @array:" | 18:59 | ||
| tmtowtdi | |||
| lichtkind | thanks | 19:00 | |
| Auzon | ++ | ||
| TimToady | smop | 19:02 | |
| though that's also been suggested as a name for parrot's perl6 impl | 19:03 | ||
| [particle] | LOON | ||
| moritz_ | what happened to the name "Onion"? | ||
| ruoso | SMOP++ | ||
| en.wikipedia.org/wiki/Small_matter_...rogramming | |||
| the description fits perfectly | |||
| Auzon | Indeed. SMOP++ | 19:04 | |
| @karma SMOP | |||
| lambdabot | SMOP has a karma of 2 | ||
| Auzon | Heheh | ||
| [particle] | karma SMOP++ | ||
| @karma SMOP++ | |||
| lambdabot | SMOP++ has a karma of 0 | ||
| Auzon | :O | ||
| [particle] | heh | 19:05 | |
| Auzon | Oh | ||
| I getit | |||
| TimToady | Simple Meta Object Programming | ||
| ruoso | Simplistic ... | 19:06 | |
| TimToady | Super ... | ||
| ruoso | but Small Matter Of Programming is also just fine | ||
| moritz_ | small... | ||
| TimToady | is there an S word for extenSible? | ||
| araujo | Sensible | ||
| :-P | |||
| TimToady | Smart | ||
| Auzon | Supported? | ||
| ruoso | inSane | 19:07 | |
| Auzon | Sufficient? | ||
| moritz_ | superior! | ||
| araujo | Sensible Meta Object Programming | ||
|
19:07
drrho joined
|
|||
| araujo | :-P | 19:07 | |
| TimToady | SMOP Meta Object Programming | 19:08 | |
| araujo | :-D | ||
| ruoso | Ok... no more arguments... SMOP Rules | 19:09 | |
| pugs_svn | r19415 | ruoso++ | [vroom] documenting the node methods... btw... this is the last commit as vroom | 19:10 | |
| r19416 | ruoso++ | [smop] hey... vroom is now smop | 19:11 | ||
| r19417 | ruoso++ | [yap6] updating yap6 goodbye note. | 19:12 | ||
| TimToady | there's a smop.org, but it doesn't appear to be the name of computer code | ||
| ruoso | yeah.. seems like an outdated blog | 19:13 | |
| one thing I miss in regex is a feature of emacs search and replace... | 19:14 | ||
| s/vroom/smop/g | |||
| but keep the original case | |||
| pugs_svn | r19418 | ruoso++ | [smop] renaming include/* files. | 19:16 | |
| avar | ruoso: miss in what? | 19:18 | |
| pugs_svn | r19419 | ruoso++ | [smop] s/vroom/smop/g(emacs ignore-but-keep-case-feature) | 19:19 | |
| ruoso | consider you have "SMOP Smop smop" and you want to substitute by "BLOP Blop blop" | ||
| if you just do s/smop/blop/gi | |||
| you'll end with "blop blop blop" | |||
| emacs search and replace is smart enough to keep the original case | 19:20 | ||
| moritz_ | cool | ||
|
19:21
Southen joined
|
|||
| pugs_svn | r19420 | ruoso++ | perl -pi -e '[smop/src] s/VROOM/SMOP/g' *.c *.h ; perl -pi -e 's/vroom/smop/g' *.c *.h; | 19:23 | |
| avar | FOO Foo FoO foo will also be BAR Bar Bar bar | 19:26 | |
| emacs++ | |||
| ruoso | TimToady, do we still have a slot for a regex modifier? | 19:27 | |
| :) | |||
| moritz_ | in p5 or p6? | ||
| ruoso | in p6... | 19:28 | |
| moritz_ | :smartcase | ||
| pasteling | "avar" at 208.78.101.240 pasted "emacss replace-match" (454 lines, 12.4K) at sial.org/pbot/29749 | 19:29 | |
|
19:29
drrho left
|
|||
| avar | it's called fixedcase in emacs | 19:29 | |
| ruoso | :fixedcase makes sense | 19:30 | |
| avar | (also C-h f replace-match RET | 19:31 | |
| TimToady | might want to be something more like {lc ...} | 19:34 | |
| s:i/foo/{.samecase bar}/ | 19:35 | ||
| but if you have to have :i anyway... | |||
| ruoso | sure | ||
| TimToady | maybe s:same/foo/bar/ is just shorthand for that | 19:36 | |
| or whatever the switch turns out to be | |||
| [particle] | :sc # samecase | 19:37 | |
| TimToady | unfortunately :s is taken | ||
| Auzon | :c ? | ||
| moritz_ | is taken as well | 19:38 | |
| TimToady | also taken | ||
| ruoso | :f? | ||
| Auzon | What would that stand for? | ||
| ruoso | fixed case | ||
| as emacs calls | |||
| Auzon | ah..., fixed | ||
|
19:39
TechSkilled left
|
|||
| TimToady | or maybe :ii | 19:39 | |
| moritz_ | like :uglii | ||
| ruoso | hehehe | ||
| TimToady | :i2 | 19:40 | |
| ruoso | ii is funny because it looks like ignore the case in the both sides | 19:41 | |
|
19:41
Southen_ left
|
|||
| TimToady | which, in a sense, it does | 19:41 | |
| ruoso | yeah... | ||
| TimToady | I'll go with :ii for now | ||
|
19:42
jisom joined
|
|||
| [particle] | aye aye | 19:42 | |
| TimToady | I wonder if there's something equivalent for :bb (basechar) | ||
| Auzon | @karma lambdabot | ||
| lambdabot | lambdabot has a karma of 53 | ||
| ruoso | hmmm | 19:43 | |
| maybe | |||
| TimToady | s:bb/a/o/ changes ä to ö | ||
| ruoso | s:bb/a/e/ would turn "á" into "é" | ||
| TimToady | it's a little dicier if the two strings are of unequal length | 19:44 | |
| wolverian | I hope that only happens in locales where it makes sense :) | ||
| ruoso | well, the longest dictates the case | ||
| unicode isn't locale dependant, is it? | 19:45 | ||
| TimToady | probably just limit it to same character position | ||
| not unless you say "use Locale" or some such | |||
| otherwise graphemes are considered language indepenent | 19:46 | ||
| Auzon | Is everything Unicode in Perl 6? | ||
| ruoso | Auzon, yep | ||
| wolverian | TimToady, ah, thanks. | ||
| Auzon | great :) | ||
| TimToady | well, you can have other types if you like | ||
| but string types are distinguished from buffer types, and the string types are all unicode | |||
| wolverian | I'm having a hard time imagining where s:bb/a/o/ would make sense in an locale-independent way, _or_ locale-dependent! | ||
| TimToady | the standard string types, that is | ||
| well, it's just an interesting thought, doesn't have a huge use case | 19:47 | ||
| no pun intended | |||
| wolverian | heh. true enough | ||
| TimToady | just noticed :basechar right under :ignorecase is all | ||
| and realized they were similar | |||
| wolverian | I wouldn't have noticed it | 19:48 | |
| so, please keep noticing and ignore me | |||
| pugs_svn | r19421 | ruoso++ | [smop] A small note on a important stack design issue: The node pushed is never evaluated by the interpreter loop, it should be used to pass information to the new frame. | ||
| avar | 1/w 26 | 19:54 | |
|
19:58
arxc left
20:00
arxc joined
|
|||
| pugs_svn | r19422 | pmurias++ | points to the right directory | 20:02 | |
| moritz_ | TimToady++ # r14484 | 20:03 | |
| TimToady | ruoso++ | ||
| moritz_ | TimToady: what happens if a titlecase letter is substituted by a letter that doesn't have a titlecase equivalent? | ||
| is it mapped to upper case? | |||
| TimToady | good Q | 20:04 | |
| hang on | |||
| I guess the question I have is whether you want to substitute titlecase into the middle of a camelcase identifier | 20:05 | ||
| moritz_ | that's not my question | 20:06 | |
| I think the greek letter sigma has three cases: upper case, lower case and title case | |||
| TimToady | I'm assuming that if there is a direct mapping, it works | ||
| uh, no, you're confusing the ending sigma, which is different | |||
| moritz_ | ok | ||
| TimToady | I think if there is a titlecase to titlecase mapping, or upper to upper, that is automatically used. | 20:07 | |
|
20:07
pmurias left
|
|||
| TimToady | there are no titlecase without a corresponding upper | 20:08 | |
| (I don't think) | |||
| so all that remains is if there is no corresponding titlecase, it goes to upper | |||
| on the other hand, arguably it should choose titlecase or uppercase depending on whether there's a letter to the left of it in the result | 20:09 | ||
| but camelcase might be wrong then | |||
| if you're substituting in the middle of a longer identifier | 20:10 | ||
| I don't think there's a right answer | |||
| moritz_ | my $s = "ABc" ~~ s:bb/.../ßbc/; # is that SSBc? or SSbc? | ||
| TimToady | or rather, the right answer changes depending on whether you're doing computer programming or natural language processing | ||
| moritz_ | I think it should be SSBc | 20:11 | |
| I don't think the problem shows up unless you process natural language | 20:12 | ||
| TimToady | my brane hurtz | ||
|
20:12
chris2 left
|
|||
| TimToady | if you're doing NLP then you've probably said "use Deutsch" | 20:12 | |
| moritz_ | ;) | ||
| TimToady | on the other hand, I don't think many other languages *care* what happens to ß :) | 20:13 | |
| moritz_ | aye | ||
| TimToady | so it's language independent in that sense | ||
| moritz_ | are there other chars that produce multiple graphemes when lc'ing or uc'ing? | 20:14 | |
| TimToady | dunno, could be | ||
| lichtkind | TimToady: does $a=(1,2,(a,b)); and @a=(1,2,(a,b)); the same? (array ref to an flat array?) | 20:15 | |
| use Deutsch;++ | |||
| DarkWolf84 | r there refs in p6 | ||
| ? | |||
| moritz_ | perhaps use lang::Deutsch; | 20:16 | |
| lichtkind | of course | ||
| moritz_ | DarkWolf84: there are captures | ||
| lichtkind | they are spelled captures | ||
| DarkWolf84 | lake in grammar? | ||
| lichtkind | like a signature | ||
| TimToady | the @a= case puts the right side into list context, and parens are ignored in list context, so you get @a=1,2,a,b | ||
| the $a= puts the right side into scalar context, but the commas make their own list context (I suspect), so you end up with $a = [1,2,a,b] | 20:17 | ||
|
20:17
jisom left
|
|||
| TimToady | note that $a=\(1,2,(a,b)) is a different matter, since those commas are in capture context | 20:19 | |
| are are the commas in foo(1,2,(a,b)) | |||
| in capture context the list/scalar distinction is lazy until binding time | 20:20 | ||
|
20:20
lorn left
|
|||
| lichtkind | makes sense | 20:21 | |
| thank you vary much | |||
| very :) | |||
|
20:24
buubot left
20:25
buubot joined
|
|||
| spinclad | in finnish, 'ö' ~~ s:bb/o/u/ should arguably give 'y', since 'y' is their 'ü' | 20:28 | |
| moritz_ | outch | 20:29 | |
| all those language dependent cases are going to hurt | |||
| spinclad | but even in finnish, unicode has a 'ü'... | 20:30 | |
| er... | 20:31 | ||
|
20:33
silug joined,
thoughtpolice joined
|
|||
| spinclad | all right, now i want an umlautable metalinguistic 'V', so i could say 'ieaou' ~~ s:g:bb/V/V\"/ => 'ieäöu' | 20:39 | |
| moritz_ | so \" is COMBINING DIARESIS? | 20:40 | |
|
20:40
stephang joined
|
|||
| spinclad | *'ieäöy', dammit! | 20:40 | |
| moritz_: that's what i mean, even if i can't say it. | 20:41 | ||
| \"V, even, TeXwise. | |||
| lichtkind | ju ich hab 20% | 20:44 | |
|
20:47
TJCRI joined
|
|||
| moritz_ | lichtkind: wrong channel ;) | 20:51 | |
| lichtkind | moritz_: stimmt | 20:52 | |
|
20:57
ispy_ left
21:06
Aankhen`` left
|
|||
| TimToady | why not just <V> | 21:09 | |
| spinclad | sure. how do i do \"<V> on the rhs? | 21:10 | |
| s/<V>/\"($<V>)/ | 21:12 | ||
| TimToady | $<V>\x[0308]/ presumably | ||
| spinclad | overfix:<"> | ||
| superfix, rather | 21:13 | ||
| +front($<V>) | 21:14 | ||
|
21:14
braceta left
|
|||
| TimToady | or s/<V>/$<V>\c[COMBINING DIAERESIS]/ | 21:14 | |
| assuming the right side is smart about recombining graphemes when it needs to | 21:15 | ||
| otherwise might need a codepoint declaration around it | 21:16 | ||
| spinclad | i guess if i used the actual character in /$<V>\c[...]/, it would try to the '>', which would be Bad. | 21:18 | |
| TimToady | indeed | 21:19 | |
| spinclad | *try to apply to | ||
| TimToady | metacharacters have to good for something... :) | ||
| s/to/to be/ | 21:20 | ||
|
21:20
zamolxes joined
21:22
JarJarBinks left
|
|||
| spinclad | (otoh, that would give 'ïëäöü', which is completely unfinnish, but then i shouldn't be trying to solve that at a unicode level.) | 21:25 | |
|
21:29
rdice left
21:32
barney left
21:40
pstuifzand left
21:47
jferrero joined
21:49
iblechbot left
21:56
meltingwax joined
|
|||
| meltingwax | i'm getting this error when i try to compile: Could not find module `Data.Array': | 21:56 | |
| it is a member of package array-0.1.0.0, which is hidden | 21:57 | ||
| moritz_ | meltingwax: which version of ghc are you using? | ||
| if you have >= 6.8, apply the patch pugs-ghc681.diff | |||
| meltingwax | 6.8.2 | ||
| ok | |||
| how do i do that :x | 21:59 | ||
| moritz_ | I guess 'patch < pus-ghc681.diff' | ||
|
22:02
luqui joined,
jhorwitz left
|
|||
| meltingwax | moritz_: thanks | 22:15 | |
| moritz_ | meltingwax: so it works? | 22:16 | |
| meltingwax | the patch did (when i added -p0) | ||
| its compiling now | |||
| Setup: error reading dist/setup-config; run "setup configure" command? | 22:17 | ||
| Build failed for '/usr/src/pugs/dist/build/libHSPugs-6.2.13.a': 256 at util/build_pugs.pl line 372. | |||
| make: *** [pugs] Error 2 | |||
| moritz_ never saw that error | 22:19 | ||
| did you run Makefile.PL after applying the patch? | |||
|
22:24
cmarcelo left
22:25
jferrero left
|
|||
| meltingwax | yes | 22:26 | |
| moritz_ has no idea what's wron | 22:30 | ||
| g | |||
| TimToady: if I query Str.bytes, which encoding is used to determine the byte size? | 22:32 | ||
|
22:33
jjore-w left
22:34
jjore-w joined
22:43
jferrero joined
22:58
TJCRI left
23:00
Alias_ left
23:06
meltingwax left
23:07
polettix joined
23:18
charsbar_ joined
23:19
charsbar left
23:26
stephang left
23:37
alester left
23:45
zgh left
23:48
polettix left
23:49
riffraff left
|
|||