强化类型系统,进行静态类型检查。
但强化类型系统,增加约束的副作用是,程序变得越来越难写了。
动态类型强调单元测试,这其实是扬长避短的一个方法,但短处仍然在那。
其实,程序中的类型错误一般是笔误,或者一时糊涂,对这样的错误,有一个很好的检查方式,既不失灵活方便,又能够有效的检查错误。
这同样需要有强大的类型推断系统,在这样的系统下,可以通过某个变量所出现的定义,位置,场合,来推断变量类型,一般来说,这些信息是“过约束”,含义是:
有10个地方可以做推断,但取其中3个就可以完全的推断出变量的类型,于是其他7个就成了过约束,只要用户在某一个或者几个地方脑子糊涂了,推断一般会出现矛盾,导致“约束不满足”。
上面是一种情况,另一种情况是,系统发现,对这个变量,虽然可以推断出类型,但是不是过约束状态,也就是说,如果在一个地方脑子糊涂了,造成的错误系统不会知道,在这种情况下,系统有必要要求用户进一步给出明确的定义,通过定义造成过约束。如果用户前后思路不一致,就会产生自相矛盾。