类型系统的运算法则--代码阅读神器--类型关乎复合

最近看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

原文地址:https://www.cnblogs.com/feng9exe/p/10981317.html

时间: 2024-10-09 12:13:35

类型系统的运算法则--代码阅读神器--类型关乎复合的相关文章

代码阅读方法与实践(三)

我们分析的许多系统都遵循一种简单的“主程序和子例程”结构.常见的.重要的结构可以归类为少数迥然相异的构架类型:集中式储存库.数据流.面向对象或分层构架.这些构架类型常常结合成一个层次结构用来控制大型系统的复杂性.接下来我们将独立的分析每种构架类型,但是一个系统可以同时展示出多种不同的构架类型.以不同的方式检查同一个系统.分许系统的不同部分.或使用不同级别的分解,都有可能发现不同的架构类型. 集中式储存库的构架模型依赖于一个中心过程或数据结构,他在系统中担任控制或信息的集线器.即使不需要数据库提供

《代码阅读方法与实践》阅读笔记三

之前已经看完了<代码阅读方法与实践>的前六章,基本上也就是看得比较粗略,没有很精细的阅读,上节课听到老师说的“学术交流会”还是很紧张的,挺害怕被问到问题,结果回答不出来可怎么办啊,不仅丢人,分也送给别人了啊,这可怎么破啊.所以呢,我打算近期再看一遍,不管有没有用,算是给自己加点自信吧. 第七章,讲的是编程规范和约定,主要就是文件的命名及组织.缩进.编排.命名约定.编程实践.过程规范之类的,其实这一章也不用我做过多的介绍,因为大家应该都有听各科老师讲过好几遍了,道理大家都懂,但是大家除了在理论上

《代码阅读方法与实践之读书笔记之一》

阅读代码是程序员的基本技能,同时也是软件开发.维护.演进.审查和重用过程中不可或缺的组成部分.<代码阅读方法与实践之读书笔记之一>这本书围绕代码阅读,详细论述了相关的知识与技能.我希望通过仔细阅读并学习本书,可以快速地提高我的代码阅读的技能与技巧,进而从现有的优秀代码.算法.构架.设计中汲取营养,提高自身的开发与设计能力.此次读了此书的前四章,以下是我从中汲取到的宝贵养分: 从第一章<导论>一节中我体会到了我们要养成一个经常花时间阅读别人编写的高品质代码的习惯,因为阅读高品质的代码

图形化代码阅读工具——Scitools Understand

Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java,Understand for Ada,最近这几年合并成了一个产品. 最值得一提的是各种关系图的绘制,以及在这些图上的交互操作:Declaration Graphs / Hierarchy Graphs / Control Flow Graphs / Dependency Graphs / UML C

代码阅读分析工具Understand 2.0试用

Understand 2.0是一款源码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实能够大大提高代码阅读效率.因为Understand功能十分强大,本文不可能详尽地介绍它的全部功能,所以仅仅列举本人觉得比較重要或有特色的功能,以做抛砖引玉之举. Understand 2.0能够从http://www.scitools.com/下载到,安装后能够试用15天. 使用Understand阅读代码前,要先创建一个Project,然后把全部的源码文件增加到这个Project里.这里我创建了一

梦断代码阅读笔记有感之三

09梦断代码阅读笔记之三 这是最后一篇的阅读笔记,我发现时间真的过的好快好快. 想想以前,我们总是在应付一切的差事,但是真正的到最后,我们才发现,到最后吃亏的还是我们自己. 从前的我们,我们总是对自己大脑中的东西一片一片的特别的混乱.其实我们就像作者所说的,我们就像放任胡乱的cd随地的乱放,到最后不知道哪是哪.我们应该学会分类去放置,例如:我们可以根据歌唱者的名字,音乐的类型等等,其实这些东西对于我们写代码也同样的试用,刚开始的上大一时候,我们第一次的学习C++,我们只是随时随地的在写代码,并不

程序代码阅读技巧

一.代码阅读的必要性 阅读别人的代码作为研发人员是一件经常要做的事情.一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验.如果你有机 会阅读一些操作系统的代码会帮助你理解一些基本的原理.更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力 是不能完成相应的任务.最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的. 二.收集所有可能收集的材料 阅读代码要做的第一件事情是收集所有和项目相

《代码阅读方法与实践》阅读笔记之二

时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目.<代码阅读方法与实践>这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了.大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧.总之,尽管我不想承认,但我自己心里很清楚,我就是这种人.下面开始言归正传,说说接下来的几章内容归纳. 这本书在前面已经分析了

代码阅读问题

---恢复内容开始--- 下面列举阅读代码过程中遇到的问题和相应的资料查询: 1.namespace的用途:http://www.kuqin.com/language/20080107/3532.html 2.enum 的用途:http://pcedu.pconline.com.cn/empolder/gj/c/0502/562347.html 3.SFML:http://www.sfml-dev.org/ 4.双冒号的用法:http://blog.csdn.net/zimingjushi/ar