packages feed

minioperational 0.4.8.1 → 0.4.9

raw patch · 3 files changed

+32/−27 lines, 3 filesdep +extensibledep +mtldep −clean-unionsdep ~elevator

Dependencies added: extensible, mtl

Dependencies removed: clean-unions

Dependency ranges changed: elevator

Files

Control/Monad/Operational/Mini.hs view
@@ -21,7 +21,7 @@ 
 import Control.Monad.Operational.Class
 import Control.Monad.Operational.TH
-import Data.OpenUnion1.Clean
+import Data.Extensible
 import Control.Elevator
 import Control.Applicative
 import Data.Functor.Identity
@@ -51,8 +51,11 @@ cloneProgram (Program m) = m return ((>>=) . elevate)
 
 instance Tower (Program t) where
-    type Floors (Program t) = t :> ReifiedProgram t :> Identity :> Empty
-    toLoft = (\t -> Program $ \p i -> i t p) ||> fromReified ||> pure . runIdentity ||> exhaust
+    type Floors (Program t) = '[t, ReifiedProgram t, Identity]
+    stairs = (\t -> Program $ \p i -> i t p)
+        `rung` fromReified
+        `rung` pure . runIdentity
+        `rung` Nil
 
 -- | Reified version of 'Program'. It is useful for testing.
 data ReifiedProgram t a where
@@ -83,5 +86,8 @@     (t :>>= m) >>= k = t :>>= (>>= k) . m
 
 instance Tower (ReifiedProgram t) where
-    type Floors (ReifiedProgram t) = t :> Program t :> Identity :> Empty
-    toLoft = (:>>= Return) ||> (\(Program m) -> m Return (:>>=)) ||> pure . runIdentity ||> exhaust+    type Floors (ReifiedProgram t) = '[t, Program t, Identity]
+    stairs = (:>>= Return)
+        `rung` (\(Program m) -> m Return (:>>=))
+        `rung` pure . runIdentity
+        `rung` Nil
Control/Monad/Trans/Operational/Mini.hs view
@@ -32,7 +32,6 @@ import Control.Applicative import Control.Monad.Trans.Class import Control.Elevator-import Data.OpenUnion1.Clean import qualified Control.Monad.Operational.Mini as P  newtype ProgramT t m a = ProgramT@@ -61,15 +60,15 @@  instance (Monad m, Tower m) => Tower (ProgramT t m) where     type Floors (ProgramT t m) = t-      :> ReifiedProgramT t m-      :> P.Program t-      :> P.ReifiedProgram t-      :> Floors1 m-    toLoft = (\t -> ProgramT $ \p _ i -> i t p)-      ||> fromReifiedT-      ||> (\(P.Program m) -> ProgramT $ \r _ b -> m r b) -      ||> (\(P.Program m) -> ProgramT $ \r _ b -> m r b) . P.fromReified-      ||> lift . toLoft1+      ': ReifiedProgramT t m+      ': P.Program t+      ': P.ReifiedProgram t+      ': Floors1 m+    stairs = (\t -> ProgramT $ \p _ i -> i t p)+      `rung` fromReifiedT+      `rung` (\(P.Program m) -> ProgramT $ \r _ b -> m r b)+      `rung` (\(P.Program m) -> ProgramT $ \r _ b -> m r b) . P.fromReified+      `rung` liftGondolas  instance MonadTrans (ProgramT t) where     lift m = ProgramT $ \p l _ -> l (liftM p m)@@ -120,14 +119,14 @@  instance (Monad m, Tower m) => Tower (ReifiedProgramT t m) where     type Floors (ReifiedProgramT t m) = t-      :> ProgramT t m-      :> P.Program t-      :> P.ReifiedProgram t-      :> Floors1 m-    toLoft = (:>>= Return)-      ||> (\(ProgramT m) -> m Return (flip Lift id) (:>>=))-      ||> (\(P.Program m) -> m Return (:>>=))-      ||> (\(P.Program m) -> m Return (:>>=)) . P.fromReified-      ||> lift . toLoft1+      ': ProgramT t m+      ': P.Program t+      ': P.ReifiedProgram t+      ': Floors1 m+    stairs = (:>>= Return)+      `rung` (\(ProgramT m) -> m Return (flip Lift id) (:>>=))+      `rung` (\(P.Program m) -> m Return (:>>=))+      `rung` (\(P.Program m) -> m Return (:>>=)) . P.fromReified+      `rung` liftGondolas  instance MonadTrans (ReifiedProgramT t) where lift = flip Lift Return
minioperational.cabal view
@@ -1,5 +1,5 @@ name:                minioperational
-version:             0.4.8.1
+version:             0.4.9
 synopsis:            fast and simple operational monad
 description:         This package provides tiny implementation of operational monad.
 homepage:            https://github.com/fumieval/minioperational
@@ -23,5 +23,5 @@     , Control.Monad.Trans.Operational.Mini
     , Control.Monad.Operational.Class
     , Control.Monad.Operational.TH
-  -- other-modules:       
-  build-depends:       base ==4.*, transformers >= 0.2.0 && <0.6, template-haskell, containers, elevator, clean-unions+  -- other-modules:
+  build-depends:       base ==4.*, transformers >= 0.2.0 && <0.6, template-haskell, containers, elevator >= 0.2 && <0.3, extensible >= 0.2.6 && <3, mtl >= 2.0