計算銷售價格
假設你想要檢視某組銷售價格是否對商店有意義。
這些物品原本花費 5 美元,所以如果銷售價格低於其中任何一個,你不想接受銷售,但你確實想知道新價格是多少。
計算一個價格很簡單:你計算銷售價格,如果你沒有獲利,則返回 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
。