<> <> <> DIRECTORY List, MathDB, MathExpr, AlgebraClasses, Environment, Rope; EnvironmentImpl: CEDAR PROGRAM IMPORTS List, MathDB EXPORTS Environment ~ BEGIN OPEN AC: AlgebraClasses; <> ROPE: TYPE ~ Rope.ROPE; EXPR: TYPE = MathExpr.EXPR; Object: TYPE = AC.Object; Method: TYPE = AC.Method; <> Table: List.AList _ NIL; <> ResetEnvironment: PUBLIC PROC[] ~ { <> Table _ NIL; }; InstallVariable: PUBLIC PROC[var: ATOM, value: EXPR] ~ { <> <<>> <> Table _ List.PutAssoc[key: var, val: value, aList: Table]; }; RemoveVariable: PUBLIC PROC[var: ATOM] ~ { <> Table _ MathDB.KillAssoc[key: var, aList: Table]; }; <<>> LookupVariable: PUBLIC PROC[var: ATOM] RETURNS[value: EXPR] ~ { <> <<>> value _ NARROW[List.Assoc[key: var, aList: Table]]; RETURN[value]; }; <> notFound: PUBLIC ERROR = CODE; <> ResetEnvironment[]; END.