determinize :: (Ord sym, Ord sta) => Set sym -> Fa sym sta -> Fa sym (Set sta)
determinize !symbols !fa =
  evalState (while fa symbols) (Set.singleton (initialStates fa), Set.empty, Set.empty)
determinize :: (Ord sym, Ord sta) => Set sym -> Fa sym sta -> Fa sym (Set sta)
determinize !symbols !fa =
  evalState (while fa symbols) (Set.singleton (initialStates fa), Set.empty, Set.empty)
determinize !symbols !fa =
  evalState (while fa symbols) (Set.singleton (initialStates fa), Set.empty, Set.empty)