是否在underscore.js链函数创建一个单子?(Does the chain function

2019-07-29 05:44发布

在该chain的文档你会发现:

调用chain一个包装的对象,将导致未来所有的方法调用返回裹物为好。 当你完成计算,用value来获取最终值。

正因为此,在chain函数创建一个单子?

Answer 1:

不,不是一个单子,但comonad! 它变成一个函数,一个包装对象,并返回一个正常值成一个函数,该函数取并返回一个包装对象。 作为Haskell的类型签名,这将是:

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

类型签名value是:

Wrapped a -> a

这些正是你所需要的comonad。 所述第一函数通常称为extend和第二extract

你可以把comonad与一些额外的上下文的值。 这当然正是chain一样。

见这个问题#1所有关于comonads。



文章来源: Does the chain function in underscore.js create a monad?