首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell中的Comonad类型类是什么?

Haskell中的Comonad类型类是什么?
EN

Stack Overflow用户
提问于 2011-12-08 17:08:01
回答 2查看 17.7K关注 0票数 108

Haskell中的Comonad类型类是什么?与来自Control.Comonad in the comonad package的Comonad一样(也欢迎对提供Comonad类型类的任何其他包进行解释)。我隐约听说过Comonad,但我真正知道的是它提供了extract :: w a -> a,类似于Monad的return :: a -> m a

注意到Comonad在“真实”代码中的“现实生活”用法的加分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 17:40:30

这些链接可能对您有所帮助:

  1. Evaluating cellular automata is comonadic.尤其是,当你看到由许多小但相似的计算拼凑而成的大型数据结构时,我们很有可能正在处理一个comonad".
  2. Sequences, streams, and segments
  3. Comonads in everyday life
票数 83
EN

Stack Overflow用户

发布于 2016-03-04 03:52:01

这并没有完全回答我的问题,但我想将一些相关信息放在答案格式中:

"co“(松散的)意思是”翻转箭头“。这是一个粗略的视觉效果。

考虑一下一元运算:

代码语言:javascript
复制
return :: a ~> m a
flip (>>=) :: (a ~> m b) -> (m a ~> m b)

颠倒曲折的箭头,你就会得到共同的操作:

代码语言:javascript
复制
extract :: a <~ w a
extend :: (a <~ w b) -> (w a <~ w b)

(用普通箭头书写)

代码语言:javascript
复制
extract :: w a -> a
extend :: (w a -> b) -> w a -> w b

注意在这种格式中,return是一个恰好适合flip (>>=)的参数槽的箭头,extractextend也是如此。Monad/comonad法律规定,当您将returnextract放入该插槽中时,结果是身份箭头。法律是相同的,“只是箭头被反转了”。这是一个超级简单的答案,但希望它能提供一些见解。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8428554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档