module SFST where

-- Simple FSTs, as defined  in Sipser, Problems 1.24-27.
type SFST st = ([st],[Char],[Char],st -> Char -> (st,Char),st)

evalSFST (states,alphaIn,alphaOut,delta,start) w =
  run start w
  where run q [] = ""
        run q (x:xs) =
          let (q',y) = delta q x
          in y : (run q' xs)
             
