Haskell中的Comonad类型类是什么?与来自Control.Comonad in the comonad package的Comonad一样(也欢迎对提供Comonad类型类的任何其他包进行解释)。我隐约听说过Comonad,但我真正知道的是它提供了extract :: w a -> a,类似于Monad的return :: a -> m a。
注意到Comonad在“真实”代码中的“现实生活”用法的加分。
发布于 2011-12-08 17:40:30
这些链接可能对您有所帮助:
发布于 2016-03-04 03:52:01
这并没有完全回答我的问题,但我想将一些相关信息放在答案格式中:
"co“(松散的)意思是”翻转箭头“。这是一个粗略的视觉效果。
考虑一下一元运算:
return :: a ~> m a
flip (>>=) :: (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注意在这种格式中,return是一个恰好适合flip (>>=)的参数槽的箭头,extract和extend也是如此。Monad/comonad法律规定,当您将return或extract放入该插槽中时,结果是身份箭头。法律是相同的,“只是箭头被反转了”。这是一个超级简单的答案,但希望它能提供一些见解。
https://stackoverflow.com/questions/8428554
复制相似问题