{-# LANGUAGE MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances #-} module Net.IO(module Net) where import qualified Control.Concurrent as IO import Data.IORef import Net.Concurrent as Net instance ForkIO IO where fork :: IO () -> IO ThreadId fork = IO () -> IO ThreadId IO.forkIO kill :: ThreadId -> IO () kill = ThreadId -> IO () IO.killThread instance DelayIO IO where delay :: Int -> IO () delay = Int -> IO () IO.threadDelay instance ChannelIO IO.Chan IO where newChan :: forall a. IO (Chan a) newChan = IO (Chan a) forall a. IO (Chan a) IO.newChan readChan :: forall a. Chan a -> IO a readChan = Chan a -> IO a forall a. Chan a -> IO a IO.readChan writeChan :: forall a. Chan a -> a -> IO () writeChan = Chan a -> a -> IO () forall a. Chan a -> a -> IO () IO.writeChan instance MVarIO IO.MVar IO where newEmptyMVar :: forall a. IO (MVar a) newEmptyMVar = IO (MVar a) forall a. IO (MVar a) IO.newEmptyMVar newMVar :: forall a. a -> IO (MVar a) newMVar = a -> IO (MVar a) forall a. a -> IO (MVar a) IO.newMVar putMVar :: forall a. MVar a -> a -> IO () putMVar = MVar a -> a -> IO () forall a. MVar a -> a -> IO () IO.putMVar takeMVar :: forall a. MVar a -> IO a takeMVar = MVar a -> IO a forall a. MVar a -> IO a IO.takeMVar readMVar :: forall a. MVar a -> IO a readMVar = MVar a -> IO a forall a. MVar a -> IO a IO.readMVar instance RefIO IORef IO where newRef :: forall a. a -> IO (IORef a) newRef = a -> IO (IORef a) forall a. a -> IO (IORef a) newIORef readRef :: forall a. IORef a -> IO a readRef = IORef a -> IO a forall a. IORef a -> IO a readIORef writeRef :: forall a. IORef a -> a -> IO () writeRef = IORef a -> a -> IO () forall a. IORef a -> a -> IO () writeIORef