Je suis un peu déçu, je pensais que c'était inféré.
Il y a méprise. Ce qui est inferé c'est le type ou la classe (i.e. "interface" nécessaire d'une fonction). Mais par contre il faut bien dire ce que fait ton interface pour un type particulié. Par example si j'ai une interface Surface avec une fonction surface et que j'ai un type Rectangle, il faut bien que j'écrive quelque part la fonction surface du Rectangle... Par contre quand je vais écrire une fonction qui utilise surface, son type sera inféré comme prenant un type d'interface Surface en paramètre.
Oui je me suis mal exprimé, ce que je voulais dire c'est qu'une méthode prend un et un seul type par paramètre et que si on cherche à la rendre polymorphique, il faut définir un type somme.
Oui et non.
Les types sommes sont une manière d'encapsuler plusieurs trucs dans un seul type, c'est grosso modo une union typé.
Tu peux aussi définir ta fonction dans une typeclass, c'est à dire qu'elle prendra un type qui match la typeclass (i.e. l'interface). Elle est donc plus ou moins polymorphique.
Elle peut aussi être polymorphique car on se fout des types que du passes. Example d'une fonction swap (a, b) = (b, a), celle-ci prend un tuple de type (t, t') et retourne un tuple de type (t', t), en ce sens elle est polymorphique.
[^] # Re: typage statique automatique ?
Posté par Guillaum (site web personnel) . En réponse au journal Typage statique pour Python. Évalué à 4.
Il y a méprise. Ce qui est inferé c'est le type ou la classe (i.e. "interface" nécessaire d'une fonction). Mais par contre il faut bien dire ce que fait ton interface pour un type particulié. Par example si j'ai une interface
Surfaceavec une fonctionsurfaceet que j'ai un typeRectangle, il faut bien que j'écrive quelque part la fonctionsurfaceduRectangle... Par contre quand je vais écrire une fonction qui utilisesurface, son type sera inféré comme prenant un type d'interfaceSurfaceen paramètre.Oui et non.
Les types sommes sont une manière d'encapsuler plusieurs trucs dans un seul type, c'est grosso modo une union typé.
Tu peux aussi définir ta fonction dans une typeclass, c'est à dire qu'elle prendra un type qui match la typeclass (i.e. l'interface). Elle est donc plus ou moins polymorphique.
Elle peut aussi être polymorphique car on se fout des types que du passes. Example d'une fonction
swap (a, b) = (b, a), celle-ci prend un tuple de type(t, t')et retourne un tuple de type(t', t), en ce sens elle est polymorphique.