@@ -15,6 +15,13 @@ data ProcID msg = MkPID Ptr
1515data Process : (msgType : Set) -> Set -> Set where
1616 lift : IO a -> Process msg a
1717
18+instance Functor (Process msg) where
19+ fmap f (lift a) = lift (fmap f a)
20+
21+instance Applicative (Process msg) where
22+ pure = lift . return
23+ (lift f) <$> (lift a) = lift (f <$> a)
24+
1825instance Monad (Process msg) where
1926 return = lift . return
2027 (lift io) >>= k = lift (do x <- io