web-routes-mtl (empty) → 0.19
raw patch · 3 files changed
+61/−0 lines, 3 filesdep +basedep +mtldep +web-routessetup-changed
Dependencies added: base, mtl, web-routes
Files
- Setup.hs +2/−0
- Web/Routes/MTL.hs +41/−0
- web-routes-mtl.cabal +18/−0
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Web/Routes/MTL.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleInstances, TypeFamilies, PackageImports, MultiParamTypeClasses, UndecidableInstances #-}+module Web.Routes.MTL where++import "mtl" Control.Monad.Trans (MonadTrans(lift), MonadIO(liftIO))+import Web.Routes.RouteT (RouteT(RouteT, unRouteT), liftRouteT, mapRouteT)+import Control.Monad.Reader(MonadReader(ask,local))+import Control.Monad.State(MonadState(get,put))+import Control.Monad.Writer(MonadWriter(listen, tell, pass))+import Control.Monad.Error (MonadError(throwError, catchError))+import Control.Monad.RWS (MonadRWS)+import Control.Monad.Cont(MonadCont(callCC))++instance MonadTrans (RouteT url) where+ lift = liftRouteT+ +instance (MonadIO m) => MonadIO (RouteT url m) where + liftIO = lift . liftIO++instance (MonadReader r m) => MonadReader r (RouteT url m) where+ ask = liftRouteT ask+ local f = mapRouteT (local f)+ +instance (MonadState s m) => MonadState s (RouteT url m) where + get = liftRouteT get+ put s = liftRouteT $ put s+ +instance (MonadWriter w m) => MonadWriter w (RouteT url m) where+ tell w = liftRouteT $ tell w+ listen m = mapRouteT listen m+ pass m = mapRouteT pass m+ +instance (MonadRWS r w s m) => MonadRWS r w s (RouteT url m) + +instance (MonadError e m) => MonadError e (RouteT url m) where+ throwError = liftRouteT . throwError+ catchError action handler = RouteT $ \f -> catchError (unRouteT action f) (\e -> unRouteT (handler e) f)+ +instance (MonadCont m) => MonadCont (RouteT url m) where+ callCC f = RouteT $ \url ->+ callCC $ \c ->+ unRouteT (f (\a -> RouteT $ \_ -> c a)) url
+ web-routes-mtl.cabal view
@@ -0,0 +1,18 @@+Name: web-routes-mtl+Version: 0.19+License: BSD3+Author: jeremy@seereason.com+Maintainer: partners@seereason.com+Bug-Reports: http://bugzilla.seereason.com/+Category: Web, Language+Synopsis: Extends web-routes with mtl-based MonadIO / MonadTrans RouteT instances+Cabal-Version: >= 1.6+Build-type: Simple++Library+ Build-Depends: base >= 4 && < 5, mtl, web-routes >= 0.19+ Exposed-Modules: Web.Routes.MTL++source-repository head+ type: darcs+ location: http://src.seereason.com/web-routes/