[commit: hoopl] master: added and exported liftFuel method of FuelMonadT (cf8723c)
Ian Lynagh
igloo at earth.li
Wed Jul 27 20:59:51 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/hoopl
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/cf8723c8e7d83a12d6f95abffd58ccb78aa0e0cb
>---------------------------------------------------------------
commit cf8723c8e7d83a12d6f95abffd58ccb78aa0e0cb
Author: Norman Ramsey <nr at cs.tufts.edu>
Date: Fri Jul 22 15:20:55 2011 -0400
added and exported liftFuel method of FuelMonadT
method runWithFuel remains hidden and should stay hidden
thanks Justin Bailey for the bug report
Signed-off-by: Norman Ramsey <nr at cs.tufts.edu>
>---------------------------------------------------------------
hoopl.cabal | 4 +++-
src/Compiler/Hoopl.hs | 2 +-
src/Compiler/Hoopl/Fuel.hs | 4 ++++
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/hoopl.cabal b/hoopl.cabal
index 1991e3f..0aede00 100644
--- a/hoopl.cabal
+++ b/hoopl.cabal
@@ -1,7 +1,9 @@
Name: hoopl
-Version: 3.8.7.1
+Version: 3.8.7.2
-- version 3.8.6.0 is the version that goes with the camera-ready Haskell'10 paper
-- version 3.8.7.0 works with GHC 7
+-- version 3.8.7.1 adds some unnamed functions without breaking compatibility
+-- version 3.8.7.2 adds Compiler.Hoopl.Fuel.liftFuel
Description: Higher-order optimization library
License: BSD3
License-file: LICENSE
diff --git a/src/Compiler/Hoopl.hs b/src/Compiler/Hoopl.hs
index 40f1b49..de921d6 100644
--- a/src/Compiler/Hoopl.hs
+++ b/src/Compiler/Hoopl.hs
@@ -22,7 +22,7 @@ import Compiler.Hoopl.Combinators
import Compiler.Hoopl.Dataflow hiding ( wrapFR, wrapFR2, wrapBR, wrapBR2
)
import Compiler.Hoopl.Debug
-import Compiler.Hoopl.Fuel hiding (withFuel, getFuel, setFuel, FuelMonadT)
+import Compiler.Hoopl.Fuel hiding (withFuel, getFuel, setFuel, runWithFuel)
import Compiler.Hoopl.Graph hiding
( Body
, BCat, BHead, BTail, BClosed -- OK to expose BFirst, BMiddle, BLast
diff --git a/src/Compiler/Hoopl/Fuel.hs b/src/Compiler/Hoopl/Fuel.hs
index 260fd43..c9972d0 100644
--- a/src/Compiler/Hoopl/Fuel.hs
+++ b/src/Compiler/Hoopl/Fuel.hs
@@ -29,6 +29,8 @@ fuelRemaining = getFuel
class FuelMonadT fm where
runWithFuel :: (Monad m, FuelMonad (fm m)) => Fuel -> fm m a -> m a
+ liftFuel :: (Monad m, FuelMonad (fm m)) => m a -> fm m a
+
type Fuel = Int
@@ -64,6 +66,7 @@ instance Monad m => FuelMonad (CheckingFuelMonad m) where
instance FuelMonadT CheckingFuelMonad where
runWithFuel fuel m = do { (a, _) <- unFM m fuel; return a }
+ liftFuel m = FM $ \f -> do { a <- m; return (a, f) }
----------------------------------------------------------------
@@ -88,6 +91,7 @@ instance CheckpointMonad m => CheckpointMonad (InfiniteFuelMonad m) where
instance FuelMonadT InfiniteFuelMonad where
runWithFuel _ = unIFM
+ liftFuel = IFM
infiniteFuel :: Fuel -- effectively infinite, any, but subtractable
infiniteFuel = maxBound
More information about the Cvs-libraries
mailing list