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
|