| Safe Haskell | Safe-Inferred |
|---|
Data.FsmActions
Contents
Description
Finite state machines.
Here an FSM is a map from symbols to actions. Symbols are parametric
(will usually be Strings or Chars). Actions specify the action of a
symbol on each state, and are represented as lists of transitions: one
per state. States are just numbers, from 0 to n, corresponding to
indices on transition lists in Actions. Then deterministic actions
are just Ints, identifying the state to transition to under that
action; nondeterministic actions are lists of Ints: all the states to
possibly transition to under that action.
- type State = Int
- newtype DestinationSet = DestinationSet {
- destinations :: [State]
- newtype Action = Action {}
- data FSM sy
- newtype Word sy = Word [sy]
- fromList :: Ord sy => [(sy, Action)] -> FSM sy
- toList :: FSM sy -> [(sy, Action)]
- delete :: Ord sy => sy -> FSM sy -> FSM sy
- lookup :: Ord sy => sy -> FSM sy -> Maybe Action
- fsmMap :: (sy -> Action -> a) -> FSM sy -> [a]
- states :: FSM sy -> [State]
- alphabet :: FSM sy -> [sy]
- normalise :: FSM sy -> FSM sy
- normaliseAction :: Action -> Action
- mkAction :: [[State]] -> Action
- mkDAction :: [State] -> Action
- append :: Action -> Action -> Action
- actionLookup :: Action -> State -> DestinationSet
- action :: Ord sy => FSM sy -> Word sy -> Maybe Action
- actionEquiv :: Ord sy => FSM sy -> Word sy -> Word sy -> Bool
- destinationSet :: Ord sy => FSM sy -> State -> Word sy -> Maybe DestinationSet
- destinationEquiv :: Ord sy => FSM sy -> State -> Word sy -> Word sy -> Bool
- fsmIdentity :: FSM sy -> Action
- identity :: Int -> Action
- isDAction :: Action -> Bool
- isDFSM :: FSM sy -> Bool
Data types
newtype DestinationSet Source
Destination sets are just lists of States.
Constructors
| DestinationSet | |
Fields
| |
Instances
Finite state machine whose nodes are labelled with type sy.
Simple FSM operations
fromList :: Ord sy => [(sy, Action)] -> FSM sySource
Create an FSM from a list of symbol, Action pairs.
states :: FSM sy -> [State]Source
Compute the list of states of the FSM. Only really meaningful
if the FSM's well-formedness is not BadLengths. With current
implementation, is just [0..n] for some n (or empty).
Normalisation
Operations on actions
mkDAction :: [State] -> ActionSource
Build a deterministic action given a list of destination states.
actionLookup :: Action -> State -> DestinationSetSource
Compute the DestinationSet reached by following some Action
from some State.
actionEquiv :: Ord sy => FSM sy -> Word sy -> Word sy -> BoolSource
Test if two Words are action-equivalent over some FSM.
Destination sets
destinationSet :: Ord sy => FSM sy -> State -> Word sy -> Maybe DestinationSetSource
Compute the DestinationSet for some Word at some State of
an FSM. The word might contain symbols outside the FSM's
alphabet, or the state might be out of range, so the result could
be Nothing.
Identity
fsmIdentity :: FSM sy -> ActionSource
Compute the identity action for a given FSM.