Safe Haskell  None 

Language  Haskell2010 
 newtype ManyState m s a = ManyState {
 runManyState :: StateT s m a
 newtype ChangingState m st a = ChangingState {
 runChangingState :: At0 st > m (a, At1 st)
 changingState :: (s > m (a, t)) > ChangingState m (s, t) a
Documentation
newtype ManyState m 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.
ManyState  

newtype ChangingState m 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.
ChangingState  

Applicative m => PPointed * (ChangingState m) (s, s) Source #  
Monad m => PApplicative * (ChangingState m) (s, t) (t, u) (s, u) Source #  
Monad m => PMonad * (ChangingState m) (s, t) (t, u) (s, u) Source #  
Functor m => Functor (ChangingState m st) Source #  
Generic (ChangingState m st a) Source #  
type PUnary * (ChangingState m) st Source #  
type Rep (ChangingState m st a) Source #  
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