motor-0.1.0.0: Type-safe effectful state machines in Haskell

Safe HaskellNone
LanguageHaskell2010

Motor.FSM.Class

Description

The MonadFSM class is the indexed monad for finite-state machines.

Synopsis

Documentation

class IxMonad m => MonadFSM m where Source #

An indexed monad for finite-state machines, managing the state of named resources.

Minimal complete definition

new, delete, enter

Methods

new :: Name n -> a -> m r (Extend n a r) () Source #

Creates a new resource and returns its Name.

delete :: Name n -> m r (r :- n) () Source #

Deletes an existing resource named by its Name.

enter :: Name n -> b -> m r ((n ::= b) :| (r :- n)) () Source #

Replaces the state of an existing resource named by its Name.

Instances

Monad m => MonadFSM (FSM m) Source # 

Methods

new :: Name n -> a -> FSM m r (Extend n a r) () Source #

delete :: Name n -> FSM m r (r :- n) () Source #

enter :: Name n -> b -> FSM m r ((* ::= n) b :| (r :- n)) () Source #

data Name n where Source #

A name of a resource, represented using a Symbol.

Constructors

Name :: KnownSymbol n => Name n