IO Monad vs Reader Monad

Интересно, есть ли связь между IO Monad и Read Monad?

Может ли окружение в монаде Reader быть эффектом? Если да, то как ZIO или Cats IO, скалярные эффекты работают с принципами Reader Monad?

1 ответ

Решение

Окружающая среда в Reader обычно это не эффект - это не обязательно.

Чтобы понять почему, сначала нужно понять, что Reader монада это абстракция над функциями A => B, где A это какая-то среда.

В общем, если у вас есть эффект F[A], Вы всегда можете map значение с использованием Reader"s apply - функция, верно?

За cats-effect, Reader просто определяется как Kleisli (абстракция над функциями A => F[B]) с участием F[_] определяется как type F[A] = A, Kleisli предоставляет все, что вам нужно с точки зрения композиции, поэтому Readerбыли определены как подмножество Kleislis. Вы можете прочитать больше об этом здесь.

За ZIO, все выглядит немного иначе.

Взгляните на определение: ZIO[R, E, A], Эти три параметра типа описывают среду (R), тип ошибки (E) и тип результата (A).

Это значит, что ZIO это уже комбинация IO а также Reader монады. В ZIO, вы можете получить доступ к среде, используя accessфункция.

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