on master help sign in
Applicative and Functor instances for CGI.
commit09615d5f1c9778546d59015c9b909e21fac1a18a authorstartling <tdixon51793@gmail.com> dateMon 19 Nov 2012, 13:27 (14 years ago) parentcb5da0a
1 file changed+11
lib/Network/Cgi.idr+11
lib/Network/Cgi.idr+11
@@ -27,6 +27,17 @@ data CGI : Set -> Set where
2727getAction : CGI a -> CGIInfo -> IO (a, CGIInfo)
2828getAction (MkCGI act) = act
2929
30+instance Functor CGI where
31+ fmap f (MkCGI c) = MkCGI (\s => do (a, i) <- c s
32+ return (f a, i))
33+
34+instance Applicative CGI where
35+ pure v = MkCGI (\s => return (v, s))
36+
37+ (MkCGI a) <$> (MkCGI b) = MkCGI (\s => do (f, i) <- a s
38+ (c, j) <- b i
39+ return (f c, j))
40+
3041instance Monad CGI where {
3142 (>>=) (MkCGI f) k = MkCGI (\s => do v <- f s
3243 getAction (k (fst v)) (snd v))