![](/img/trans.png)
[英]What are some motivating examples for Cofree CoMonad in Haskell?
[英]What is the Comonad typeclass in Haskell?
Haskell中的Comonad类型类是什么? 与Comonad包中的Control.Comonad的Comonad一样 (也欢迎提供Comonad类型类的任何其他包的解释)。 我模糊地听说过Comonad,但我真正知道的是它提供了extract :: wa -> a
,类似于Monad的return :: a -> ma
。
在“真实”代码中注意Comonad的“真实生活”用途的奖励积分。
这些链接可能会有所帮助:
这并没有完全回答我的问题,但我想以答案格式提供一些相关信息:
“co”(松散地)意味着“翻转箭头”。 这是一个粗略的视觉效果。
考虑monadic操作:
return :: a ~> m a
flip (>>=) :: (a ~> m b) -> (m a ~> m b)
扭转波浪形的箭头,你得到了comonadic操作:
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
放入该槽时,结果就是标识箭头。 法律是相同的,“只是用箭头翻转”。 这是一个超级手听的答案,但希望它提供了一些见解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.