AERN-Net-0.2.0: src/Control/ERNet/Foundations/Event/Logger.hs
{-|
Module : Control.ERNet.Foundations.Event.Logger
Description : processes and channels within networks
Copyright : (c) Michal Konecny
License : BSD3
Maintainer : mik@konecny.aow.cz
Stability : experimental
Portability : portable
Abstraction of an event logger in the IO monad.
To be imported qualified, usually with the prefix LG.
-}
module Control.ERNet.Foundations.Event.Logger where
import Control.ERNet.Foundations.Event
class Logger lg where
new :: IO lg
addEvent :: lg -> ERNetEvent -> IO ()
emptyAndDo :: lg -> (ERNetEvent -> IO a) -> IO ()
emptyAndGetEvents :: lg -> IO ([ERNetEvent])
putLogWhileRunning logger =
emptyAndDo logger (putStrLn . show)
putCompleteLog logger =
do
events <- emptyAndGetEvents logger
putStrLn $ unlines $ map show events