@@ -12,28 +12,30 @@ module Duct.Threads
1212 )
1313where
1414
15−import Control.Applicative ((<|>))
16−import Control.Concurrent
17− (ThreadId, forkIO, myThreadId, threadDelay, killThread)
18−import Control.Concurrent.STM
19− (TChan, atomically, newTChan, readTChan, tryReadTChan, writeTChan)
20−import Control.Exception (SomeException(..), ErrorCall(..), catch)
21−import qualified Control.Exception.Lifted as EL
22−import Data.Dynamic (Typeable)
23−import Data.IORef
24− (IORef, atomicModifyIORef, readIORef, writeIORef, modifyIORef,
25− newIORef)
26−import Data.List (delete)
27−import Data.Maybe (fromJust)
28−import Control.Monad.IO.Class (MonadIO(..))
29−import Control.Monad.State
30− (StateT, get, gets, modify, put, runStateT, when)
31−import Control.Monad.Trans.Class (MonadTrans(lift))
32−import Control.Monad.Trans.Control (MonadBaseControl, liftBaseWith)
33−import Unsafe.Coerce (unsafeCoerce)
34−
35−import Duct.AsyncT
36−import Duct.Event
15+import Control.Applicative ((<|>))
16+import Control.Concurrent (ThreadId, forkIO, killThread,
17+ myThreadId, threadDelay)
18+import Control.Concurrent.STM (TChan, atomically, newTChan,
19+ readTChan, tryReadTChan,
20+ writeTChan)
21+import Control.Exception (ErrorCall (..),
22+ SomeException (..), catch)
23+import qualified Control.Exception.Lifted as EL
24+import Control.Monad.IO.Class (MonadIO (..))
25+import Control.Monad.State (StateT, get, gets, modify, put,
26+ runStateT, when)
27+import Control.Monad.Trans.Class (MonadTrans (lift))
28+import Control.Monad.Trans.Control (MonadBaseControl, liftBaseWith)
29+import Data.Dynamic (Typeable)
30+import Data.IORef (IORef, atomicModifyIORef,
31+ modifyIORef, newIORef, readIORef,
32+ writeIORef)
33+import Data.List (delete)
34+import Data.Maybe (fromJust)
35+import Unsafe.Coerce (unsafeCoerce)
36+
37+import Duct.AsyncT
38+import Duct.Event
3739
3840------------------------------------------------------------------------------
3941-- Utilities