functor TOPLEVEL( structure Machine: MachineSig and Compile: CompileSig and Environment: EnvironmentSig and Expn : ExpnSig sharing type Compile.Action = Machine.Action sharing type Environment.Environment = Machine.Environment sharing type Compile.Expn = Expn.Expn ):TopLevelSig = struct structure Expn = Expn type Environment = Environment.Environment val lookup = Environment.lookup local fun adddecs ((s,e) :: decs) env = let val v = Machine.execute env (Compile.code e) in adddecs decs (Environment.enter((s,v), env)) end | adddecs [] env = env in fun compile decs = adddecs decs Environment.empty end end;