@@ -27,6 +27,17 @@ data CGI : Set -> Set where
27getAction : CGI a -> CGIInfo -> IO (a, CGIInfo)
27getAction : CGI a -> CGIInfo -> IO (a, CGIInfo)
28getAction (MkCGI act) = act
28getAction (MkCGI act) = act
30+instance Functor CGI where
31+ fmap f (MkCGI c) = MkCGI (\s => do (a, i) <- c s
34+instance Applicative CGI where
35+ pure v = MkCGI (\s => return (v, s))
37+ (MkCGI a) <$> (MkCGI b) = MkCGI (\s => do (f, i) <- a s
30instance Monad CGI where {
41instance Monad CGI where {
31 (>>=) (MkCGI f) k = MkCGI (\s => do v <- f s
42 (>>=) (MkCGI f) k = MkCGI (\s => do v <- f s
32 getAction (k (fst v)) (snd v))
43 getAction (k (fst v)) (snd v))