У меня вопрос по поводу IO
монады.Я открыл InputStream
и хочу использовать IO
для чтения из него.Вот пример:
def read(io: IO[Option[Array[Byte]]]): IO[Unit] = IO {
io.unsafeRunSync() match {
case Some(b) =>
//do some with b
read(io)
case None =>
()
}
}
Меня смущает то, что я несколько раз читал из одного и того же экземпляра IO
, изменяя его состояние.Это не похоже на ссылочный прозрачный метод.Это обычное явление или есть что-то более стиль FP?