hoopl-3.10.0.0: src/Compiler/Hoopl/Checkpoint.hs
{-# LANGUAGE CPP, TypeFamilies #-}
#if __GLASGOW_HASKELL__ >= 701
{-# LANGUAGE Safe #-}
#endif
module Compiler.Hoopl.Checkpoint
( CheckpointMonad(..)
)
where
-- | Obeys the following law:
-- for all @m@
-- @
-- do { s <- checkpoint; m; restart s } == return ()
-- @
class Monad m => CheckpointMonad m where
type Checkpoint m
checkpoint :: m (Checkpoint m)
restart :: Checkpoint m -> m ()