ziv@2253: signature MONO_FM = sig ziv@2253: type t ziv@2253: ziv@2253: type vr = string * int * Mono.typ * Mono.exp * string ziv@2253: ziv@2253: datatype foo_kind = ziv@2253: Attr ziv@2253: | Url ziv@2253: ziv@2253: val empty : int -> t ziv@2253: ziv@2253: val lookup : t -> foo_kind -> int -> (int -> t -> vr * t) -> t * int ziv@2253: val lookupList : t -> foo_kind -> Mono.typ -> (int -> t -> vr * t) -> t * int ziv@2253: val enter : t -> t ziv@2253: val decls : t -> Mono.decl list ziv@2253: ziv@2253: val freshName : t -> int * t ziv@2253: ziv@2253: (* TODO: don't expose raw references if possible. *) ziv@2253: val nextPvar : int ref ziv@2253: val postMonoize : t ref ziv@2253: end