@@ -0,0 +1,966 @@
+import me.elrod.pureio.*;%0Aimport java.util.function.Function;%0A%0Apublic class ConsoleFileCoproductExample %7B%0A    public static void main(String%5B%5D args) %7B%0A        ConsoleFileFree%3CLinkedList%3CString%3E%3E first =%0A            ConsoleFileLib.putStrLn(%22What is your name?%22).liftF()%0A            .flatMap(x -%3E ConsoleFileLib.readLine().liftF()%0A                     .flatMap(name -%3E ConsoleFileLib.putStrLn(%22Hi there, %22 + name + %22! Give me a file to read:%22).liftF()%0A                              .flatMap(u1 -%3E ConsoleFileLib.readLine().liftF()%0A                                       .flatMap(fname -%3E ConsoleFileLib.readLines(fname).liftF()))));%0A%0A        // This doesn't have to be separate, but why not?%0A        ConsoleFileFree%3CLinkedList%3CUnit%3E%3E second =%0A            first.flatMap(%0A                x -%3E ConsoleFileFree.mapM(%0A                    y -%3E ConsoleFileLib.putStrLn(y).liftF(),%0A                    x));%0A%0A        UnsafePerformIO.unsafePerformConsoleFileIO(second);%0A    %7D%0A%7D%0A

add an example of ConsoleFileCoproduct :D