(* * Here is how we USED TO get the effect of nested modules, using * import/export. The NEW WAY (as of March 2009) is with lexically nested * sub-modules, as illustrated in ./nested-modules.fmsl. *) module M; import N,O,P; export N,O,P; end M; module N; export X; obj X = integer; end N; module O; import P; export P,Y; obj Y = string; end O; module P; export Z; obj Z = boolean; end P; module Consumer; import M; obj C = M.N.X and M.O.Y and M.P.Z and -- Note that M.P.Z and M.O.P.Z are two paths M.O.P.Z and -- to the same object def M.O.P.Y; -- ERROR: Y not an export of P end Consumer;