Safe Haskell | None |
---|---|
Language | Haskell2010 |
Syntactic sugar for MonadFSM
types.
- newtype Add s = Add s
- newtype Delete s = Delete s
- data To a b = Transition a b
- data n :-> a
- type family FromActions (as :: [*]) (rs :: Row *) :: Row * where ...
- type NoActions m r a = m r r a
- type Actions m as r a = m r (FromActions as r) a
- type OnlyActions m as a = Actions m as Empty a
- type (!-->) i o = To i o
- type (!+) n s = n :-> Add s
- type (!-) n s = n :-> Delete s
Documentation
Action that transitions the state of an existing resource from
state a
to b
.
Transition a b |
type family FromActions (as :: [*]) (rs :: Row *) :: Row * where ... Source #
Translates a list of Action
s to a Row
.
FromActions '[] rs = rs | |
FromActions ((n :-> Add a) ': ts) r = Extend n a (FromActions ts r) | |
FromActions ((n :-> Delete a) ': ts) r = FromActions ts r :- n | |
FromActions ((n :-> To a b) ': ts) r = Extend n b (FromActions ts r :- n) |
type Actions m as r a = m r (FromActions as r) a Source #
Alias for MonadFSM
that uses FromActions
to construct rows.
type OnlyActions m as a = Actions m as Empty a Source #
Alias for MonadFSM
that uses FromActions
to construct rows,
starting from an Empty
row, i.e. allowing no other resources.