-- | Haskell 1.2 Dialogue I/O, -- extended for Fudgets with Xlib calls, network sockets, etc module DialogueIO(Dialogue(..), dialogueToIO, Request(..), Response(..), IOError(..), SigAct(..)) where import Prelude hiding (IOError) import P_IO_data import DoRequest import Control.Concurrent.Chan -- | Included just to illustrate that it is possible to convert a Dialogue -- IO function to a monadic IO function. The implementation relies on -- 'getChanContents' to construct the lazy list of responses needed by -- the dialogue IO function. (See also the functions 'doRequest' and -- 'Fudgets.fudlogue'.) dialogueToIO :: Dialogue -> IO () dialogueToIO main = do st <- initXCall respchan <- newChan let doReq req = writeChan respchan =<< doRequest st req mapM_ doReq . main =<< getChanContents respchan