类型系统

类型系统


首先需要明确的一点是,类型系统 不是计算不可分割的组成部分。这一点,最直观的证据是,汇编语言没有类型系统。

然而,说没有类型系统可能不够严谨,因为汇编是有类型的,比如 word 和 double word……但,在设计类型系统这件事上,我们有全部的自由。设计类型系统是一个逻辑上的难题。

最简?

有所谓 “最基本的类型系统” 吗?有。对基本类型上基本运算的检查是最基本的。

那复杂性从何而来?为了便于使用,需要基本类型可以组合成聚合类型,需要基本运算可以组合成复合运算。

复合运算的组合手段有二,使某一运算的结果做后续运算的参数、使某一运算的结果做后续运算的选择条件(if 语句)。if 语句是很独特的,只要使用了 if 语句,就引入了 Union Type。

Union Type

if 语句让函数返回值的类型与输入参数的(而不是输入参数的类型)。因为输入不确定,所以返回值类型不确定。

宽化转换

向上转换可以隐式进行。

窄化转换

窄化转换一定要对宽类型中的每一种可能分别处理,编译器要强制这一点。

新类型

结构体定义产生 “新的基本类型”,而 Union Type 标记只是一个别名。

泛型和二阶类型

有时候我们需要高阶类型,最典型的应用是容器。容器太普遍了,但容器的类型却是个难点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值