package fj.data; import fj.F; import fj.Unit; import java.io.IOException; /** * Created by MarkPerry on 9/06/2015. */ public final class IOW<A> implements IO<A> { private final IO<A> io; private IOW(IO<A> in) { io = in; } public static <A> IOW<A> lift(IO<A> io) { return new IOW<>(io); } @Override public A run() throws IOException { return io.run(); } public SafeIO<Validation<IOException, A>> safe() { return IOFunctions.toSafeValidation(io); } public <B> IOW<B> map(F<A, B> f) { return lift(IOFunctions.map(io, f)); } public <B> IOW<B> bind(F<A, IO<B>> f) { return lift(IOFunctions.bind(io, f)); } public <B> IOW<B> append(IO<B> iob) { return lift(IOFunctions.append(io, iob)); } public static IOW<LazyString> getContents() { return lift(() -> IOFunctions.getContents().run()); } public static IOW<Unit> interact(F<LazyString, LazyString> f) { return lift(() -> IOFunctions.interact(f).run()); } }