Haskell中的Comonad类型类是什么?与Control.Comonad的comonad包中的Comonad一样(也欢迎对提供Comonad类型类的任何其他包进行解释)。我隐约听到了Comonad的信息,但我真正了解的只是它提供的东西extract :: w a -> a
,与Monad的相似return :: a -> m a
。
在“真实”代码中指出Comonad的“真实生活”用法的加分点。
我真的很想看看“合作”与“正常”之间的区别是什么。我知道什么是单子。因此,如果我知道“合作”的含义,那么我可以总结自己,什么是共鸣,并深入理解它。阿列克谢·罗曼诺夫(Alexey Romanov)的回答在这方面没有做任何事情。
—
Evi1M4chine
@ Evi1M4chine:“宽松”的意思是“翻转箭头”。这是一个大概的视觉效果。考虑单子操作:
—
Dan Burton
return :: a ~> m a
,flip bind :: (a ~> m b) -> (m a ~> m b)
。扭转弯弯曲曲的箭头,您将获得平息的操作:extract :: a <~ w a
,extend :: (a <~ w b) -> (w a <~ w b)
(extract :: w a -> a
,extend :: (w a -> b) -> w a -> w b
)
谢谢@丹·伯顿(Dan Burton)……所以,在一个单子的同时,您在“内部”工作(在其中填充新的和更改的东西),在一个单子的同时,在“外部”工作(最终将其取出或只是对其进行修改) 。这种观点正确吗?因为它对深入的了解肯定会有所帮助。
—
Evi1M4chine