수색…


소개

zipWithM 이다 zipWithmapM 하는 것입니다 map : 그것은 당신이 모나드 함수를 사용하여 두 목록을 결합 할 수 있습니다.

Control.Monad 모듈에서

통사론

  • zipWithM :: 적용 m => (a -> b -> mc) -> [a] -> [b] -> m [c]

판매 가격 계산

특정 판매 가격 세트가 상점에 적합한지를보고 싶다고 가정 해보십시오.

항목의 원래 가격은 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 을 반환합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow