随笔分类 -  函数式编程理论

摘要:面向对象是对内聚状态的封装; 函数式编程是对通用运算符的封装与在运算符基础上的计算构建。 函数式编程 = 构造运算符 + 链接运算符。 函数式编程根本上是抽象运算符与对运算符的解释。 阅读全文
posted @ 2022-06-20 15:08 zzfx 阅读(47) 评论(0) 推荐(0) 编辑
摘要:结构:函数作为变量参与构建; 抽象:高阶函数指定了函数类型后,具体实现可以是任何形式。 行为:执行构建的计算; 状态:计算构建与计算执行的关系。 一、函数的双重属性:变量与函数。 变量(类型+实例):用于构建结构 函数:用于执行; 函数类型(签名)相当于面向对象编程中的接口。 给函数变量赋值,相当于 阅读全文
posted @ 2019-11-12 17:22 zzfx 阅读(286) 评论(0) 推荐(0) 编辑
摘要:trait Monad:函数式编程类型系统本博客搜索关键字--类型升降 阅读全文
posted @ 2019-08-16 17:05 zzfx 阅读(184) 评论(0) 推荐(0) 编辑
摘要:高阶函数和类型作为计算的骨架,低阶函数作为构建的元素 函数(计算、表达式)怎么组合成具体或更大的的计算,或链条更长的计算。 二、计算的构建: 1、输入输出流的平凡构建;签名兼容的函数调用链构建;无高阶函数,构建器compose pipeline本身是高阶函数; 2、函数作为参量参与链的构建; 3、m 阅读全文
posted @ 2019-08-16 15:10 zzfx 阅读(294) 评论(0) 推荐(0) 编辑
摘要:面向过程:把大象关进冰箱里: 把冰箱门打开=> 大象放冰箱里=> 冰箱门关上 面向对象: 冰箱.开门() 冰箱.放入(大象) 冰箱.关门() 函数式: 关进(冰箱,大象): 关门(放入(开门(冰箱),大象)) http://www.aichengxu.com/other/3730832.htm 阅读全文
posted @ 2019-07-26 16:54 zzfx 阅读(448) 评论(0) 推荐(0) 编辑
摘要:函数式编程中有一种模式是通过组合多个函数的功能来实现一个组合函数。一般支持函数式编程的工具库都实现了这种模式,这种模式一般被称作compose与pipe。以函数式著称的Ramda工具库为例。 const R = require('ramda'); function inc (num) { retur 阅读全文
posted @ 2019-06-13 11:04 zzfx 阅读(312) 评论(0) 推荐(0) 编辑
摘要:将平凡对象转化为monand对象; 将monand对象串联起来进行业务处理。 阅读全文
posted @ 2019-06-06 11:27 zzfx 阅读(231) 评论(0) 推荐(0) 编辑
摘要:范畴是一系列有联系的概念的集合; 类型关乎复合 范畴论与箭头的复合有关。但是并非任意两个箭头都可以复合。一个箭头的目标对象必须与下一个箭头的源对象相同,这样的两个箭头方能复合。在编程中,我们将一个函数的返回结果传递给另一个函数。如果目标函数不能正确的解析源函数传递来的数据,程序就不会工作。首尾必须相 阅读全文
posted @ 2019-05-16 17:07 zzfx 阅读(750) 评论(0) 推荐(0) 编辑
摘要:(来自:http://en.wikipedia.org/wiki/Pure_function) 在计算机编程中,假如满足下面这两个句子的约束,一个函数可能被描述为一个纯函数: 给出同样的参数值,该函数总是求出同样的结果。该函数结果值不依赖任何隐藏信息或程序执行处理可能改变的状态或在程序的两个不同的执 阅读全文
posted @ 2019-05-10 18:38 zzfx 阅读(614) 评论(0) 推荐(0) 编辑
摘要:一、纯函数: 函数:(只)参量依赖、解决确定、环境无修改。 函数与输入、输出、环境的关系。 二、副作用 (Side Effect)是指函数或者表达式的行为依赖于外部世界。具体可参照Wiki上的定义,副作用是指 1)函数或者表达式修改了它的SCOPE之外的状态 2)函数或者表达式除了返回语句外还与外部 阅读全文
posted @ 2019-05-10 18:37 zzfx 阅读(931) 评论(0) 推荐(0) 编辑
摘要:函数式编程与异步编程 函数式编程中,异步编程是惰性计算的根源,惰性计算是函数式异步编程的支持; 1、高阶函数都具有计算构建的功能; 2、函数式编程语言对异步编程的支持是通过惰性求值机制实现的; 3、惰性计算的变量在语言或机制的底层需要保存;在接口层面,通常是作为高阶函数的参量,需要特定的修饰符修饰; 阅读全文
posted @ 2019-03-05 16:33 zzfx 阅读(948) 评论(0) 推荐(0) 编辑
摘要:响应式编程是一种面向数据流和变化传播的编程范式; 响应式编程和函数式编程的融合; 响应式编程为内核;函数式编程为工具; 流的概念先天适合函数式编程。 Some quotes from the article: Reactive programming is programming with asyn 阅读全文
posted @ 2019-01-15 19:15 zzfx 阅读(383) 评论(0) 推荐(0) 编辑
摘要:这组运算符和代数中的运算加减乘除运算符一样,符合一定的定律:结合律、(交换律)等; 函数式编程的核心(底层支持)就是这些类型和运算符的定义。 函子就是定义这些类型和运算符的()。 运算符通常为单目运算??运算符的被操作数是(高阶)数据,操作数是配置函数,操作本身是高阶函数; 本质是:结合函数式特点, 阅读全文
posted @ 2018-12-27 11:48 zzfx 阅读(247) 评论(0) 推荐(0) 编辑
摘要:数据:数据的封装;类型; 映射:数据的变换。 阅读全文
posted @ 2018-12-26 16:33 zzfx 阅读(166) 评论(0) 推荐(0) 编辑
摘要:"范畴就是使用箭头连接的物体。" 箭头表示范畴成员之间的关系,正式的名称叫做"态射"(morphism)。范畴论认为,同一个范畴的所有成员,就是不同状态的"变形"(transformation)。通过"态射",一个成员可以变形成另一个成员。 1.2 数学模型 既然"范畴"是满足某种变形关系的所有对象 阅读全文
posted @ 2018-12-17 15:25 zzfx 阅读(1654) 评论(0) 推荐(0) 编辑
摘要:范畴论基本概念 如果你是第一次听说范畴论(category theory),看到这高大上的名字估计心里就会一咯噔,到底数学威力巨大,光是高等数学就能让很多人噩梦连连。和搞编程的一样,数学家喜欢将问题不断加以抽象从而将本质问题抽取出来加以论证解决,范畴论就是这样一门以抽象的方法来处理数学概念的学科,主 阅读全文
posted @ 2018-12-17 15:18 zzfx 阅读(875) 评论(0) 推荐(0) 编辑
摘要:函子是两个范畴之间的一种映射(关系) 阅读全文
posted @ 2018-06-08 16:35 zzfx 阅读(212) 评论(0) 推荐(0) 编辑
摘要:In computer science, a function or expression is said to have a side effect if it modifies some state outside its scope or has an observable interacti 阅读全文
posted @ 2018-01-15 17:41 zzfx 阅读(342) 评论(0) 推荐(0) 编辑