类型(Type)是可构建集合(constructive set)

在给定类型(Type)中的每个元素(element)都是可构建(constructive)的。这是与集合(set)的最大区别。

类型(Type)像是一个集合(set),包含了给定类型的元素 (element)。比如,C语言的int类型,如果在32位机器上,该int类型就包含了 2^32个整数值。此时,类型就相当于是集合,给定了对应的类型,就能知道该类型定义的可能的值是什么。即,如果一个变量 a,它的类型是 int,那么 a 的值就只能是 2^32个整数里面的一个。

那么,为什么不用集合直接作为类型来用,而非要用一个新的概念(类型)来替代呢?

原因在于,当我们使用集合的概念时,比如定义一个集合时,需要确定该集合包含哪些元素(element)。例如,一个经典的悖论,a set containing sets which do not contain itself。此时,有个隐含的前提是,这些备选的元素都是已经存在的,我们在定义集合时,只是将其中的部分划分到我们要定的集合里。这样就有可能存在一些不知道如何构建的元素也划分至集合里面。

例如,A = P U not P,P 是一个集合,not P 是该集合的补集,U 是这两个集合的与运算,其结果为集合A。那么,集合A包括了 P和非P里面的所有元素。但是,实际上,我们不知道集合A包含了哪些元素,因为,我们不知道P或非P包含了哪些元素。

换个角度来看,P是一个命题 (proposition),not P 是该命题的否定,如果P是对的,那么P包含了一个元素,该元素证明了P是对的。如果 not P 是对的,那么not P 也包含一个元素,证明 P是错的。那么 P V not P,这个命题在经典逻辑学上是 对的,意味着 P V not P包含一个元素,证明其是对的。但是,不确定是 P 是对的,还是 not P 是对的。

因此,在集合的概念上,允许了不可构建的元素存在。更确切地说是,没有明确规定,集合里的所有元素都是可构建的。即我们确定该元素是存在的,但是不知道如何构建该元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值