在学习新的编程主题时,我通常遵循一个模式:我阅读它,我理解它,然后我编写一些示例以确保我真正理解它。

我已经阅读了很多关于 monad 的内容,我相信我理解并理解了它们。我现在处于一个非常想编写一些 monad 来巩固我的理解的阶段,并真正弄清楚为各种类型实现绑定(bind)需要什么。

问题是我想不出很多明显的单子(monad)来实现,所以我正在寻找建议。最好是,我想要一个推荐列表,有一些简单的和一些不太容易的。

我也意识到,虽然 monad 被用来在函数式程序中“封装”副作用,但它们也比这更通用。所以,我希望建议包括既封装副作用又包含一些一般副作用的单子(monad)。

谢谢!

(作为旁注:我将与 f# 一起工作,但我认为这个问题可能适用于任何函数式语言)。

请您参考如下方法:

我认为 All About Monads 中的目录是一个好的开始(延续单子(monad)实际上对变态很有用,参见例如 here );另外parsers ,可能还有 transactional effects . Async是另一个尝试自己实现的好方法(逻辑上单线程代码,在不同的实际线程之间跳跃以实现非阻塞)。 Reactive Framework 的底层单子(monad)看起来像是一个很好的高级挑战。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!