Что означает "эффект" в "скаляр-эффекте"

Я вижу 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").

Другие вопросы по тегам