runEpsilon :: Eq a => Transducer a -> TransitionFunction a -> [a] -> StateTy ->
                 [Symbol a] -> Maybe [[a]]
runEpsilon transducer transFun input s result =
 case transFun transducer (s, Eps) of
  [] -> Nothing
  tl -> case concat $ catMaybes $
         map (\(a,s1) -> apply transducer transFun input s1 (a:result)) tl of
         [] -> Nothing
         xs -> Just xs
runEpsilon :: Eq a => Transducer a -> TransitionFunction a -> [a] -> StateTy ->
                 [Symbol a] -> Maybe [[a]]
runEpsilon transducer transFun input s result =
 case transFun transducer (s, Eps) of
  [] -> Nothing
  tl -> case concat $ catMaybes $
         map (\(a,s1) -> apply transducer transFun input s1 (a:result)) tl of
         [] -> Nothing
         xs -> Just xs
runEpsilon transducer transFun input s result =
 case transFun transducer (s, Eps) of
  [] -> Nothing
  tl -> case concat $ catMaybes $
         map (\(a,s1) -> apply transducer transFun input s1 (a:result)) tl of
         [] -> Nothing
         xs -> Just xs