Ich möchte eine Funktion erstellen, die Map k [v]
( Data) aktiviert .Map.Strict ) in Maybe (Map k v)
.
Was es macht ist das:
Nothing
. Just
zurückgegeben. Das Einzige, was mir einfällt, ist, das manuell mit foldrWithKey'
oder foldlWithKey'
zu machen. Gibt es bessere Möglichkeiten?
Sie suchen traverse :: (Traverseable t, Applicative f) => (a -> f b) -> t a -> f (t b)
von Data.Traversable
(aber auch im Präludium).
traverse f
wird wahrscheinlich am besten als sequenceA . fmap f
verstanden. sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
ist andererseits eine Möglichkeit, die anwendbaren "Effekte" aus einer Traversable
-Struktur herauszuziehen. Zum Beispiel könnte man eine Liste von IO
Aktionen mit sequenceA :: [IO a] -> IO [a]
ausführen. Oder im Fall von Maybe
ist das Ergebnis Just
, wenn alle Elemente in der Traversable
Struktur Just
sind und wenn eines der Elemente Nothing
ist, wird das Ergebnis von sequenceA
auch% co_de sein %.
Wenn Sie Nothing
oder sequence
kennen, sind mapM
und sequenceA
nur Verallgemeinerungen davon.
Tags und Links haskell