• [^] # Re: Liberté de l'utilisateur

    Posté par (site web personnel) . En réponse au journal Gestion de l'erreur - C++ - std::optional. Évalué à 3.

    Moué, en pratique cela me choque la fonction distance qui prend des Maybe en paramètre... Je ne sais pas si j'ai quelque part dans mon code des fonctions qui prennent des Maybe en paramètre (si ce n'est des combinateurs).

    Alors, si on suppose que square :: Float -> Maybe Float et que sqrt :: Float -> Maybe Float, mais bon, parce que on est pervers, je ferais :

    distance :: Float -> Float -> Float -> Float -> Maybe Float
    distance x1 x2 y1 y2 = do
     d1 <- square(x2 - x1)
     d2 <- square(y2 - y1)
     sqrt (d1 + d2)

    distance :: Float -> Float -> Float -> Float -> Maybe Float
    distance x1 x2 y1 y2 = sqrt =<< ((+) <$> square (x2 - x1) <*> square (y2 - y1))

    Mais là on nous prendrais pour des malades ;)

    Si cela intéresse quelqu'un, je peux expliquer ce qu'est ce bordel. Cela fait peur, mais les trois opérateurs =<<, <$> et <*> sont tellement utilisés tous le temps en haskell qu'il sont un peu comme le =, les [] et le -> du C.