module Debian.Debianize.Monad
( Atoms
, DebT
, runDebT
, evalDebT
, execDebT
, DebM
, runDebM
, evalDebM
, execDebM
) where
import Control.Monad.State (evalState, evalStateT, execState, execStateT, runState, State, StateT(runStateT))
import Data.Map as Map (alter)
import Data.Version (Version)
import Debian.Debianize.Types.Atoms (Atoms)
import Debian.Debianize.Types (debianNameMap)
import Debian.Debianize.Prelude ((%=))
import Debian.Debianize.VersionSplits (insertSplit, makePackage, VersionSplits)
import Debian.Orphans ()
import Distribution.Package (PackageName)
import Prelude hiding (init, log, unlines)
type DebT m = StateT Atoms m
type DebM = State Atoms
execDebT :: Monad m => DebT m a -> Atoms -> m Atoms
execDebT action atoms = execStateT action atoms
evalDebT :: Monad m => DebT m a -> Atoms -> m a
evalDebT action atoms = evalStateT action atoms
runDebT :: Monad m => DebT m a -> Atoms -> m (a, Atoms)
runDebT action atoms = runStateT action atoms
execDebM :: DebM a -> Atoms -> Atoms
execDebM action atoms = execState action atoms
evalDebM :: DebM a -> Atoms -> a
evalDebM action atoms = evalState action atoms
runDebM :: DebM a -> Atoms -> (a, Atoms)
runDebM action atoms = runState action atoms