packages feed

minioperational 0.4.8 → 0.4.8.1

raw patch · 3 files changed

+12/−11 lines, 3 files

Files

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