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