Fwd: off-topic duda sobre polimorfismo...

Cristian Gutierrez crgutier en dcc.uchile.cl
Sab Jul 2 16:02:23 CLT 2005


Ayer en la tarde, Horst von Brand dijo:
> blackbeer <dblackbeer en gmail.com> wrote:
>
> [...]
>
>> Polimorfismo es un concepto de OO. [...]
>
> Polimorfismo /nada/ tiene que ver con OOP. Se refiere a que una operacion
> se pueda invocar igual para datos de distinto tipo. [...]

Quizas ambos tienen la razon :)

,----[ <http://c2.com/cgi/wiki?CategoryPolymorphism> ]
| Types of polymorphism: 
| 
| GenericPolymorphism?, also known as ParametricPolymorphism: Generic
| algorithms, templates, parameteric types, etc, [...]
| 
| SubtypePolymorphism?: Polymorphism based on subtyping (the notion that
| one type can extend/implement the behavior of another in such fashion
| that any valid operation on the supertype is valid on the subtype),
| subsumption (allowing a subtype to be used in a context where a
| supertype is expected), and DynamicDispatch (selecting a function or
| data based on the runtime type of its arguments--see SingleDispatch,
| DoubleDispatch, MultipleDispatch (aka MultiMethods)). JavaLanguage,
| CeePlusPlus, etc. all have subtype polymorphism [...]
`----

>  Caso extremo es tal vez lenguajes como Perl, en los que puedes
> aplicar la operacion sort a un arreglo de numeros o de strings, y
> "hace lo correcto" (ordena numericamente o como string) solo.

<nitpicking>

Eso no es tan asi; `sort' ordena lexicograficamente (o, al menos, segun
lo que LC_COLLATE diga) a menos que se le indique otra forma,
tipicamente con una funcion anonima:

$ perl -le 'print join(" ", sort @ARGV)' 1 2 3 10
1 10 2 3

$ perl -le 'print join(" ", sort {$a cmp $b} @ARGV)' 1 2 3 10
1 10 2 3

$ perl -le 'print join(" ", sort {$a <=> $b} @ARGV)' 1 2 3 10
1 2 3 10

</nitpicking>

Salu2,

-- 
Cristian Gutierrez                          /* crgutier en dcc.uchile.cl */
Nothing but perl can parse Perl.  -- Tom Christiansen



Más información sobre la lista de distribución Linux