packages feed

minioperational 0.4.5 → 0.4.6

raw patch · 2 files changed

+82/−80 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Control.Monad.Operational.Class: instance t :! m => t :! ExceptT e m
- Control.Monad.Operational.Class: singleton :: :! t m => t a -> m a
+ Control.Monad.Operational.Class: singleton :: (:!) t m => t a -> m a

Files

Control/Monad/Operational/Class.hs view
@@ -1,80 +1,82 @@-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE CPP #-}--------------------------------------------------------------------------------- |--- Module      :  Control.Monad.Operational.Class--- Copyright   :  (C) 2012-2013 Fumiaki Kinoshita--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Fumiaki Kinsohita <fumiexcel@gmail.com>--- Stability   :  experimental--- Portability :  non-portable------ A class for operational monads------------------------------------------------------------------------------module Control.Monad.Operational.Class ((:!)(..)) where--import Control.Monad.Trans.Reader-import qualified Control.Monad.Trans.State.Strict as Strict-import qualified Control.Monad.Trans.State.Lazy as Lazy-import qualified Control.Monad.Trans.Writer.Strict as Strict-import qualified Control.Monad.Trans.Writer.Lazy as Lazy-import qualified Control.Monad.Trans.RWS.Strict as Strict-import qualified Control.Monad.Trans.RWS.Lazy as Lazy-import Control.Monad.Trans.Cont-import Control.Monad.Trans.Maybe-import Control.Monad.Trans.List-import Control.Monad.Trans.Error-import Control.Monad.Trans.Except-import Control.Monad.Trans.Identity-import Control.Monad.Trans.Class-import Data.Monoid--class Monad m => t :! m | m -> t where-  -- | Construct an operational action from a single imperative.-  singleton :: t a -> m a--instance (t :! m) => t :! ReaderT e m where-  singleton = lift . singleton--instance (t :! m) => t :! Lazy.StateT s m where-  singleton = lift . singleton--instance (t :! m) => t :! Strict.StateT s m where-  singleton = lift . singleton--instance (t :! m) => t :! ContT r m where-  singleton = lift . singleton--instance (t :! m, Monoid w) => t :! Lazy.WriterT w m where-  singleton = lift . singleton--instance (t :! m, Monoid w) => t :! Strict.WriterT w m where-  singleton = lift . singleton--instance (t :! m, Monoid w) => t :! Strict.RWST r w s m where-  singleton = lift . singleton--instance (t :! m, Monoid w) => t :! Lazy.RWST r w s m where-  singleton = lift . singleton--instance (t :! m) => t :! MaybeT m where-  singleton = lift . singleton--instance (t :! m) => t :! IdentityT m where-  singleton = lift . singleton--instance (t :! m) => t :! ListT m where-  singleton = lift . singleton--instance (t :! m, Error e) => t :! ErrorT e m where-  singleton = lift . singleton--#if MIN_VERSION_transformers(0,4,0)-instance (t :! m) => t :! ExceptT e m where-  singleton = lift . singleton+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE CPP #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Monad.Operational.Class
+-- Copyright   :  (C) 2012-2013 Fumiaki Kinoshita
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  Fumiaki Kinsohita <fumiexcel@gmail.com>
+-- Stability   :  experimental
+-- Portability :  non-portable
+--
+-- A class for operational monads
+----------------------------------------------------------------------------
+module Control.Monad.Operational.Class ((:!)(..)) where
+
+import Control.Monad.Trans.Reader
+import qualified Control.Monad.Trans.State.Strict as Strict
+import qualified Control.Monad.Trans.State.Lazy as Lazy
+import qualified Control.Monad.Trans.Writer.Strict as Strict
+import qualified Control.Monad.Trans.Writer.Lazy as Lazy
+import qualified Control.Monad.Trans.RWS.Strict as Strict
+import qualified Control.Monad.Trans.RWS.Lazy as Lazy
+import Control.Monad.Trans.Cont
+import Control.Monad.Trans.Maybe
+import Control.Monad.Trans.List
+import Control.Monad.Trans.Error
+#if MIN_VERSION_transformers(0,4,0)
+import Control.Monad.Trans.Except
+#endif
+import Control.Monad.Trans.Identity
+import Control.Monad.Trans.Class
+import Data.Monoid
+
+class Monad m => t :! m | m -> t where
+  -- | Construct an operational action from a single imperative.
+  singleton :: t a -> m a
+
+instance (t :! m) => t :! ReaderT e m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! Lazy.StateT s m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! Strict.StateT s m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! ContT r m where
+  singleton = lift . singleton
+
+instance (t :! m, Monoid w) => t :! Lazy.WriterT w m where
+  singleton = lift . singleton
+
+instance (t :! m, Monoid w) => t :! Strict.WriterT w m where
+  singleton = lift . singleton
+
+instance (t :! m, Monoid w) => t :! Strict.RWST r w s m where
+  singleton = lift . singleton
+
+instance (t :! m, Monoid w) => t :! Lazy.RWST r w s m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! MaybeT m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! IdentityT m where
+  singleton = lift . singleton
+
+instance (t :! m) => t :! ListT m where
+  singleton = lift . singleton
+
+instance (t :! m, Error e) => t :! ErrorT e m where
+  singleton = lift . singleton
+
+#if MIN_VERSION_transformers(0,4,0)
+instance (t :! m) => t :! ExceptT e m where
+  singleton = lift . singleton
 #endif
minioperational.cabal view
@@ -1,5 +1,5 @@ name:                minioperational
-version:             0.4.5
+version:             0.4.6
 synopsis:            fast and simple operational monad
 description:         This package provides tiny implementation of operational monad.
 homepage:            https://github.com/fumieval/minioperational