Haskell Language
zipWithM
Suche…
Einführung
zipWithM
ist zipWith
wie mapM
map
: Sie können zwei Listen mit einer monadischen Funktion kombinieren.
Aus dem Modul Control.Monad
Syntax
- zipWithM :: Applicative m => (a -> b -> mc) -> [a] -> [b] -> m [c]
Berechnungspreise
Angenommen, Sie möchten sehen, ob eine bestimmte Menge von Verkaufspreisen für ein Geschäft sinnvoll ist.
Die Artikel kosten ursprünglich $ 5, sodass Sie den Verkauf nicht akzeptieren möchten, wenn der Verkaufspreis niedriger ist, Sie jedoch wissen möchten, was der neue Preis sonst ist.
Die Berechnung eines Preises ist einfach: Sie berechnen den Verkaufspreis und geben Nothing
wenn Sie keinen Gewinn erzielen:
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
Um es für den gesamten Verkauf zu berechnen, macht zipWithM
es wirklich einfach:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
Dies gibt Nothing
wenn einer der Verkaufspreise unter 5 US-Dollar liegt.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow