module SizedIO.Console where open import Level using () renaming (zero to lzero) open import Size open import NativeIO open import SizedIO.Base data ConsoleCommand : Set where putStrLn : String → ConsoleCommand getLine : ConsoleCommand ConsoleResponse : ConsoleCommand → Set ConsoleResponse (putStrLn s) = Unit ConsoleResponse getLine = String consoleI : IOInterface Command consoleI = ConsoleCommand Response consoleI = ConsoleResponse IOConsole : Size → Set → Set IOConsole i = IO consoleI i IOConsole+ : Size → Set → Set IOConsole+ i = IO+ consoleI i translateIOConsoleLocal : (c : ConsoleCommand) → NativeIO (ConsoleResponse c) translateIOConsoleLocal (putStrLn s) = nativePutStrLn s translateIOConsoleLocal getLine = nativeGetLine translateIOConsole : {A : Set} → IOConsole ∞ A → NativeIO A translateIOConsole = translateIO translateIOConsoleLocal main : NativeIO Unit main = nativePutStrLn "Console"