Что означает "эффект" в "скаляр-эффекте"
Я вижу scalaz
имеет модуль scalaz-effect
:
scalaz-effect: структуры данных для представления и составления эффектов ввода-вывода в системе типов.
Я не совсем уверен, что делает effect
значит здесь. Это особая концепция? Или просто effect
в side-effect
?
1 ответ
Эффекты и побочные эффекты разные вещи.
Эффекты - это чистые выражения, которые описывают взаимодействия с внешним миром, но на самом деле не выполняют эти взаимодействия. Следовательно, эффекты являются относительно прозрачными. Например, IO.putStrLn("Hello, world")
это эффект.
Побочные эффекты - это наблюдаемые взаимодействия с внешним миром, которые происходят, когда интерпретатор запускает эффекты. Например, чтобы сделать наш IO
Пример выполнения побочных эффектов, мы должны запустить метод unsafePerformIO
в теме:
IO.putStrLn("Hello, world").unsafePerformIO()
Без unsafePerformIO
наше выражение типа IO[Unit]
это просто чистое выражение (как 5 + 8
или же "abc"
).