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
This commit is contained in:
parent
ca06888a56
commit
a2475d2337
1 changed files with 35 additions and 0 deletions
35
scratch/haskell-programming-from-first-principles/io.hs
Normal file
35
scratch/haskell-programming-from-first-principles/io.hs
Normal file
|
@ -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
|
Loading…
Reference in a new issue