packages feed

fudgets-0.18.4: hsrc/ghc-dialogue/DialogueIO.hs

-- | Haskell 1.2 Dialogue I/O,
-- extended for Fudgets with Xlib calls, network sockets, etc
module DialogueIO(Request(..), Response(..), IOError(..)
       , Dialogue(..), SigAct(..) , dialogueToIO
       --, module _LibDialogue
	) 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 f =
  do st <- initXCall
     respchan <- newChan
     reqs <- f `fmap` getChanContents respchan
     let doReq req = writeChan respchan =<< doRequest st req
     mapM_ doReq reqs