scala - `effect` 中的 `scalaz-effect` 是什么意思

标签 scala functional-programming effects scalaz

我看到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/

相关文章:

javascript - Typescript - 高阶函数类型

android - Android中的帧动画?

javascript - 为 jquery UI 对话框动画指定选项?

scala - 如何将两个RDD合并为一个RDD

scala - 匹配功能发生了什么?

mysql - jOOQ 为嵌套选择生成的 SQL 在 MySQL/MariaDB 中不起作用

scala - 学习 Scala 作为第一个 'functional' 语言?

javascript转换github api打卡数据

scala - 如何删除Scala集合中的尾随元素?

css - 使用 CSS2 制作折叠表行的方法?