随笔分类 -  函数式编程

摘要:1、基础类型转换为高阶类型(monad),以便使用函数式编程的特性:map、reduce,pipeline、业务组织、异步编程等; 2、高阶类型转化为基础类型:以便使用基础类型的态射(计算)功能。 3、高阶类型的内部转换(泛型类型转换)--类型关乎复合--以便业务的组织。 高阶类型起到桥接的功能。 阅读全文
posted @ 2019-03-07 19:02 zzfx 阅读(342) 评论(0) 推荐(0) 编辑
摘要:moand的编程学形式:一个(高阶)类型完成程序的组织。 将类型系统的转换与高阶函数进行了融合,相对于链式编程而言。 类型关乎复合 范畴论与箭头的复合有关。但是并非任意两个箭头都可以复合。一个箭头的目标对象必须与下一个箭头的源对象相同,这样的两个箭头方能复合。在编程中,我们将一个函数的返回结果传递给 阅读全文
posted @ 2019-03-07 18:24 zzfx 阅读(262) 评论(0) 推荐(0) 编辑
摘要:在范畴论里,一个范畴(category)指的是这样一个好东西,它由三部分组成: 函子 前面对范畴的介绍反映了范畴内部各个对象之间的联系与相互作用,在范畴论里另外研究的重点是范畴与范畴之间的关系,就正如对象与对象之间有态射一样,范畴与范畴之间也存在某些映射,从而可以将一个范畴映射为另一个范畴,这种映射 阅读全文
posted @ 2019-03-07 17:55 zzfx 阅读(843) 评论(0) 推荐(0) 编辑
摘要:起点: 高阶函数的复用,参量函数的混入、数据映射; 从输入到输出的映射。 一切皆是映射映射即流流即函数 ​​​​ 进阶: 对异步的支持;惰性求值 对并发的支持;纯函数; 对栈内存的优化:尾递归; 终点: 函数式编程的组织及型变:monand 函数式编程语言的形式:声明式语言(以输入、输出(类型)、高 阅读全文
posted @ 2019-03-07 15:01 zzfx 阅读(265) 评论(0) 推荐(0) 编辑
摘要:Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性。 阅读全文
posted @ 2019-03-06 16:17 zzfx 阅读(168) 评论(0) 推荐(0) 编辑
摘要:函数式编程与异步编程 函数式编程中,异步编程是惰性计算的根源,惰性计算是函数式异步编程的支持; 1、高阶函数都具有计算构建的功能; 2、函数式编程语言对异步编程的支持是通过惰性求值机制实现的; 3、惰性计算的变量在语言或机制的底层需要保存;在接口层面,通常是作为高阶函数的参量,需要特定的修饰符修饰; 阅读全文
posted @ 2019-03-05 16:33 zzfx 阅读(952) 评论(0) 推荐(0) 编辑
摘要:scalaz功能基本上由以下三部分组成: 1、新的数据类型,如:Validation, NonEmptyList ... 2、标准scala类型的延伸类型,如:OptionOps, ListOps ... 3、通过typeclass的随意多态(ad-hoc polymorphism)编程模式实现的大 阅读全文
posted @ 2019-03-01 19:47 zzfx 阅读(282) 评论(0) 推荐(0) 编辑
摘要:函数式编程的类型系统:typeclass Typeclass是带有关联构造类型的抽象接口,抽象接口的行为用于约束构造类型。 构造类型实现了抽象接口的行为约束,就称这个实现为这个构造类型的函子。 要素:1、关联的构造类型;2、建立在这个构造类型上的的约束。 3、构造类型的关联类型的概念与行为,及与构造 阅读全文
posted @ 2019-03-01 17:23 zzfx 阅读(677) 评论(0) 推荐(0) 编辑
摘要:类型构造是抽象类型或高阶类型实例化的过程; 类型构造器是任意输入一个或几个已有类型,能够生成新类型的类型; https://www.cnblogs.com/feng9exe/p/9925027.html Type constructors Essentially what HKT gives us 阅读全文
posted @ 2019-03-01 15:35 zzfx 阅读(243) 评论(0) 推荐(0) 编辑
摘要:monad是高阶抽象类型; 包含类型构造器; monad抽象的核心是类型封装和类型转化(map)。 实现monad的的类型必须实现(基础)类型的封装和类型转化的功能; 在此基础上实现其他的功能(基本依赖于map); 实现类型的衍生功能依赖于map的实现; 阅读全文
posted @ 2019-01-23 21:38 zzfx 阅读(154) 评论(0) 推荐(0) 编辑
摘要:什么是Monad? trait Monad[+T] { def flatMap[U]( f : (T) => Monad[U] ) : Monad[U] def unit(value : B) : Monad[B] } Monads 就是一个values的容器,并且这个“容器”必须有一个flatMa 阅读全文
posted @ 2019-01-23 18:27 zzfx 阅读(460) 评论(0) 推荐(0) 编辑
摘要:ReactiveX Rx的Observable的本质就是一个Event Monad,即上下文(就是图文教程中包裹的盒子)为Event的一个Monad,这里的Event定义,可以对应语言的struct或者enum,包括了next、error和complete三个上下文即可。这里截取的是Swift语言的 阅读全文
posted @ 2019-01-11 19:21 zzfx 阅读(454) 评论(0) 推荐(0) 编辑
摘要:这组运算符和代数中的运算加减乘除运算符一样,符合一定的定律:结合律、(交换律)等; 函数式编程的核心(底层支持)就是这些类型和运算符的定义。 函子就是定义这些类型和运算符的()。 运算符通常为单目运算??运算符的被操作数是(高阶)数据,操作数是配置函数,操作本身是高阶函数; 本质是:结合函数式特点, 阅读全文
posted @ 2018-12-27 11:48 zzfx 阅读(254) 评论(0) 推荐(0) 编辑
摘要:数据:数据的封装;类型; 映射:数据的变换。 阅读全文
posted @ 2018-12-26 16:33 zzfx 阅读(168) 评论(0) 推荐(0) 编辑
摘要:一切皆是映射映射即流流即函数 ​​​​ 这句话背后的意义不仅仅在于函数式编程。量子力学说过,事物只在相互作用时才出现。“事物”即“一切”,“相互作用”即“映射”。这是“一切皆是映射”(光剑)这句话背后更为本质的意义。 https://yq.aliyun.com/articles/626871 htt 阅读全文
posted @ 2018-12-14 17:39 zzfx 阅读(376) 评论(0) 推荐(0) 编辑
摘要:元类型(0阶类型);nullary type, data types 一元类型(一阶类型):unary adj. [数] 一元的 二元类型: is the kind of a binary type 高阶类型::关注类型的变换; a kind is the type of a type constr 阅读全文
posted @ 2018-11-07 19:12 zzfx 阅读(717) 评论(0) 推荐(0) 编辑
摘要:面向过程编程的致命缺陷是算法与算法的结合方式过于单一, 是数据与算法的结合方式不支持扩展和修改,硬编码; 面向对象和函数式编程都是对这一缺陷的改进。 结合方式过于单一,并且存在硬绑定问题。 阅读全文
posted @ 2018-10-31 17:25 zzfx 阅读(275) 评论(0) 推荐(0) 编辑
摘要:首先,我们来看一下 Functor typeclass 的定义: 1 2 class Functor f where fmap :: (a -> b) -> f a -> f b Functor typeclass fmap (a -> b) f a f b f Functor 注:fmap 函数可 阅读全文
posted @ 2018-10-22 11:34 zzfx 阅读(174) 评论(0) 推荐(0) 编辑
摘要:数式编程能将函数当成对象,可当变量,当参数-函数的类型和变量的类型并无差别 1、函数是"第一等公民",和其它数据类型一样,处于平等地位,可以赋值、传递。 2、无副作用。对于给定输入总是产生给定输出。以及不改变和依赖外部变量的状态。 阅读全文
posted @ 2018-10-15 10:41 zzfx 阅读(153) 评论(0) 推荐(0) 编辑
摘要:面相对象关心组件的封装、结合与协作; 函数式编程关心结构的映射(输入输出)与数值处理流程。 函数式编程更接近过程式编程。 阅读全文
posted @ 2018-10-14 11:36 zzfx 阅读(332) 评论(0) 推荐(0) 编辑