underscore.js中的链函数是否创建了monad?

chain文档中找到:

在包装对象上调用chain将导致所有将来的方法调用返回包装对象。 完成计算后,使用value来检索最终值。

那么chain函数是否创建了monad?


不,不是一个单子,而是一个共同体! 它变成一个函数,它接受一个包装对象并将一个普通值返回到一个函数中,该函数将获取并返回一个包装对象。 作为Haskell类型的签名将是:

(Wrapped a -> b) -> (Wrapped a -> Wrapped b)

value的类型签名是:

Wrapped a -> a

这些正是你需要一个共同的。 第一个函数通常称为extend和第二个extract

您可以将一个comonad视为具有一些额外上下文的值。 这当然正是chain所做的。

有关更多关于comonads的信息,请参阅此Stackoverflow问题。

链接地址: http://www.djcxy.com/p/47675.html

上一篇: Does the chain function in underscore.js create a monad?

下一篇: Help a C# developer understand: What is a monad?