Целесообразно ли выполнять IO :: unsafeRunSync на одном и том же экземпляре несколько раз? - PullRequest
0 голосов
/ 29 мая 2018

У меня вопрос по поводу 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?

...