effect-monad-0.8.0.0: Embeds effect systems and program logics into Haskell using graded monads and parameterised monads

Safe HaskellSafe
LanguageHaskell98

Control.Effect.Parameterised.ExtensibleState

Documentation

newtype State s1 s2 a Source #

Constructors

State 

Fields

Instances

PMonad * State Source # 

Methods

return :: a -> pm inv inv a Source #

(>>=) :: pm pre interm t -> (t -> pm interm post t') -> pm pre post t' Source #

type Get v t m = IsMember v t m Source #

type Put v t m n = Updatable v t m n Source #

type Update v t m = (Get v t m, Put v t m m) Source #

get :: IsMember v t m => Var v -> State (Map m) (Map m) t Source #

put :: Updatable v t m n => Var v -> t -> State (Map m) (Map n) () Source #

modify :: (IsMember v s m, Updatable v t m n) => Var v -> (s -> t) -> State (Map m) (Map n) () Source #

class PMonad (pm :: k -> k -> * -> *) where Source #

Minimal complete definition

return, (>>=)

Methods

return :: a -> pm inv inv a Source #

(>>=) :: pm pre interm t -> (t -> pm interm post t') -> pm pre post t' Source #

Instances

PMonad * SafeFiles Source # 

Methods

return :: a -> pm inv inv a Source #

(>>=) :: pm pre interm t -> (t -> pm interm post t') -> pm pre post t' Source #

PMonad * State Source # 

Methods

return :: a -> pm inv inv a Source #

(>>=) :: pm pre interm t -> (t -> pm interm post t') -> pm pre post t' Source #

(>>) :: PMonad pm => pm pre mid t -> pm mid post t' -> pm pre post t' Source #

ifThenElse :: Bool -> a -> a -> a Source #

fail :: String -> m inv inv a Source #