Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 状态变量从来不是函数的参数,对吗?(如何设计程序)_Variables_Functional Programming_Global_State - Fatal编程技术网

Variables 状态变量从来不是函数的参数,对吗?(如何设计程序)

Variables 状态变量从来不是函数的参数,对吗?(如何设计程序),variables,functional-programming,global,state,Variables,Functional Programming,Global,State,在, 我发现这个警告: 警告:状态变量永远不是函数的参数。 但就我以前所听说的,在函数编程中,如果函数引用状态变量,函数就会被破坏。它们将不再是纯函数。他们将很难测试,做不可预知的工作,无法记忆。。。状态变量也应该作为参数传递,而不仅仅是一些全局常量 所以我想知道 HTDP是否认为有什么问题 在一些函数式编程实践中,是否允许使用全局状态变量?或 我有错误的想法 提前谢谢 免责声明:我非常喜欢和尊重这本书,学到了很多东西。事实上,我想向我的朋友(如果有的话)传播关于这本书的好话。所以不要弄错。

在,

我发现这个警告:

警告:状态变量永远不是函数的参数。

但就我以前所听说的,在函数编程中,如果函数引用状态变量,函数就会被破坏。它们将不再是纯函数。他们将很难测试,做不可预知的工作,无法记忆。。。状态变量也应该作为参数传递,而不仅仅是一些全局常量

所以我想知道

  • HTDP是否认为有什么问题
  • 在一些函数式编程实践中,是否允许使用全局状态变量?或
  • 我有错误的想法
提前谢谢


免责声明:我非常喜欢和尊重这本书,学到了很多东西。事实上,我想向我的朋友(如果有的话)传播关于这本书的好话。所以不要弄错。

我不认为有任何东西与您所听到的函数式编程以及您链接的章节中所写的内容不兼容。然而,您在这里将两个概念混为一谈:函数程序中可变状态的存在(纯度问题)与求值顺序,以及对可用于写东西的语法的限制

考虑一下:如果您使用的是一种急切的求值策略,那么传递一个他们在那一章中描述的“状态变量”将产生取消引用的效果,并且您将得到变量的值作为函数参数。类似地,如果将变量作为参数绑定到函数,则每次调用都会获得不同的内存位。这里有许多不同的选择。某些语言允许您将引用作为值传递,这一事实并不普遍


因此,它们实际上只是描述全局变量(或从某个父范围访问的变量),从本质上讲,这些变量不需要作为参数传递给函数。如果特定语言允许通过引用传递,这可能不是一个明确的区别。

概念性软件开发问题(即关于代码的特定问题)更适合于哦,我不知道。谢谢你注意到这一点。我将从现在开始尝试该网站。:)我用了太多Clojure,所以没有考虑价值观的复制问题。谢谢