import TestSample import Control.EventDriven import Control.Monad.Tools main :: IO () main = do runConfigNoEv myConfig runConfigEv myConfig runConfigNoEv :: Config -> IO () runConfigNoEv cfg = runLoop ( initV cfg ) ( output cfg ) ( input cfg ) ( kbind cfg ) ( ebind cfg ) >> return () runConfigEv :: Config -> IO () runConfigEv cfg = do talker <- getTalker ( initV cfg ) ( kbind cfg ) doWhile_ $ do ans <- input cfg >>= putEvent talker case ans of Goodbye -> return False ContainerIs _ n -> modifyContainer talker ( output cfg ) >> return True Answer a -> ebind cfg a >> return True _ -> return True noevdr :: IO () noevdr = runLoop 0 ( \n -> print n >> return n ) getLine keybind errbind >> return () evdr :: IO () evdr = do talker <- getTalker 0 keybind doWhile_ $ do ans <- getLine >>= putEvent talker case ans of Goodbye -> return False ContainerIs _ n -> do print n return True Answer NotCmd -> do putStrLn "no such command" return True _ -> return True ret <- getContainer talker print ret