Haskell Language
zipWithM
Recherche…
Introduction
zipWithM
est zipWith
comme mapM
est à la map
: il vous permet de combiner deux listes en utilisant une fonction monadique.
A partir du module Control.Monad
Syntaxe
- zipWithM :: Applicatif m => (a -> b -> mc) -> [a] -> [b] -> m [c]
Calcul des prix de vente
Supposons que vous vouliez voir si un certain ensemble de prix de vente est approprié pour un magasin.
À l'origine, les articles coûtaient 5 dollars, vous ne voulez donc pas accepter la vente si le prix de vente est inférieur pour l'un d'entre eux, mais vous voulez savoir quel est le nouveau prix.
Calculer un prix est facile: vous calculez le prix de vente et vous retournez Nothing
si vous ne faites pas de profit:
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
Pour le calculer pour toute la vente, zipWithM
rend très simple:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
Cela ne rapportera Nothing
si l'un des prix de vente est inférieur à 5 $.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow