我看到scalaz
有一个模块scalaz-effect
:
scalaz-effect: Data structures to represent and compose IO effects in the type system.
我不太确定 effect
在这里意味着什么。这是一个特殊的概念吗?或者只是副作用
中的效果
?
最佳答案
效果和副作用是不同的事情。
效果是描述与外界交互的纯粹表达式,但实际上并不执行该交互。因此,效果是参照透明的。例如,IO.putStrLn("Hello, world")
就是一个效果。
副作用是可观察到的与外界的交互,这些交互是在解释器运行效果时发生的。例如,要使我们的 IO
示例执行副作用,我们应该在其上运行方法 unsafePerformIO
:
IO.putStrLn("Hello, world").unsafePerformIO()
如果没有 unsafePerformIO
,我们的 IO[Unit]
类型的表达式只是一个纯表达式(例如 5 + 8
或 "abc “
)。
关于scala - `effect` 中的 `scalaz-effect` 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258649/