[Madrid-pm] Perl 5.10 y el MRO "C3"
Diego Kuperman
diego en kuperman.com.ar
Lun Mar 3 10:49:14 PST 2008
Hola!,
Raúl Núñez de Arenas Coronado wrote:
> Muy buenas :)
>
> Ahora que veo el subject, espero que no haga saltar ningún filtro
> antispam XDDDDD
>
:-p
> En fin, al grano: he visto que a partir de 5.9.algo Perl soporta el
> Method Ordering Resolution "C3", que es el que usa también Python,
> Dylan, etc.
>
Hombre, la verdad es que hace ya tiempo que se utiliza C3 en perl 5.8.x
(quizas inferiores tambien) via Class::C3.
Nosotros utilizamos mucho DBIx::Class que es uno de los primeros modulos
que lo ha utilizado intensivamente.
> He estado buscando un poco sin mucho éxito acerca de los posibles
> problemas que pueda acarrear esto de "use mro 'c3';" en futuros scripts
> de Perl. Reconozcámoslo, el soporte de objetos de Perl es "tricky" y he
> visto más de una vez jerarquías reveladas en la implementación. O para
> ser más preciso, he visto jerarquías en las que la implementación asumía
> un orden concreto en la búsqueda de métodos.
>
Bueno, los objetos de perl tienen pocas reglas, y eso ha permitido,
ademas de genialidades, muchas cosas raras. Entre ellas los
revolucionarios inside-out objects o que exista una clase que implementa
C3 :-p
> Se me ha pasado por la cabeza que una forma de combatir el aburrimiento
> con Perl 5.10 va a ser coger algún módulo algo complejo de CPAN, cambiar
> el MRO a "c3" e intentar corregir los bugs chulos que aparezcan.
>
> ¿Sabéis si hay algo publicado sobre el tema? ¿Alguien ha probado ya el
> MRO nuevo? Ahora en serio: ¿alguien *ha necesitado cambiar el MRO*?.
>
Leete la documentacion de Class::C3, creo que contesta estas preguntas:
http://search.cpan.org/~blblack/Class-C3-0.19/lib/Class/C3.pm
> No es por pinchar, pero en cuestión de objetos Perl está pidiendo a
> gritos una ruptura de compatibilidad hacia atrás. Por ejemplo, haciendo
> que la sintáxis estándar para clases y objetos sea la que propone Conway
> pero no implementada como un core-module, sino en el propio lenguaje.
> Igual hay que esperar a Perl 6 (u 8) para eso...
>
A mi no me gustaria que la rompa la verdad, dependo de cientos de
modulos que esperan que no se rompa... Y como te decia antes, en general
, sabiendo las pocas reglas, usos y costumbres es muy flexible (sobre
todo aprovechandose de los varios modulos que añaden/cambian
funcionalidad al modelo de objetos).
Supongo que puedes completar la lectura mirado algo de Moose:
http://search.cpan.org/dist/Moose/lib/Moose.pm
Un abrazo,
Diego
Más información sobre la lista de distribución Madrid-pm