【发布时间】:2012-06-16 21:57:29
【问题描述】:
我注意到“monad”这个词的使用方式似乎有些不一致。我开始相信这是因为那里的许多(如果不是大多数)monad 教程是由刚刚开始自己弄清楚 monad 的人编写的(例如:核废料太空服卷饼),所以这个学期结束了有点过载/损坏。
特别是,我想知道术语“monad”是否可以应用于诸如 Maybe、List 或 IO 等类型的单个值,或者术语“monad”是否真的应该仅应用于类型本身。
这是一个微妙的区别,所以也许一个类比可能会更清楚。在数学中,我们有环、场、群等。这些术语适用于整个值集以及可以对它们执行的操作,而不是单个元素。例如,整数(连同加法、否定和乘法运算)形成一个环。你可以说“整数是一个环”,但你永远不会说“5 是一个环”。
那么,你能说“Just 5 是一个单子”,还是说“5 是一个环”是错误的?我不知道范畴论,但我的印象是说“Maybe 是一个单子”而不是“Just 5 是一个单子”才有意义。
【问题讨论】:
-
如果您了解一些代数,请阅读范畴论。它甚至可能会让您感兴趣。
-
@AlexandreC。我读过一些关于范畴论的书,虽然还没有找到一个好的介绍。有什么建议么?关于该主题的维基百科页面似乎是在假设读者已经理解类别理论的情况下编写的。特别让我感到困惑的一件事是类别具有“对象集合”的陈述。什么是“收藏”?一套?还有什么?
-
CT 的问题在于它太抽象了,你必须随身携带自己的例子。您会在任何关于代数几何(或交换代数)的良好入门课程、一些计算机科学课程、一些几何课程等中找到工作知识。This 似乎对计算机科学的观点很有希望。标准书是 MacLane 的工作数学家的范畴理论。另外,请阅读Sigfpe's blog
-
I wrote about this same problem a couple of years ago. 我建议monadic类型的值可以称为“motes”。
-
请注意,这里可能会出现另一层混乱。你说
Just 5不是单子是对的,Maybe是。但同样需要指出的是,Just 5、Maybe Integer的类型也不是 Monad。
标签: terminology monads