fst-0.10.0.0: FST/TransducerTypes.hs
{- |
Type system for transducers
-}
module FST.TransducerTypes (
-- * Types
StateTy,
FinalStates,
FirstState,
LastState,
Sigma,
Relation,
Upper,
Lower,
Symbol (..),
TTransitions,
TTransitionTable,
InitialStates,
TransducerFunctions (..),
) where
import FST.AutomatonTypes (
StateTy, FinalStates, Sigma, FirstState, LastState, InitialStates
)
-- | A relation between upper/lower languages
type Relation a = (Upper a, Lower a)
-- | Upper language
type Upper a = Symbol a
-- | Lower language
type Lower a = Symbol a
-- | A symbol
data Symbol a = S a | Eps
deriving (Show, Read, Eq)
-- | Transducer transitions
type TTransitions a = [(Relation a, StateTy)]
-- | Transducer transition table
type TTransitionTable a = [(StateTy, [(Relation a, StateTy)])]
-- | Class of TransducerFunctions
class TransducerFunctions f where
states :: f a -> [StateTy]
isFinal :: f a -> StateTy -> Bool
initials :: f a -> InitialStates
finals :: f a -> FinalStates
transitionTable :: f a -> TTransitionTable a
transitionList :: f a -> StateTy -> TTransitions a
transitionsU :: Eq a => f a -> (StateTy, Symbol a) -> [(Symbol a, StateTy)]
transitionsD :: Eq a => f a -> (StateTy, Symbol a) -> [(Symbol a, StateTy)]
firstState :: f a -> StateTy
lastState :: f a -> StateTy
alphabet :: f a -> Sigma a