Haskell Language
zipWithM
Buscar..
Introducción
zipWithM
es para zipWith
como mapM
es para map
: te permite combinar dos listas usando una función monádica.
Desde el módulo Control.Monad
Sintaxis
- zipWithM :: Applicative m => (a -> b -> mc) -> [a] -> [b] -> m [c]
Cálculos de precios de venta.
Supongamos que desea ver si un determinado conjunto de precios de venta tiene sentido para una tienda.
Los artículos originalmente cuestan $ 5, por lo que no desea aceptar la venta si el precio de venta es menor para cualquiera de ellos, pero sí quiere saber cuál es el precio nuevo.
Calcular un precio es fácil: usted calcula el precio de venta y no devuelve Nothing
si no obtiene una ganancia:
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
Para calcularlo para toda la venta, zipWithM
hace realmente simple:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
Esto devolverá Nothing
si alguno de los precios de venta está por debajo de $ 5.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow