parameterized-0.5.0.0: Parameterized/indexed monoids and monads using only a single parameter type variable.
Safe HaskellNone
LanguageHaskell2010

Parameterized.Control.Monad.Trans.State.Strict

Synopsis

Documentation

newtype ManyState (m :: Type -> Type) s a Source #

Given a ManyState that modifies Many a, and another ManyState that modifes Many b make a State that accepts Many (AppendUnique a b) with the compile time constraint that all the types in (AppendUnique a b) are distinct.

Constructors

ManyState 

Fields

Instances

Instances details
Alternative m => PEmpty (ManyState m :: Type -> Type -> Type) (Many ('[] :: [Type])) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

pempty :: PUnary (ManyState m) (Many ('[] :: [Type])) a Source #

Monad m => PPointed (ManyState m :: Type -> Type -> Type) (Many ('[] :: [Type])) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

ppure :: a -> PUnary (ManyState m) (Many ('[] :: [Type])) a Source #

(Monad m, Alternative m, Select a c, Select b c, Amend' a c, Amend' b c, c ~ AppendUnique a b) => PAlternative (ManyState m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

pappend :: PUnary (ManyState m) (Many a) a0 -> PUnary (ManyState m) (Many b) a0 -> PUnary (ManyState m) (Many c) a0 Source #

(Monad m, Select a c, Select b c, Amend' a c, Amend' b c, c ~ AppendUnique a b) => PApplicative (ManyState m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

papply :: PUnary (ManyState m) (Many a) (a0 -> b0) -> PUnary (ManyState m) (Many b) a0 -> PUnary (ManyState m) (Many c) b0 Source #

(Monad m, Select a c, Select b c, Amend' a c, Amend' b c, c ~ AppendUnique a b) => PMonad (ManyState m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

pbind :: PUnary (ManyState m) (Many a) a0 -> (a0 -> PUnary (ManyState m) (Many b) b0) -> PUnary (ManyState m) (Many c) b0 Source #

MonadFail m => MonadFail (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

fail :: String -> ManyState m s a #

MonadFix m => MonadFix (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

mfix :: (a -> ManyState m s a) -> ManyState m s a #

MonadIO m => MonadIO (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

liftIO :: IO a -> ManyState m s a #

MonadPlus m => Alternative (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

empty :: ManyState m s a #

(<|>) :: ManyState m s a -> ManyState m s a -> ManyState m s a #

some :: ManyState m s a -> ManyState m s [a] #

many :: ManyState m s a -> ManyState m s [a] #

Monad m => Applicative (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

pure :: a -> ManyState m s a #

(<*>) :: ManyState m s (a -> b) -> ManyState m s a -> ManyState m s b #

liftA2 :: (a -> b -> c) -> ManyState m s a -> ManyState m s b -> ManyState m s c #

(*>) :: ManyState m s a -> ManyState m s b -> ManyState m s b #

(<*) :: ManyState m s a -> ManyState m s b -> ManyState m s a #

Functor m => Functor (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

fmap :: (a -> b) -> ManyState m s a -> ManyState m s b #

(<$) :: a -> ManyState m s b -> ManyState m s a #

Monad m => Monad (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

(>>=) :: ManyState m s a -> (a -> ManyState m s b) -> ManyState m s b #

(>>) :: ManyState m s a -> ManyState m s b -> ManyState m s b #

return :: a -> ManyState m s a #

MonadPlus m => MonadPlus (ManyState m s) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

mzero :: ManyState m s a #

mplus :: ManyState m s a -> ManyState m s a -> ManyState m s a #

Generic (ManyState m s a) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Associated Types

type Rep (ManyState m s a) 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type Rep (ManyState m s a) = D1 ('MetaData "ManyState" "Parameterized.Control.Monad.Trans.State.Strict" "parameterized-0.5.0.0-9XdYlHtOK669I12VWQAEgZ" 'True) (C1 ('MetaCons "ManyState" 'PrefixI 'True) (S1 ('MetaSel ('Just "runManyState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StateT s m a))))

Methods

from :: ManyState m s a -> Rep (ManyState m s a) x #

to :: Rep (ManyState m s a) x -> ManyState m s a #

type PUnary (ManyState m :: Type -> Type -> Type) (s :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type PUnary (ManyState m :: Type -> Type -> Type) (s :: Type) = ManyState m s
type Rep (ManyState m s a) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type Rep (ManyState m s a) = D1 ('MetaData "ManyState" "Parameterized.Control.Monad.Trans.State.Strict" "parameterized-0.5.0.0-9XdYlHtOK669I12VWQAEgZ" 'True) (C1 ('MetaCons "ManyState" 'PrefixI 'True) (S1 ('MetaSel ('Just "runManyState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StateT s m a))))

newtype ChangingState (m :: Type -> Type) st a Source #

Given a ChangingState that changes state from s to t, and another ChangingState that changes state from t to u make a State that changes from s to u with the compile time constraint that all the types in (AppendUnique a b) are distinct. NB. The state is in the snd position to be consistent with StateT.

Constructors

ChangingState 

Fields

Instances

Instances details
Applicative m => PPointed (ChangingState m :: Type -> Type -> Type) ((s, s) :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

ppure :: a -> PUnary (ChangingState m) (s, s) a Source #

Monad m => PApplicative (ChangingState m :: Type -> Type -> Type) ((s, t) :: Type) ((t, u) :: Type) ((s, u) :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

papply :: PUnary (ChangingState m) (s, t) (a -> b) -> PUnary (ChangingState m) (t, u) a -> PUnary (ChangingState m) (s, u) b Source #

Monad m => PMonad (ChangingState m :: Type -> Type -> Type) ((s, t) :: Type) ((t, u) :: Type) ((s, u) :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

pbind :: PUnary (ChangingState m) (s, t) a -> (a -> PUnary (ChangingState m) (t, u) b) -> PUnary (ChangingState m) (s, u) b Source #

Functor m => Functor (ChangingState m st) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Methods

fmap :: (a -> b) -> ChangingState m st a -> ChangingState m st b #

(<$) :: a -> ChangingState m st b -> ChangingState m st a #

Generic (ChangingState m st a) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

Associated Types

type Rep (ChangingState m st a) 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type Rep (ChangingState m st a) = D1 ('MetaData "ChangingState" "Parameterized.Control.Monad.Trans.State.Strict" "parameterized-0.5.0.0-9XdYlHtOK669I12VWQAEgZ" 'True) (C1 ('MetaCons "ChangingState" 'PrefixI 'True) (S1 ('MetaSel ('Just "runChangingState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (At0 st -> m (a, At1 st)))))

Methods

from :: ChangingState m st a -> Rep (ChangingState m st a) x #

to :: Rep (ChangingState m st a) x -> ChangingState m st a #

type PUnary (ChangingState m :: Type -> Type -> Type) (st :: Type) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type PUnary (ChangingState m :: Type -> Type -> Type) (st :: Type) = ChangingState m st
type Rep (ChangingState m st a) Source # 
Instance details

Defined in Parameterized.Control.Monad.Trans.State.Strict

type Rep (ChangingState m st a) = D1 ('MetaData "ChangingState" "Parameterized.Control.Monad.Trans.State.Strict" "parameterized-0.5.0.0-9XdYlHtOK669I12VWQAEgZ" 'True) (C1 ('MetaCons "ChangingState" 'PrefixI 'True) (S1 ('MetaSel ('Just "runChangingState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (At0 st -> m (a, At1 st)))))

changingState :: (s -> m (a, t)) -> ChangingState m (s, t) a Source #

Prefer this to using ChangingState to construct as it results in better type inference as it avoids ambiguous type variable st