19.3 Long identifier expression longVid
A long identifier longVid, appears as an expression, evaluates to the type and dynamic value that the longVid bound to in the current environment.
longVid is of the form strId. .strId. vid. Structure identifier strId corresponds to a (nested) structure, according to the static scope rule defined in Chapter 21. As defined in Chapter 16, each structure declaration has the effect of extending the current environment with the set of bindings of long identifiers. The set of binding generated by the structure declaration corresponding to strId contains the binding obtained from the binding corresponding to strId by prefixing the structure name strId to each of the long identifier.
The type and value of longVid are therefore the same as those that vid is bound to in the structure corresponding to strId. If then the type and value are those that vid is bound to at the top-level. A simple example is shown below.
# structure A = struct val x = 99 end;
structure A =
struct
val x = 99 : int
end
# structure B = struct structure C = A end;
structure B =
struct
structure C =
struct
val x = 99 : int
end
end
# B.C.x;
val it = 99 : int