blob: f660d0e51b0436fc9a568c3c31f7c9641b93757c [file] [edit]
open IO.FS
def usingIO {α} (x : IO α) : IO α := x
#eval usingIO do
let out ← IO.getStdout;
out.putStrLn "print stdout"
#eval usingIO do
let err ← IO.getStderr;
(err.putStr "print stderr" : IO Unit)
open IO
def test : IO Unit := do
FS.withFile "stdout1.txt" IO.FS.Mode.write $ fun h₁ => do
{ let h₂ ← FS.Handle.mk "stdout2.txt" IO.FS.Mode.write;
withStdout (Stream.ofHandle h₁) $ do
println "line 1";
tryCatch
( do
withStdout (Stream.ofHandle h₂) $ println "line 2";
throw $ IO.userError "my error" )
( fun e => println e );
println "line 3" };
println "line 4";
println "\n> stdout1.txt";
readFile "stdout1.txt" >>= print;
println "\n> stdout2.txt";
readFile "stdout2.txt" >>= print
#eval test