scala - 为什么println被认为是不纯函数?

标签 scala functional-programming pure-function

我正在阅读Scala中的编程书籍,据说:

... in this case , its side effect is printing to the standard output stream.



而且我看不到副作用在哪里,因为对于相同的输入,println将输出相同的输出(我认为)
更新
例如,任何时候我们调用:
println(5)

它会打印 5 ,我看不到调用println(5)会打印5以外的值的情况!

最佳答案

您可以通过将表达式替换为其结果来判断表达式是否有副作用。如果程序改变了含义,那会有副作用。例如,

println(5)

是一个不同的程序
()

也就是说,副作用是在评估表达式的结果中未进行编码的任何可观察到的效果。这里的结果是(),但是该值中没有任何东西可以编码5现在已经出现在屏幕上的事实。

关于scala - 为什么println被认为是不纯函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403306/

相关文章:

java - Akka 使用Java远程连接

function - Haskell:应用翻转两次(翻转类型)

haskell - Haskell 中的 print 是纯函数吗?

javascript - 什么是 JavaScript 中不纯函数的例子

scala - 这不是尾递归风格的代码吗?

mysql - Play框架-通过URL中的参数将数据保存到数据库

scala - Scala 中的合并选项

parsing - Elm 是否有相当于 Haskell 的 "Read"

asynchronous - F#- AsyncSeq - 如何返回列表中的值

javascript - 调用 Math.random() 的函数是纯函数吗?