一个同时是单子和余单子的术语是什么?

7

我在想,是否有一个简明的术语来描述既是单子(monad)又是余单子(comonad)的东西。我已经搜索过了,并知道这些结构存在,但我没有找到它们的名称。


1
同时具备X和co-X特性的事物通常被称为“bi-X”,那么也许可以叫做“bimonad”?不过我不知道人们是否真正使用这个词。 - kini
1
@KeshavKini:bimonad的概念与bifunctors不兼容。 - leftaroundabout
1
你是在询问范畴论的概念名称吗?如果是这样,你的问题与主题严重不符,应该在计算机科学SE上提出。如果你正在询问是否存在针对这种类型的类,请明确说明,以使你的问题更加与编程有关,尽管我仍然怀疑它是否属于主题范畴,因为这基本上是一个外部资源搜索。 - Bakuriu
问题在于,如果你既有返回函数又有提取函数,那么你的(共)单子实际上并没有什么大用处,因为它基本上没有强制性。另一方面,也许你正在考虑箭头,这是单子和余单子的交集。 - PatJ
2个回答

1
这样的一种东西,有时被称为“Hopf单子”或“双单子”,必须满足一定条件(http://ncatlab.org/nlab/show/Hopf+monad)。但是,这也需要满足关于分配性质的多个公理,并且我没有看到它在编程上以任何特定的方式出现。

0
据我所知,没有术语来定义它,因为单子共单子不会强制任何事情:你总是可以使用return进入或extract退出。
由于类型是用来强制执行某些约束的,过于宽松的约束将毫无用处。由于没有人会使用它(除了身份之外),因此可能没有人费心去命名它。

我不明白你的论点。你似乎在说,没有有趣的单子也是余单子。这是错误的,链接的问题讨论了这样的函子; 非空列表是显而易见的例子。无论如何,returnextract不需要有任何特定的关系,它们互相不知道。我想extract . return必然总是id,但return . extract并不是微不足道的。 - leftaroundabout
我没有想到那个,你能展示一个非恒等 return . extract 的最小例子吗?我不擅长 Haskell,无法通过这个有趣的讨论找到一个例子。(我将这个问题设为 wiki,以便它可以轻松地被编辑(好吧,我还是 SO 政策的新手,所以我不确定这是否是这样做的方式)) - PatJ
1
return . extract $ nonEmpty [1,2,3] 产生 nonEmpty [1] - leftaroundabout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接