 a b
mkEpsilonNFA s rs gs = EpsilonNFA {
                _fstState = s
                ,_currState = eclose [s] rs
                ,_rules = rs
                ,_goalState = gs
                }

updateEpsilonNFA :: (Eq a) => EpsilonNFA a b -> D.Input b -> Maybe (EpsilonN
mkEpsilonNFA :: (Eq a) => D.State a -> [Rule a b] -> [D.State a] -> EpsilonNFA a b
mkEpsilonNFA s rs gs = EpsilonNFA {
                _fstState = s
                ,_currState = eclose [s] rs
                ,_rules = rs
                ,_goalState = gs
                }
mkEpsilonNFA s rs gs = EpsilonNFA {
                _fstState = s
                ,_currState = eclose [s] rs
                ,_rules = rs
                ,_goalState = gs
                }