From a2475d2337df6a91af2eb353d174f5202f1207b4 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Fri, 17 Jul 2020 23:41:03 +0100 Subject: Partially complete IO chapter exercises Inconveniently, I do not have the cipher code that I wrote from a previous chapter, and I'm not eager to reimplement it. TODO - Implement encrypt - Implement decrypt - Read all characters from STDIN --- .../io.hs | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 scratch/haskell-programming-from-first-principles/io.hs (limited to 'scratch') diff --git a/scratch/haskell-programming-from-first-principles/io.hs b/scratch/haskell-programming-from-first-principles/io.hs new file mode 100644 index 0000000000..1de8937fce --- /dev/null +++ b/scratch/haskell-programming-from-first-principles/io.hs @@ -0,0 +1,35 @@ +module IOScratch where + +import qualified System.Environment as SE +import qualified System.IO as SIO +-------------------------------------------------------------------------------- + +docs :: String +docs = "Pass -e to encrypt and -d to decrypt." + +encryptStdin :: IO () +encryptStdin = do + char <- SIO.hGetChar SIO.stdin + -- encrypt char + SIO.hPutStr SIO.stdout [char] + +decryptStdin :: IO () +decryptStdin = do + char <- SIO.hGetChar SIO.stdin + -- decrypt char + SIO.hPutStr SIO.stdout [char] + +main :: IO () +main = do + args <- SE.getArgs + case args of + [] -> + putStrLn $ "You did not pass enough arguments. " ++ docs + ["-e"] -> + encryptStdin + ["-d"] -> + decryptStdin + [x] -> + putStrLn $ "You passed an unsupported option: " ++ x ++ ". " ++ docs + _ -> + putStrLn $ "You passed too many arguments. " ++ docs -- cgit 1.4.1