Skip to content

Commit

Permalink
Merge pull request #10 from aslatter/master
Browse files Browse the repository at this point in the history
Add instances for Applicative and Functor
  • Loading branch information
jepst committed Mar 14, 2012
2 parents 4dc5ac3 + 2b88b35 commit 60c8c83
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Remote/Process.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ module Remote.Process (
import qualified Prelude as Prelude import qualified Prelude as Prelude
import Prelude hiding (catch, id, init, last, lookup, pi) import Prelude hiding (catch, id, init, last, lookup, pi)


import Control.Applicative (Applicative(..))
import Control.Concurrent (forkIO,ThreadId,threadDelay) import Control.Concurrent (forkIO,ThreadId,threadDelay)
import Control.Concurrent.MVar (MVar,newMVar, newEmptyMVar,takeMVar,putMVar,modifyMVar,modifyMVar_,readMVar) import Control.Concurrent.MVar (MVar,newMVar, newEmptyMVar,takeMVar,putMVar,modifyMVar,modifyMVar_,readMVar)
import Control.Exception (ErrorCall(..),throwTo,bracket,try,Exception,throw,evaluate,finally,SomeException,catch) import Control.Exception (ErrorCall(..),throwTo,bracket,try,Exception,throw,evaluate,finally,SomeException,catch)
Expand Down Expand Up @@ -282,6 +283,14 @@ instance Monad ProcessM where
instance Functor ProcessM where instance Functor ProcessM where
fmap f v = ProcessM $ (\p -> (runProcessM v) p >>= (\x -> return $ fmap f x)) fmap f v = ProcessM $ (\p -> (runProcessM v) p >>= (\x -> return $ fmap f x))


instance Applicative ProcessM where
mf <*> mx =
ProcessM $ \p0 ->
runProcessM mf p0 >>= \(p1, f) ->
runProcessM mx p1 >>= \(p2, x) ->
return (p2, f x)
pure = return

instance MonadIO ProcessM where instance MonadIO ProcessM where
liftIO arg = ProcessM $ \pr -> (arg >>= (\x -> return (pr,x))) liftIO arg = ProcessM $ \pr -> (arg >>= (\x -> return (pr,x)))


Expand Down
15 changes: 15 additions & 0 deletions Remote/Task.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import System.Directory (renameFile)
import Data.Binary (Binary,get,put,putWord8,getWord8) import Data.Binary (Binary,get,put,putWord8,getWord8)
import Control.Exception (SomeException,Exception,throw) import Control.Exception (SomeException,Exception,throw)
import Data.Typeable (Typeable) import Data.Typeable (Typeable)
import Control.Applicative (Applicative(..))
import Control.Monad (liftM,when) import Control.Monad (liftM,when)
import Control.Monad.Trans (liftIO) import Control.Monad.Trans (liftIO)
import Control.Concurrent.MVar (MVar,modifyMVar,modifyMVar_,newMVar,newEmptyMVar,takeMVar,putMVar,readMVar,withMVar) import Control.Concurrent.MVar (MVar,modifyMVar,modifyMVar_,newMVar,newEmptyMVar,takeMVar,putMVar,readMVar,withMVar)
Expand Down Expand Up @@ -851,6 +852,20 @@ instance Monad TaskM where
return (ts'',a') return (ts'',a')
return x = TaskM $ \ts -> return $ (ts,x) return x = TaskM $ \ts -> return $ (ts,x)


instance Functor TaskM where
f `fmap` m =
TaskM $ \ts ->
runTaskM m ts >>= \(ts', x) ->
return (ts', f x)

instance Applicative TaskM where
mf <*> mx =
TaskM $ \ts ->
runTaskM mf ts >>= \(ts', f) ->
runTaskM mx ts' >>= \(ts'', x) ->
return (ts'', f x)
pure = return

lookupForwardedRedeemer :: PromiseId -> TaskM (Maybe ProcessId) lookupForwardedRedeemer :: PromiseId -> TaskM (Maybe ProcessId)
lookupForwardedRedeemer q = lookupForwardedRedeemer q =
TaskM $ \ts -> TaskM $ \ts ->
Expand Down

0 comments on commit 60c8c83

Please sign in to comment.