Question

Je suis en train d'utiliser le type Peut-être dans Haskell. J'ai une recherche pour tuples clé, valeur qui retourne un Maybe. Comment puis-je accéder aux données qui ont été enveloppées par peut-être? Par exemple, je veux ajouter l'entier contenu par un autre entier avec peut-être.

Était-ce utile?

La solution

Sinon, vous pouvez correspondance de motif:

case maybeValue of
  Just value -> ...
  Nothing    -> ...

Autres conseils

Vous pouvez utiliser Data.Maybe.fromMaybe, qui prend Maybe a et une valeur à utiliser si elle est Nothing. Vous pouvez utiliser le Data.Maybe.fromJust dangereux, qui vient planter si la valeur est Nothing. Vous voulez probablement garder les choses en Maybe. Si vous voulez ajouter un entier dans un Maybe, vous pouvez faire quelque chose comme

f x = (+x) <$> Just 4

qui est la même que

f x = fmap (+x) (Just 4)

f 3 sera alors Just 7. (Vous pouvez continuer à la chaîne des calculs supplémentaires de cette manière.)

Tout comme une note de côté: Depuis Maybe est un Monad, vous pouvez construire des calculs en utilisant la notation do-...

sumOfThree :: Maybe Int
sumOfThree = do
  a <- someMaybeNumber
  b <- someMaybeNumber
  c <- someMaybeNumber
  let k = 42 -- Just for fun
  return (a + b + c + k)

Exemples pour "peut-être":

> maybe 0 (+ 42) Nothing
0
> maybe 0 (+ 42) (Just 12)
54

Beaucoup de gens sont contre l'utilisation de fromJust, mais il peut être pratique si vous êtes au courant de ce qui se passera lorsque la recherche échoue (erreur !!)

Tout d'abord, vous 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, la recherche réussie:

Data.Maybe.fromJust $ lookup "a" [("a",1),("b",2),("c",3)]
1

Et les regards d'échec horribles comme ceci:

Data.Maybe.fromJust $ lookup "z" [("a",1),("b",2),("c",3)]
*** Exception: Maybe.fromJust: Nothing

Désolé, je googled mieux.

en utilisant la fonction fromMaybe est exactement ce que je dois. fromMaybe retourne la valeur Peut-être que si elle est rien, sinon elle retournera une valeur par défaut fournie à fromMaybe.

http : //www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Maybe.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top