packages feed

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 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/