web-routes 0.23.4 → 0.24.1
raw patch · 2 files changed
+42/−2 lines, 2 filesdep +mtlPVP ok
version bump matches the API change (PVP)
Dependencies added: mtl
API changes (from Hackage documentation)
+ Web.Routes.RouteT: instance MonadCont m => MonadCont (RouteT url m)
+ Web.Routes.RouteT: instance MonadError e m => MonadError e (RouteT url m)
+ Web.Routes.RouteT: instance MonadIO m => MonadIO (RouteT url m)
+ Web.Routes.RouteT: instance MonadRWS r w s m => MonadRWS r w s (RouteT url m)
+ Web.Routes.RouteT: instance MonadReader r m => MonadReader r (RouteT url m)
+ Web.Routes.RouteT: instance MonadState s m => MonadState s (RouteT url m)
+ Web.Routes.RouteT: instance MonadTrans (RouteT url)
+ Web.Routes.RouteT: instance MonadWriter w m => MonadWriter w (RouteT url m)
Files
- Web/Routes/RouteT.hs +40/−1
- web-routes.cabal +2/−1
Web/Routes/RouteT.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleInstances, TypeFamilies, PackageImports, FlexibleContexts, UndecidableInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleInstances, TypeFamilies, PackageImports, FlexibleContexts, UndecidableInstances #-} ----------------------------------------------------------------------------- -- | -- Module : Web.Route.RouteT@@ -15,8 +15,16 @@ import Control.Applicative (Applicative((<*>), pure), Alternative((<|>), empty)) import Control.Monad (MonadPlus(mzero, mplus))+import Control.Monad.Cont(MonadCont(callCC))+import Control.Monad.Error (MonadError(throwError, catchError)) import Control.Monad.Fix (MonadFix(mfix))+import Control.Monad.Reader(MonadReader(ask,local))+import Control.Monad.RWS (MonadRWS)+import Control.Monad.State(MonadState(get,put))+import Control.Monad.Trans (MonadTrans(lift), MonadIO(liftIO))+import Control.Monad.Writer(MonadWriter(listen, tell, pass)) + -- * RouteT Monad Transformer type Link = String@@ -64,8 +72,39 @@ mzero = liftRouteT mzero m `mplus` n = RouteT $ \ url -> unRouteT m url `mplus` unRouteT n url +instance (MonadCont m) => MonadCont (RouteT url m) where+ callCC f = RouteT $ \url ->+ callCC $ \c ->+ unRouteT (f (\a -> RouteT $ \_ -> c a)) url++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 (MonadFix m) => MonadFix (RouteT url m) where mfix f = RouteT $ \ url -> mfix $ \ a -> unRouteT (f a) url++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 (MonadRWS r w s m) => MonadRWS r w s (RouteT url m) ++instance (MonadState s m) => MonadState s (RouteT url m) where + get = liftRouteT get+ put s = liftRouteT $ put s++instance MonadTrans (RouteT url) where+ lift = liftRouteT++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+ class ShowURL m where type URL m
web-routes.cabal view
@@ -1,5 +1,5 @@ Name: web-routes-Version: 0.23.4+Version: 0.24.1 License: BSD3 License-File: LICENSE Author: jeremy@seereason.com@@ -15,6 +15,7 @@ Build-Depends: base >= 4 && < 5, parsec >= 2 && <4, bytestring >= 0.9 && < 0.10,+ mtl, network >= 2.2 && < 2.4, utf8-string >= 0.3 && < 0.4 Exposed-Modules: Web.Routes