• [^] # Re: goto return cave

    Posté par . En réponse au journal Is return the new goto ?. Évalué à 3. Dernière modification le 30 janvier 2024 à 17:39.

    Oui l'image du trains, des rails et des aiguillages et une bonne image pour présenter le fonctionnement d'une monade. Ce qui est décrit est valide quelque soit la monade choisie et pas seulement celle d'erreurs : c'est une question de composition de diagonale dans les calculs.

     f g
     A -----------> B -----------> C
     | | |
     | | |
     V map f V map g V
    F(A) -----------> F(B) -----------> F(C)
    

    Ici A, B et C sont des types et F est un types paramétriques. Le but d'une monade est de composé les diagonales : aller de A à F(C) en prenant les chemins A -> F (B) et B -> F(C). Ce qui dans le cas des erreurs correspond à un calcul produisant peut être un B à partir d'un A et un autre produisant peut-être un C à partir d'un B. En composant ces deux fonctions, on en obtient une qui produit peut être un C à partir d'un A.

    Dans le cas de la monade identité, on a F(A) = A, les deux lignes du haut et du bas sont les même et c'est le principe du pipe du shell : on pipe A dans f puis le résultat dans g et on obtient C. Une monade c'est juste une généralisation du principe du pipe du shell.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.