interface FileIO : List Error -> TypewithFile : String -> Mode -> (IOError -> App e a) -> (File -> App e a) -> App e afGetStr : File -> App e StringfGetChars : File -> Int -> App e StringfGetChar : File -> App e CharfPutStr : File -> String -> App e ()fPutStrLn : File -> String -> App e ()fflush : File -> App e ()fEOF : File -> App e BoolwithFile : FileIO e => String -> Mode -> (IOError -> App e a) -> (File -> App e a) -> App e afGetStr : FileIO e => File -> App e StringfGetChars : FileIO e => File -> Int -> App e StringfGetChar : FileIO e => File -> App e CharfPutStr : FileIO e => File -> String -> App e ()fPutStrLn : FileIO e => File -> String -> App e ()fflush : FileIO e => File -> App e ()fEOF : FileIO e => File -> App e BoolreadFile : FileIO e => String -> App e StringwithFileIO : Has [PrimIO] e => App (IOError :: e) a -> (a -> App e b) -> (IOError -> App e b) -> App e b