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?