(* Sto: a store maps a location to a value *) type 'data sto val empty : unit -> 'data sto val getsto : 'data sto -> int -> 'data val setsto : 'data sto -> int -> 'data -> 'data sto val bindvar : string -> 'data -> (string, int) Env.env * int -> 'data sto -> ((string, int) Env.env * int) * 'data sto val bindvars : string list -> 'data list -> (string, int) Env.env * int -> 'data sto -> ((string, int) Env.env * int) * 'data sto val printsto : 'data sto -> ('data -> string) -> unit val printstoi : int sto -> unit