Mit Vielleicht in Haskell Typ
Frage
Ich versuche, die vielleicht in Haskell Typ zu verwenden. Ich habe einen Nachschlag für Schlüssel, Wertetupeln, die einen vielleicht zurückgibt. Wie greife ich auf die Daten, die von Vielleicht gewickelt war? Zum Beispiel möchte ich die ganze Zahl von vielleicht mit einer anderen Ganzzahl enthielt hinzuzufügen.
Lösung
Alternativ können Sie Mustervergleich:
case maybeValue of
Just value -> ...
Nothing -> ...
Andere Tipps
könnten Sie verwenden Data.Maybe.fromMaybe
, die einen Maybe a
und einen Wert annimmt, zu verwenden, wenn es Nothing
ist. Sie könnten die unsichere Data.Maybe.fromJust
verwenden, die nur zum Absturz, wenn der Wert Nothing
ist. Sie wollen wahrscheinlich Dinge in Maybe
zu halten. Wenn Sie eine ganze Zahl in einem Maybe
hinzufügen will, könnte man so etwas tun
f x = (+x) <$> Just 4
, das ist die gleiche wie
f x = fmap (+x) (Just 4)
f 3
wird dann Just 7
sein. (Sie können weiterhin Kette zusätzliche Berechnungen auf diese Weise.)
So wie eine Randnotiz: Da Maybe
ein Monad
ist, können Sie Berechnungen mit do
-Notation ...
sumOfThree :: Maybe Int
sumOfThree = do
a <- someMaybeNumber
b <- someMaybeNumber
c <- someMaybeNumber
let k = 42 -- Just for fun
return (a + b + c + k)
Beispiele für "vielleicht":
> maybe 0 (+ 42) Nothing
0
> maybe 0 (+ 42) (Just 12)
54
Viele Menschen sind gegen den Einsatz von fromJust
jedoch kann es praktisch sein, wenn Sie wissen, was passieren wird, wenn die Suche fehlschlägt (Fehler !!)
Als erstes müssen Sie dies:
import Data.Maybe
Und dann Nachschlag aus einer Liste von Tupeln wird wie folgt aussehen
Data.Maybe.fromJust $ lookup key listOfTuples
Zum Beispiel erfolgreich Lookup:
Data.Maybe.fromJust $ lookup "a" [("a",1),("b",2),("c",3)]
1
Und schreckliche Versagen sieht wie folgt aus:
Data.Maybe.fromJust $ lookup "z" [("a",1),("b",2),("c",3)]
*** Exception: Maybe.fromJust: Nothing
Sorry, ich hätte es besser gegoogelt haben.
die fromMaybe Funktion ist genau das, was ich brauche. fromMaybe den Wert in Vielleicht zurück, wenn es nicht nichts ist, sonst wird es einen Standardwert fromMaybe geliefert zurückzukehren.
http : //www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Maybe.html