我已经阅读了这篇文章,但最后一节并未理解.
作者说Monad给了我们上下文敏感性,但是只使用Applicative实例就可以实现相同的结果:
let maybeAge = (\futureYear birthYear -> if futureYear < birthYear
then yearDiff birthYear futureYear
else yearDiff futureYear birthYear) <$> (readMay futureYearString) <*> (readMay birthYearString)
Run Code Online (Sandbox Code Playgroud)
没有do语法肯定会更加丑陋,但除此之外我不明白为什么我们需要Monad.任何人都可以为我清除这个吗?