标签:获得 转换 span 组合 内核和 透明 绘画 记录 做什么
副作用的概念:一个带有副作用的函数不仅只是简单的返回一个值,还干了一些其他的事情,比如:
因此我们对于函数式程序的判定边界就在于:函数的副作用。
于是——当函数没有副作用,那么我们就说这个函数符合函数式编程(FP);再给出纯函数这个概念用来定义一个函数没有副作用,我们可以说纯函数构成的程序风格就是函数式的!
buyCoffee的例子(p3):函数只不过是需要返回一杯咖啡,可是却对费用进行了持久化操作(产生副作用),我们可以在buyCoffee方法返回咖啡时也把费用作为值一并返回,将费用这条记录交给其他程序来做持久化,以此来去除副作用 ====》通过把这些副作用推到程序的外层,来转换任何带有副作用的函数(纯的内核和一层很薄的外围来处理副作用)
引用透明:对于程序p,如果它包含的表达式e满足引用透明,所有e都可以替换为它的运算结果而不会改变程序p的含义(要求函数不论进行任何操作都可以用它的返回值来代替)。
引用透明与纯函数的关联:假如存在一个函数f,若表达式f(x)对所有引用透明的表达式x也是引用透明,那么这个f是一个纯函数(也就是说,传入引用透明的x表达式给f,函数f(x)的返回值可以代替这个函数在其他程序起的作用)
纯函数的好处:纯函数是模块化的、可组合的,因为它从“对结果做什么(返回值)”和“如果获取输入(通过参数传递获得输入)”中分离了计算本身的逻辑,就像一个黑盒子。
标签:获得 转换 span 组合 内核和 透明 绘画 记录 做什么
原文地址:https://www.cnblogs.com/zhixiangshu/p/10054065.html