Peut-être est-ce un abus de langage, mais par interface, je voulais dire comme en Java par exemple
Java includes a concept called interfaces. A Java interface is a bit like a class, except a Java interface can only contain method signatures and fields. An Java interface cannot contain an implementation of the methods, only the signature (name, parameters and exceptions) of the method.
Suivi de
Before you can really use an interface, you must implement that interface in some Java class.
Dans ce document. Dans l'exemple en haskell, il suffit de faire une première substitution classe -> type puis interface -> classe pour avoir quelque chose d'équivalent.
Ou alors comme les protocols en Objective-C (bien que je ne sois pas sûr que cela représente la même chose).
(que ta méthode pourrait prendre Num ou Bar)
En fait, il n'y a pas de surcharge en haskell (ou presque) : deux fonctions qui ont le même nom doivent être dans des espaces de nommage différents, sinon le compilateur râle. Or, si on veut définir une fonction sur les Bar et une fonction sur les Foo il faut deux types différents pour la fonction, et donc on n'y arrivera pas ... (enfin, pas à ma connaissance).
Pour ne pas parler dans le vide voilà un exemple concret
classAffichableawhere-- Un type « a » est affichable quand ... affiche::a->String-- on peut avoir une représentation textuelledataUnSuperType=GaucheString|DroiteStringinstanceAffichableUnSuperTypewhereaffiche(Gauches)="gauche : "++saffiche(Droites)="droite : "++s-- Un exemple de fonction qui est polymorphique afficherListe::(Affichablea)=>[a]->StringafficherListe=intercalate",".mapaffiche
Dans l'exemple ci-dessus, la fonction polymorphe dit qu'il existe pour le type a une fonction affiche :: a -> String. Si on veut être polymorphe sur plusieurs classes avec des fonctions qui sont communes ... comment choisir ? Soit on crée une classe parente qui regroupe les éléments communs, soit on ne sait pas ce qu'on veut vraiment faire.
[^] # Re: typage statique automatique ?
Posté par Aluminium95 . En réponse au journal Typage statique pour Python. Évalué à 2.
Peut-être est-ce un abus de langage, mais par interface, je voulais dire comme en Java par exemple
Suivi de
Dans ce document. Dans l'exemple en haskell, il suffit de faire une première substitution
classe -> typepuisinterface -> classepour avoir quelque chose d'équivalent.Ou alors comme les
protocolsen Objective-C (bien que je ne sois pas sûr que cela représente la même chose).En fait, il n'y a pas de surcharge en haskell (ou presque) : deux fonctions qui ont le même nom doivent être dans des espaces de nommage différents, sinon le compilateur râle. Or, si on veut définir une fonction sur les
Baret une fonction sur lesFooil faut deux types différents pour la fonction, et donc on n'y arrivera pas ... (enfin, pas à ma connaissance).Pour ne pas parler dans le vide voilà un exemple concret
Dans l'exemple ci-dessus, la fonction polymorphe dit qu'il existe pour le type
aune fonctionaffiche :: a -> String. Si on veut être polymorphe sur plusieurs classes avec des fonctions qui sont communes ... comment choisir ? Soit on crée une classe parente qui regroupe les éléments communs, soit on ne sait pas ce qu'on veut vraiment faire.