+(* Offset is the number to take us out of the inner scope
- Scope is the Mapping between Variable's names and its current index loc
Offset + Scope *)
+type context_impl = int * scope
You commented out my "identical" definition in lexp.ml:
type senv_type = (db_revindex SMap.t * db_index)
so I obviously agree it's a good way to do it.
+(* The recursive type that does everything
inner Scope * Outer Scope *)
+type lexp_context = context_impl * lexp_context option
Hmm... but here I don't understand why you need this. When would you need lexp_context and wouldn't you be able to use just contet_impl (aka senv_type) instead?
Stefan