Purely functional I/O in Java using the Free monad