---------------------------------------------------------------- -- -- | Compilation -- Monad and combinators for quickly assembling simple -- compilers. -- -- @Control\/Compilation\/Module.hs@ -- -- State extension class and combinators for implementations -- of a state that support module name specification. -- ---------------------------------------------------------------- -- module Control.Compilation.Module where import Control.Compilation ---------------------------------------------------------------- -- | State extension class definition, including combinators. class StateExtension a => Module a where project :: a -> String inject :: String -> a -> a setModule :: String -> Compilation a () setModule m = do s <- get set $ inject m s getModule :: Compilation a String getModule = do s <- get return $ project s --eof