clojure - Clojure中副作用的含义

标签 clojure side-effects

我在思考 Clojure 中副作用的含义。 Clojure 中的副作用到底是什么?谁能用一个例子来解释一下这一点?

最佳答案

任何编程语言的副作用都是所提供的参数和返回的结果之间没有直接关联的所有操作。

(+ 3 4)      ; ==> 7 (result is always a mapping between arguments and result. It will always be 7 no matte rhow many times you do it. 
(rand-int 4) ; ==> 0,1,2, or 3. You have no idea what it will produce next. 

第一个表达式是函数式的。您可以使用其结果创建所有不同的两个值的查找表,但您不会知道其中的差异。

对于同一参数,第二个可能会给出不同的结果。计算必须基于其他东西,比如内部状态,而不仅仅是参数。它有副作用。

程序中使用的典型副作用是 I/O 和对象突变。

关于clojure - Clojure中副作用的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899630/

相关文章:

clojure - Clojure 中有测试文字的函数吗?

clojure - leiningen 有多个主要类(class)

clojure - 从 Clojure Repl 和 Leiningen 运行测试

clojure - 关于 :refer, :use and :only in Clojure? 等预设关键字的了解

python - 在不运行Python包的情况下检查它的内容?

recursion - clojure - (另一个)带有循环/递归的 StackOverflow

c++ - C++ 中的副作用和可观察行为如何相关?

haskell - 为什么应用仿函数可以有副作用,但仿函数不能?

Haskell - 执行后打印跟踪

r - 如何获得应用功能产生副作用?