minioperational 0.4.8 → 0.4.8.1
raw patch · 3 files changed
+12/−11 lines, 3 files
Files
- Control/Monad/Operational/Mini.hs +6/−5
- Control/Monad/Trans/Operational/Mini.hs +5/−5
- minioperational.cabal +1/−1
Control/Monad/Operational/Mini.hs view
@@ -21,9 +21,10 @@ import Control.Monad.Operational.Class import Control.Monad.Operational.TH -import Control.Applicative import Data.OpenUnion1.Clean import Control.Elevator +import Control.Applicative +import Data.Functor.Identity infixl 1 :>>= @@ -50,8 +51,8 @@ cloneProgram (Program m) = m return ((>>=) . elevate) instance Tower (Program t) where - type Floors (Program t) = t :> ReifiedProgram t :> Empty - toLoft = (\t -> Program $ \p i -> i t p) ||> fromReified ||> exhaust + type Floors (Program t) = t :> ReifiedProgram t :> Identity :> Empty + toLoft = (\t -> Program $ \p i -> i t p) ||> fromReified ||> pure . runIdentity ||> exhaust -- | Reified version of 'Program'. It is useful for testing. data ReifiedProgram t a where @@ -82,5 +83,5 @@ (t :>>= m) >>= k = t :>>= (>>= k) . m instance Tower (ReifiedProgram t) where - type Floors (ReifiedProgram t) = t :> Program t :> Empty - toLoft = (:>>= Return) ||> cloneProgram ||> exhaust+ type Floors (ReifiedProgram t) = t :> Program t :> Identity :> Empty + toLoft = (:>>= Return) ||> (\(Program m) -> m Return (:>>=)) ||> pure . runIdentity ||> exhaust
Control/Monad/Trans/Operational/Mini.hs view
@@ -67,8 +67,8 @@ :> Floors1 m toLoft = (\t -> ProgramT $ \p _ i -> i t p) ||> fromReifiedT- ||> P.cloneProgram- ||> P.cloneProgram . P.fromReified+ ||> (\(P.Program m) -> ProgramT $ \r _ b -> m r b) + ||> (\(P.Program m) -> ProgramT $ \r _ b -> m r b) . P.fromReified ||> lift . toLoft1 instance MonadTrans (ProgramT t) where@@ -125,9 +125,9 @@ :> P.ReifiedProgram t :> Floors1 m toLoft = (:>>= Return)- ||> cloneProgramT- ||> P.cloneProgram- ||> P.cloneProgram . P.fromReified+ ||> (\(ProgramT m) -> m Return (flip Lift id) (:>>=))+ ||> (\(P.Program m) -> m Return (:>>=))+ ||> (\(P.Program m) -> m Return (:>>=)) . P.fromReified ||> lift . toLoft1 instance MonadTrans (ReifiedProgramT t) where lift = flip Lift Return
minioperational.cabal view
@@ -1,5 +1,5 @@ name: minioperational -version: 0.4.8 +version: 0.4.8.1 synopsis: fast and simple operational monad description: This package provides tiny implementation of operational monad. homepage: https://github.com/fumieval/minioperational