Haskell Language
zipWithM
Szukaj…
Wprowadzenie
zipWithM
jest zipWith
jak mapM
jest map
: to pozwala połączyć dwie listy używając jednowartościowy funkcję.
Z modułu Control.Monad
Składnia
- zipWithM :: Applicative m => (a -> b -> mc) -> [a] -> [b] -> m [c]
Obliczanie cen sprzedaży
Załóżmy, że chcesz sprawdzić, czy określony zestaw cen sprzedaży ma sens dla sklepu.
Przedmioty początkowo kosztują 5 USD, więc nie chcesz zaakceptować sprzedaży, jeśli cena sprzedaży jest niższa dla któregokolwiek z nich, ale chcesz wiedzieć, jaka jest nowa cena.
Obliczenie jednej ceny jest łatwe: obliczasz cenę sprzedaży i zwracasz Nothing
jeśli nie uzyskasz zysku:
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
Aby obliczyć go dla całej sprzedaży, zipWithM
czyni to naprawdę bardzo prostym:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
Zwróci Nothing
jeśli którakolwiek z cen sprzedaży będzie niższa niż 5 USD.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow