函数式编程二三事.pptx
- 5. 三大变换
λ 抽象:
α-变换:可以将 λ 表达式中的一个变量,
重新命名为另一个变量
β-变换:将构建好的函数应用到参数值上,
代入参数的方向叫做 β-规约,
反向应用称为 β-抽象
η-变换:去除多余的 λ 抽象
Hinweis der Redaktion
- “万物皆数”是毕达哥拉斯学派的哲学主张,就是认为:数是万物的本原。
数学语言是是可以脱离现实而存在的,大家把数学想成了一种符号游戏,脱离生活常识,从公理开始,
进行大量的推导和证明——最终产生了一个系统,里面有公里、定理、推论、猜想...
上述这种自成体系,有公理又承认推理证明方法的体系,称为形式系统。
- λ演算是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义、函数如何被应用以及递归的形式系统
- 邱奇编码给出了编程语言所需的几乎所有元素,这是以λ演算为核心的函数式编程语言的理论基础。
- 大意是说,在编程语言中,所谓一等公民,是指支持所有操作的实体, 这些操作通常包括作为参数传递,从函数返回,修改并分配给变量等。
当我们说函数是“一等公民”的时候,我们实际上说的是它们和其他对象都一样,函数真没什么特殊的,你可以像对待任何其他数据类型一样对待它们——把它们存在数组里,当作参数传递,赋值给变量...等等。
- 转变思维,函数有可能被复用
- 疫苗
函数式编程的哲学就是假定副作用是造成不正当行为的主要原因。这并不是说,要禁止使用一切副作用,而是说,要让它们在可控的范围内发生。
- 将参数缺席称为“point-free”导致了不必要的晦涩,故而有了别名为“pointless”
- 对函数进行柯里化时,需要策略性地把要操作的数据放到最后一个参数里。
柯里化在做函数组合 compose 时非常有用,让人们将关注的重点聚焦到函数本身,而不因冗余的数据参数分散注意力。
能让函数回归到原始的:一个参数进去一个值出来的状态。
- 纯函数只针对输入和输出
传统,数学上定义