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 +11/−5
- Control/Monad/Trans/Operational/Mini.hs +18/−19
- minioperational.cabal +3/−3
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