.require(R.self)
SIO<Void, E, A> => SIO<R, E, A>
.provide(r)
SIO<R, E, A> => SIO<Void, E, A>
.constError(())
SIO<R, E, A> => SIO<R, Void, A>
.constError(e)
SIO<R, Void, A> => SIO<R, E, A>
.optional()
SIO<R, E, A> -> SIO<R, Never, A?>
.catch(a)
SIO<R, E, A> -> SIO<R, Never, A>
.result()
SIO<R, E, A> -> SIO<R, Never, Result<A, E>>
.mapError(absurd)
SIO<R, Never, A> -> SIO<R, E, A>
.discard
SIO<R, E, A> => SIO<R, E, Void>
.const(a)
SIO<R, E, Void> => SIO<R, E, A>
.map(absurd)
SIO<R, E, Never> => SIO<R, E, A>
{ r in sio.provide(r) }
SIO.fromFunc