Ecmascript 6 应用程序是否可能仅由纯函数构建?

Ecmascript 6 应用程序是否可能仅由纯函数构建?,ecmascript-6,functional-programming,purely-functional,Ecmascript 6,Functional Programming,Purely Functional,正如标题所说,关于函数编程的一部分,我还没有看到任何人讨论或回答应用程序中不可能编写纯函数的领域。我觉得,如果依赖于实际应用程序无法控制的操作,那么用纯函数编写应用程序确实是不可能的 例如: 启动应用程序的用户的用户权限 计算机上的其他应用程序已在使用端口 硬盘驱动器已满 由于其他应用程序正在使用文件,无法写入文件 网络问题 这些只是我脑海中浮现的几个问题 我想相信,编写永远不可能是纯粹的代码应该以一种方式进行分组和编写,以最大限度地利用代码的其他部分来实现纯粹的功能状态。因此,问题是:应用

正如标题所说,关于函数编程的一部分,我还没有看到任何人讨论或回答应用程序中不可能编写纯函数的领域。我觉得,如果依赖于实际应用程序无法控制的操作,那么用纯函数编写应用程序确实是不可能的

例如:

  • 启动应用程序的用户的用户权限
  • 计算机上的其他应用程序已在使用端口
  • 硬盘驱动器已满
  • 由于其他应用程序正在使用文件,无法写入文件
  • 网络问题
这些只是我脑海中浮现的几个问题


我想相信,编写永远不可能是纯粹的代码应该以一种方式进行分组和编写,以最大限度地利用代码的其他部分来实现纯粹的功能状态。因此,问题是:应用程序是否可能仅由纯函数构建?如果不可能,有什么东西可以阻止这一点?我们将如何处理这些问题?

函数式编程不会消除异常。您必须以命令式的方式处理它们,但使用其他方式。应该以最大化代码的其他部分的方式进行分组和编写,以实现纯函数状态。您只需将任何不纯效果包装到函数中即可实现这一点,因为其主体仅根据需要进行评估,即惰性评估。现在,您可以推迟评估,从而将效果发布到应用程序的边缘。如果您的表达式已经完成并且只是关于延迟,则可以使用thunks
()=>…
。否则,使用任意算术的函数。每个效果的作用都不同,因此需要指定如何组合相应的函数。这就是作为函子、应用程序和monad类型类的一部分的组合子发挥作用的地方。