我一直在思考Clojure中副作用的含义。 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和对象变异。
如何“在任何编程语言中,函数*的副作用*是除了返回结果之外的任何事情。”? – Thumbnail
@Thumbnail一切都有参数和返回值,而不仅仅是函数。例如。 Java String **类**是有效的,它的每一个**方法**都是有效的。原因是每个String对象都不提供任何改变其内部状态的方法。此外,方案没有功能,但程序。它与当然的功能相同,但使用术语“功能”时,您不会看到许多Scheme问题的答案。 – Sylwester
所以说,第一个表达式是纯函数,而第二个表达式有副作用?为什么'println'也被称为有副作用(我在某处读过......) – amirteymuri
- 1. 在Clojure中使序列副作用
- 2. Clojure - 副作用发生故障
- 3. clojure中的符号后点的含义
- 4. “alt!”的含义在clojure.core.async中的Clojure
- 5. 如何确定在clojure中的零的含义?
- 6. 自定义吸气剂副作用
- 7. 从用户数据创建Clojure关键字的安全含义?
- 8. LINQ的副作用
- 9. Fluxible的副作用?
- 10. TransactionScope是否适合在Entity Framework事务中包含副作用?
- 11. BX副作用?
- 12. 副作用
- 13. innerHTML副作用?
- 14. 副作用
- 15. MongoDB:mapReduce副作用
- 16. MVC副作用
- 17. Java:ArrayOutOfBounds副作用?
- 18. 副作用
- 19. Rails:包含相同过滤器两次的副作用
- 20. 动态sql不包含CommandType的副作用?
- 21. 在TortoiseHG的搜索中包含工作副本
- 22. Emacs clojure:定义
- 23. 替换+副作用
- 24. 外部副作用
- 25. IO作为副作用
- 26. ipv6迁移的副作用
- 27. C++宏的副作用
- 28. 的Python os.dup和副作用
- 29. zsh回声的副作用?
- 30. 摩卡的副作用
这很清楚,虽然它可能太宽泛。这当然不是特定于Clojure。 – Thumbnail