@@ -0,0 +1,377 @@
+/** Contains actions that, in Haskell, would only be allowed to live inside the IO monad */%0Apublic final class IO %7B%0A  public static void putStr  (Thunk%3CString%3E str) %7B%0A    System.out.print  (str.eval());%0A  %7D%0A  public static void putStrLn(Thunk%3CString%3E str) %7B%0A    System.out.println(str.eval());%0A  %7D%0A%0A  public static %3CA%3E void print(Thunk%3CA%3E x) %7B%0A    putStrLn(Str.show(x));%0A  %7D%0A%7D%0A

add the missing IO.java