上篇我们介绍了Free类型可以作为一种嵌入式编程语言DSL在函数式编程中对某种特定功能需求进行描述.一个完整的应用可能会涉及多样的关联功能,但如果我们为每个应用都设计一套DSL的话,那么在我们的函数式编程中将会不断重复的功能相似的DSL.我们应该秉承函数式编程的核心思想:函数组合(compositionality)来实现DSL的组合:把DSL拆解成最基础语句ADT,然后用这些ADT来组合成适合应用功能要求的完整DSL.我们还是使用上篇那个Interact DSL,这次再增加一个Login功能:…
1.0.0 Summary Tittle:[UML]NO.52.EBook.1.UML.1.012-[UML 大战需求分析]- 交互概览图(Interaction Overview Diagram) Style:DesignPattern Series:DesignPattern Since:2017-11-08 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired…
https://stackoverflow.com/questions/49002/prefer-composition-over-inheritance 解答1 Prefer composition over inheritance as it is more malleable / easy to modify later, but do not use a compose-always approach. With composition, it's easy to change beha…
在上一节我们讨论了通过Coproduct来实现DSL组合:用一些功能简单的基础DSL组合成符合大型多复杂功能应用的DSL.但是我们发现:cats在处理多层递归Coproduct结构时会出现编译问题.再就是Free编程是一个繁复的工作,容易出错,造成编程效率的低下.由于Free编程目前是函数式编程的主要方式(我个人认为),我们必须克服Free编程的效率问题.通过尝试,发现freeK可以作为一个很好的Free编程工具.freeK是个开源的泛函组件库,我们会在这次讨论里用freeK来完成上次讨论中以失…
原档: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID267 参考:http://wiki.jikexueyuan.com/project/swift/chapter2/22_Protocols.html 1.协议 协议定…
UML的构造快包含3种:  (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图,组件图,部署图,状态图,活动图,序列图,协作图 事物是对模型中最具代表性的成分的抽象:关系把事物结合在一起:图聚集了相关的事物. (2) 关系(4种) UML 中类与类, 类与接口, 接口与接口这间的关系有: 泛化(generalization) 关系, 关联(association)关系( 关联…
以下是目前所有的Google搜索命令语法,它不同于Google的帮助文档,因为这里介绍 了几个Google不推荐使用的命令语法.大多数的Google搜索命令语法有它特有的使用格式,希望大家能正确使用.我用不同颜色标注了不同的语法命 令,绿色的较为常用的命令,黄色的是不常用但却非常有用的命令,蓝色是Google不推荐使用的命令. allinanchor: anchor是一处说明性的文字,它标注说明了这个链接可能跳转到其它的网页或跳转到当前网页的不同地方.当我们用allinanchor提交查询的时…
.什么是继承 A继承B,说明A是B的一种,并且B的所有行为对A都有意义 eg:A=WOMAN B=HUMAN A=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会. .什么是组合 若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B. 例如眼(Eye).鼻(Nose).口(Mouth).耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye.Nose.Mouth.Ear组合而成,不是派生而成 .继承的优点和缺点 优点: 容易进行新的实现…
我们介绍了 XAML 语法规则,以及用于描述 XAML 语法中存在的限制或选项的术语.当出现以下情况时你会发现本主题很有用:不熟悉 XAML 语言的使用,希望加强对术语或某些语法部分的理解,或者对 XAML 语言的工作原理感兴趣,因而希望了解更多背景知识. XAML 是 XML XAML 的基本语法基于 XML,且定义有效的 XAML 必须也是有效的 XML.但是,XAML 也有自己的用来扩展 XAML 的语法概念.给定的 XML 实体可能在纯 XML 中有效,但该语法在 XAML 中可能具有不…
作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.定义:  要尽量使用合成和聚合,尽量不要使用继承. 2.使用场景: 要正确的选择合成/复用和继承,必须透彻地理解里氏替换原则和Coad法则.Coad法则由Peter Coad提出,总结了一些什么时候使用继承作为复用工具的条件. (1)Coad法则:只有当以下Coad条件全部被满足时,才应当使用继承关系: [1]子类是超类的一个特殊种类,而不是超类的一个角色.区分“Has-A”和“Is-A”.只有“Is-A”…