|
|
1
74
精确的技术定义
:在Ruby中,monad是任何具有
一些实例 monad的一个非常简单的例子是lazy Identity monad,它在Ruby(一种严格的语言)中模拟了lazy语义:
使用这个,您可以以一种懒惰的方式将进程链接在一起。例如,在下面的例子中,
一个类似的、不那么抽象的例子是从数据库中获取值的monad。假设我们有一节课
这将允许您通过单个连接链接数据库调用,如下所示:
所有单子
. 因此,只要简单地实现,您通常反复编写的代码就可以被任何monad重用
这反过来让我们可以做更多有用的事情,比如定义这个函数:
这个
|
|
|
2
6
加上我的两分钱,我想说hzap误解了单子的概念。 它不仅仅是一个类型接口或一个提供特定功能的结构,它还不止这些。 它是一个提供操作的抽象结构(bind>>=)和单位(返回)),正如肯和阿波卡利普所说的,遵循严格的规则。 如果你对monads感兴趣,并且想知道更多关于monads的信息,而不是这些答案中所说的几件事,我强烈建议你阅读: Monads for functional programming 再见!
|
|
|
3
5
单子不是语言结构。它们只是实现特定接口的类型,由于Ruby是动态类型化的,所以任何实现
|
|
|
4
1
以下是上述答案: 你可能有兴趣退房 Rumonade, a ruby gem which implements a Monad mix-in for Ruby .
Romande实现为mix-in,因此它希望它的宿主类实现这些方法
你可以用它来
|