module Haskell.Prim.IO where
open import Haskell.Prim
open import Haskell.Prim.Show
open import Haskell.Prim.String
postulate IO : ∀{a} → Type a → Type a
FilePath = String
postulate
-- Input functions
interact : (String → String) → IO ⊤
getContents : IO String
getLine : IO String
getChar : IO Char
-- Output functions
print : ⦃ Show a ⦄ → a → IO ⊤
putChar : Char → IO ⊤
putStr : String → IO ⊤
putStrLn : String → IO ⊤
-- Files
readFile : FilePath → IO String
writeFile : FilePath → String → IO ⊤
appendFile : FilePath → String → IO ⊤