moh*_*med 8 functional-programming side-effects
在功能编程书中,作者提到以下是副作用.
我只是想知道如果它们是副作用,如果没有读取或写入文件就可以编写纯函数程序.如果是,那么在功能世界中实现这一目标的常用方法是什么?
谢谢,穆罕默德
小智 5
正确回答这个问题可能需要整本书(不要太长)。这里的重点是函数式编程旨在将逻辑描述/表示与其实际的运行时解释分开。您的功能代码只是将程序的效果表示为(不运行)为值,从而为您提供了某种抽象的语法树来描述您的计算。您代码的不同部分(通常称为解释器)将采用这些值并懒惰地运行实际效果。该部分不起作用。
如何编写以任何方式都有用的纯函数式程序?这不可能。纯粹的功能程序只会加热CPU。它需要实际写入磁盘或网络的不纯部分(解释器)。这样做有几个重要的优点。纯函数部分易于测试(测试纯函数很容易),纯函数的参照透明性使您易于在本地对代码进行推理,从而使整个开发过程的bug更少且生产率更高。它还提供了处理传统上模糊的防御性代码的优雅方法。
那么在功能界实现副作用的常见方法是什么?如前所述,使用值表示它们,然后编写解释这些值的代码。在这些博客文章系列中可以找到有关整个过程的非常好的说明。