the chain documentation中,您可以找到:



那么 chain 函数会创建一个monad吗?

最佳答案

不,不是单子(monad),而是一个表情!它会将接受包装对象并返回正常值的函数转换为接受包装对象并返回包装对象的函数。作为Haskell类型签名,它将是:

(Wrapped a -> b) -> (Wrapped a -> Wrapped b)
value的类型签名为:
Wrapped a -> a

这些正是您需要的东西。通常,第一个函数称为extend,第二个函数称为extract

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

有关comonads的更多信息,请参见this Stackoverflow question

09-17 11:25