Haskell Language
zipWithM
Zoeken…
Invoering
zipWithM
is naar zipWith
zoals mapM
is naar map
: hiermee kunt u twee lijsten combineren met een monadische functie.
Van de module Control.Monad
Syntaxis
- zipWithM :: Applicative m => (a -> b -> mc) -> [a] -> [b] -> m [c]
Berekening verkoopprijzen
Stel dat u wilt zien of een bepaalde set verkoopprijzen zinvol is voor een winkel.
De items kosten oorspronkelijk $ 5, dus u wilt de verkoop niet accepteren als de verkoopprijs voor een van hen lager is, maar u wilt wel weten wat de nieuwe prijs anders is.
Eén prijs berekenen is eenvoudig: u berekent de verkoopprijs en retourneert Nothing
als u geen winst krijgt:
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
Om het voor de hele verkoop te berekenen, maakt zipWithM
het heel eenvoudig:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
Dit levert Nothing
als een van de verkoopprijzen lager is dan $ 5.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow