J'essaie d'utiliser le type Maybe dans Haskell. J'ai une recherche de clé, de tuples de valeur qui renvoie un peut-être. Comment accéder aux données qui ont été encapsulées par Maybe? Par exemple, je veux ajouter l'entier contenu par Peut-être avec un autre entier.
Réponses
Trop de publicités?Vous pouvez utiliser les Données.Peut-être.fromMaybe, qui prend Peut-être une et une valeur à utiliser si il n'en est Rien. Vous pouvez utiliser de l'insécurité de Données.Peut-être.fromJust, qui va simplement se bloquer si la valeur n'est Rien. Il est probable que vous voulez garder les choses dans la monade Peut-être. Si vous voulez ajouter un entier à un peut-être, vous pourriez faire quelque chose comme
import Control.Applicative
f x = (+x) <$> Just 4
qui est le même que f x = fmap (+x) (Seulement 4)
f 3
sera alors Just 7
. (Vous pouvez continuer à la chaîne de calculs supplémentaires de cette manière.)
Beaucoup de gens sont contre l'utilisation de fromJust
, mais cela peut être pratique si vous savez ce qui se passera lorsque la recherche échoue (erreur !!)
Tout d'abord, vous en aurez besoin:
import Data.Maybe
Et puis votre recherche à partir d'une liste de tuples ressemblera à ceci
Data.Maybe.fromJust $ lookup key listOfTuples
Par exemple, recherche réussie:
Data.Maybe.fromJust $ lookup "a" [("a",1),("b",2),("c",3)]
1
Et un échec horrible ressemble à ceci:
Data.Maybe.fromJust $ lookup "z" [("a",1),("b",2),("c",3)]
*** Exception: Maybe.fromJust: Nothing