@@ -15,6 +15,13 @@ data ProcID msg = MkPID Ptr
15data Process : (msgType : Set) -> Set -> Set where
15data Process : (msgType : Set) -> Set -> Set where
16 lift : IO a -> Process msg a
16 lift : IO a -> Process msg a
18+instance Functor (Process msg) where
19+ fmap f (lift a) = lift (fmap f a)
21+instance Applicative (Process msg) where
23+ (lift f) <$> (lift a) = lift (f <$> a)
18instance Monad (Process msg) where
25instance Monad (Process msg) where
19 return = lift . return
26 return = lift . return
20 (lift io) >>= k = lift (do x <- io
27 (lift io) >>= k = lift (do x <- io