年龄
人 → 整数
↘ ↓≥18?
≥ 18?◦年龄 {True,False}
在尝试使用抽象来揭示组合的本质之前,我们需要查看一个最后的细节。 考虑一个从人的集合映射到人的集合的函数。 有许多这样的函数,例如将一个人映射到他们父亲的函数。 但其中一个函数特别重要,一个将每个人映射到他们自己的函数。 我们称这个函数为恒等函数,或 id。 这似乎完全没用,但让我们看看当将它与一个更有趣的函数组合时会发生什么。 恒等函数和年龄函数的组合是一个将一个人映射到如21(她的年龄)的函数。
Age o id=Age
注意,这与年龄函数的映射完全相同! 换句话说,将“年龄”与恒等函数组合得到的是年龄函数。 与恒等函数的组合就像乘以1,它实际上什么也不做。
这个函数被证明是非常有用的,所以我们会将它添加到图表中。
id 年龄
↻人 → 整数
↘ ↓ ≥18?
≥ 18?◦年龄 {True,False}
每个集合都存在一个恒等函数,其定义为将集合中的每个元素映射到它自身,但我只在人的集合上显示了它,以避免图过于杂乱。 这就是集合论中的组合,虽然看起来非常小众,似乎不适用于其他地方,但事实证明,这样的组合是数学、计算机科学和逻辑中众多的领域的基石。
为了理解这一点,我们需要使用一些抽象。 你现在知道怎么做了,让我们看看哪些细节与组合无关,以便可以去除它们。 首先用字母A替换集合'人',它简单地代表某个实体可以放在这个位置。 对其他两个集合做同样的处理,使用字母B和C。 我们将这些抽象的集合称为对象(object)。
id 年龄
↻A → B ← Object
↘ ↓ ≥18?
≥ 18?◦年龄 C
对函数做同样的概括,简单地用字母f和g来表示新抽象对象之间的某种关系,我们将这些抽象的函数称为箭头(Arrow)。
id f
↻A → B ← Object
↘ ↓g ↖ Arrow
g◦f C
重要的是要记住,尽管这个特定的图表有3个对象和任意两个不同对象之间的单个箭头,但这绝不是一个限制。 可以有尽可能多的对象,并根据需要定义它们之间的尽可能多的箭头,甚至允许有无限多的对象或箭头。 但为了保持图表的清晰和简洁,我只显示3个对象。
对于任意两个箭头,其中一个的结束是下一个的开始,
id f
↻ A → B
↓ g
C
总应存在一个可以切角的箭头,
id f
↻ A → B
g◦f ↘ ↓ g
↗
Composition C
数学联邦政治世界观提示您:看后求收藏(同人小说网http://tongren.me),接着再看更方便。