类型系统的运算法则--代码阅读神器--类型关乎复合
最近看swift的范型和typeclass很辛苦,一点也摸不着头绪;
所以总结了以下类型系统的运算法则,以简化类型的转化、组合、变换等规则;
is-a has-a use-a like-a as-a extension-a assign-a like-a-default
一、类型分类:
1、normal type:平凡类型;
2、interface:接口类型;
3、generic:泛型类型;
4、moand、typeclass:高阶类型;
类型是类型关系的结点;是关系的出发点和落脚点;
二、类型关系:
类型的关系关系到类型的复合;
1、基础关系:
is-a:继承、对象属于类型的说明;
has-a:组合关系;
use-a:临时变量的使用和函数参量;
as-a:类型转换;
2、基础泛型关系:
generic-a:泛型类型;
assign-a:为泛型类型指定类型参量;
concrete-a:具体化;
3、抽象接口:
like-a:抽象类型、接口类型与实现关系;
defalut-a:
imp-default-a:
like-a-defalut:为抽象类实现缺省功能,在swfit语言中有这种功能;
imp-a;实现;
4、映射关系:
to-a:
map-a:函数式编程的类型映射
//下面的关系可能不考虑在列
5、typeclass:
moand-a:like-a与generic-a的合体;函数式编程和随意多态中用到;
6、给类型添加功能:
extension-a:在类型上添加功能;
目的是在理清类型关系的时候能够有法则和依据。
三、编程只是关乎类型、操作和复合的游戏
范型是has-a\use-a的类型游戏;
typeClass是is-a + has-a的游戏
is a has a like a user a
is-a has-a use-a like-a as-a extension-a assign-a like-a-default