Skip to content

Instantly share code, notes, and snippets.

@joseanpg
Created August 6, 2013 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joseanpg/6160867 to your computer and use it in GitHub Desktop.
Save joseanpg/6160867 to your computer and use it in GitHub Desktop.
import Control.Monad.State
type Interact a = StateT Int IO a
repl :: Interact ()
repl = forever $ do
val <- liftIO readLn
state <- get
liftIO $ putStr "Total: "
liftIO $ print (val + state)
put val
main = runStateT repl 0
--
import Data.IORef
import System.IO
import Control.Monad
hReadInt:: Handle -> IO Int
hReadInt h = do val <- hGetLine h
return $ read val
repl handle ioref = forever $ do
val <- hReadInt handle
state <- readIORef ioref
putStr "Total:"
print (val+state)
writeIORef ioref val
main = do handle <- openFile "input.txt" ReadMode
newIORef 5 >>= repl handle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment