Comme je ne le pratique pas (encore) c'est balbutiant, mais pouvoir à minima faire des alias de types et éviter les casts entre le type racine et l'alias.
L'exemple qui me vient à l'esprit : on te fourni une chaîne de caractère qui pourrait être un mot de passe, mais pour que ça en soit un, il faut passer par la fonction validPasswd() qui prend une chaîne de caractère et sort un password (qui est un type alias de chaînes caractères).
Tu as 3 façons de faire ça :
en orienté objet tu fait de l'encapsulation, ça peut être joli mais c'est assez lourd (si tu veux étendre cet usage un peu partout ça t'oblige à créer beaucoup de classe)
en impératif à la Ada : tu peux faire des alias et tu peux en plus leur donner des contraintes (tu peux coder l'invariant sur tes mots de passe directement dans le type)
en fonctionnel : c'est là que j'ai le plus de lacune, mais si je ne m'abuse tu va faire exactement ce que je décris plus haut. Tu crée un type et une fonction qui te sort le type en question
Ça paraît pas forcément génial comme ça mais en poussant vraiment plus loin le truc, tu peux faire en sorte que tout ton algo consiste en une résolution du type. Par exemple tu as un tableau d'entier (ton type initial) et tu va créer un type tableau d'entier trié (ton type de sortie) et seul tes méthodes de tris sortent ce type précis.
Pour pouvoir aller loin dans tout ça, tu as pleins d'outils très utiles :
l'inférence de type
les unions de type
etc
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: ouai
Posté par barmic . En réponse au journal Données vs Code. Évalué à 3.
Comme je ne le pratique pas (encore) c'est balbutiant, mais pouvoir à minima faire des alias de types et éviter les casts entre le type racine et l'alias.
L'exemple qui me vient à l'esprit : on te fourni une chaîne de caractère qui pourrait être un mot de passe, mais pour que ça en soit un, il faut passer par la fonction
validPasswd()qui prend une chaîne de caractère et sort un password (qui est un type alias de chaînes caractères).Tu as 3 façons de faire ça :
Ça paraît pas forcément génial comme ça mais en poussant vraiment plus loin le truc, tu peux faire en sorte que tout ton algo consiste en une résolution du type. Par exemple tu as un tableau d'entier (ton type initial) et tu va créer un type tableau d'entier trié (ton type de sortie) et seul tes méthodes de tris sortent ce type précis.
Pour pouvoir aller loin dans tout ça, tu as pleins d'outils très utiles :
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)