Haskell Language
zipWithM
サーチ…
前書き
zipWithM
にあるzipWith
としてmapM
することですmap
:それはあなたがモナドの関数を使用して2つのリストを結合することができます。
Control.Monad
モジュールから
構文
- zipWithM :: Applicative m =>(a→b→mc)→[a]→[b]→m [c]
販売価格の計算
特定のセットの販売価格が店舗に適しているかどうかを確認したいとします。
商品の価格は元来5ドルですので、販売価格がそれよりも低い場合はその販売を受け入れることは望ましくありませんが、そうでない場合は新しい価格が何であるかを知りたいと考えています。
1つの価格を計算するのは簡単です:販売価格を計算し、利益を得られNothing
場合はNothing
を返します。
calculateOne :: Double -> Double -> Maybe Double
calculateOne price percent = let newPrice = price*(percent/100)
in if newPrice < 5 then Nothing else Just newPrice
販売全体のためにそれを計算するために、 zipWithM
はそれを本当に簡単にします:
calculateAllPrices :: [Double] -> [Double] -> Maybe [Double]
calculateAllPrices prices percents = zipWithM calculateOne prices percents
販売価格のいずれかが$ 5を下回っている場合、これはNothing
を返します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow