繁体   English   中英

Haskell中的Comonad类型类是什么?

[英]What is the Comonad typeclass in Haskell?

Haskell中的Comonad类型类是什么? 与Comonad包中的Control.Comonad的Comonad一样 (也欢迎提供Comonad类型类的任何其他包的解释)。 我模糊地听说过Comonad,但我真正知道的是它提供了extract :: wa -> a ,类似于Monad的return :: a -> ma

在“真实”代码中注意Comonad的“真实生活”用途的奖励积分。

这些链接可能会有所帮助:

  1. 评估细胞自动机是常用的 特别是,“每当你看到大量数据结构从大量小而类似的计算拼凑在一起时,我们就很有可能处理一个comonad”。
  2. 序列,流和段
  3. 日常生活中的共生体

这并没有完全回答我的问题,但我想以答案格式提供一些相关信息:

“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 (>>=)的参数槽的箭头,并且extractextend也是如此。 Monad / comonad法律规定,当你将returnextract放入该槽时,结果就是标识箭头。 法律是相同的,“只是用箭头翻转”。 这是一个超级手听的答案,但希望它提供了一些见解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM