如何解决类别中初始对象和最终对象之间的区别
Bartosz Milewski在Chapter 5的 Terminal Object 部分中强调了以下内容
请注意,在此示例中,唯一性条件至关重要,因为存在其他集合(实际上,除了空集合外,所有其他集合)都有来自每个集合的射态射影。例如,为每种类型定义一个布尔值函数(谓词):
yes :: a -> Bool yes _ = True
但是
Bool
不是终端对象。每种类型至少还有一个Bool
值的函数:no :: a -> Bool no _ = False
坚持唯一性为我们提供了正确的精度,可以将终端对象的定义缩小为一种类型。
所有这些都在初始对象部分的 之后,其中类似的观察结果是 不是 。
因此,我有一种感觉,可能是缺少初始对象和终端对象之间的关键区别。
根据我的理解,唯一性对于初始对象也至关重要,因为我可以观察到,还有其他集合(实际上是所有集合)对每个集合(空集合除外)都有外射态射影,但是会有通常,不止一种这样的态射(除了去()
的那个。
所以我的问题是:在初始对象和最终对象之间,除了将它们连接到其他对象的箭头的方向之外,Bartosz可能试图在引用的文本下划线吗?
我知道像作者是什么意思?这样的问题可能会引起不适,因为我们不在他的脑海中,但是我猜谁知道类别理论至少可以提出一些合理的假设
解决方法
每个集合(空集合除外)
这是关键部分。要求是每个集合句点必须有外向语素。一个分解存在的集合足以破坏它。这就是为什么确实Set
中的初始对象已经定义明确,甚至不需要唯一性的原因:空集是唯一具有指向空集的箭头的集。 >
与此同时,每个非空集合实际上都是从每个集合(包括空集合)中传入的箭头,但只有一个元素集合才是唯一的箭头。
,这是书中的直接引文:“初始对象是具有到该类别中的任何对象的只有一个态射的对象。”注意只有一个部分。
顺便说一句,我也非常小心,不要说“任何 other 个对象”,因为从初始对象到它本身还有一个独特的形态:它始终是身份。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。