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…
	
	Add table
		Add a link
		
	
		Reference in a new issue