definition module Smurf from StdOverloaded import class zero, class toString from Data.Maybe import ::Maybe :: Stm = Push String | Input | Output | Cat | Head | Tail | Quotify | Put | Get | Exec :: Program :== [Stm] :: Stack :== [String] :: Store :== [(String, String)] :: State = { stack :: Stack , store :: Store } instance toString Stm instance zero State instance toString State step :: !Program State !*File -> *(Maybe (!Program, State), *File) run :: !Program State *File -> *(Maybe State, *File)