Si tu as une fonction qui peut retourner soit le type A soit le type B, tu doit faire attention à gérer chacun des 2 types partout ou utiliser des fonctions ou des opérateurs qui peuvent prendre ces 2 types en paramètre. C'est en ça qu'ils sont polymorphiques. Le polymorphisme dans le paradigme fonctionnel ne s'appuie pas sur une hiérarchie de classe, mais sur le fait de pouvoir prendre un type parmi d'autres. C'est ce qu'ils appellent les union type si je ne m'abuse (mais je crois que je m'abuse, c'est un autre nom).
Si je comprends bien, c’est un l’équivalent d’un variant, mais implicite ? Le polymorphisme dans les langages fonctionnels repose sur le duck typing (c’est le cas en python, et aussi en go si je ne me plante pas, ce n’est pas lié au paradigme fonctionnel), mais ce que tu dis c’est que là le compilateur s’autorise à créer de nouveaux types ?
Il me semble qu’ocaml fait du multiple dispatch (j’en suis sûr pour Haskell) en fonction du type réel des arguments. Est-ce à dire que si tu as une fonction f qui peut renvoyer soit un A, soit un B, et deux surcharges de g, l’une pour A, l’autre pour B, cela va fonctionner correctement de chaîner les appels g(f("toto")) ? Ce serait élégant.
Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0
[^] # Re: Jai: Language for game programmming
Posté par whity . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 0.
Si je comprends bien, c’est un l’équivalent d’un variant, mais implicite ? Le polymorphisme dans les langages fonctionnels repose sur le duck typing (c’est le cas en python, et aussi en go si je ne me plante pas, ce n’est pas lié au paradigme fonctionnel), mais ce que tu dis c’est que là le compilateur s’autorise à créer de nouveaux types ?
Il me semble qu’ocaml fait du multiple dispatch (j’en suis sûr pour Haskell) en fonction du type réel des arguments. Est-ce à dire que si tu as une fonction f qui peut renvoyer soit un A, soit un B, et deux surcharges de g, l’une pour A, l’autre pour B, cela va fonctionner correctement de chaîner les appels g(f("toto")) ? Ce serait élégant.
Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0