Ticket #4460: Main.hs

File Main.hs, 731 bytes (added by igloo, 3 years ago)
Line 
1
2module Main (main) where
3
4import Control.Monad
5import Control.Monad.Trans
6import System.Console.Haskeline as Haskeline
7import System.IO
8
9main :: IO ()
10main = do
11    hSetBuffering stdout NoBuffering
12    hFlush stdout
13    hSetBuffering stdout NoBuffering
14    hSetBuffering stdin NoBuffering
15    runInputT defaultSettings runCommands
16    putStrLn "Leaving."
17
18nextInputLine :: InputT IO (Maybe String)
19nextInputLine = getInputLine "Prompt: "
20
21runCommands :: InputT IO ()
22runCommands = do
23    b <- runOneCommand
24    unless b $ runCommands
25
26runOneCommand :: InputT IO Bool
27runOneCommand = do
28  mb_cmd <- nextInputLine
29  case mb_cmd of
30    Nothing -> return True
31    Just c  -> do liftIO $ print ('C', c)
32                  return False
33