DIRECTORY Rope, IO, MathExpr, MathConstructors, AlgebraClasses, Structures, Variables, Sets; ASVariableSetsImpl: CEDAR PROGRAM IMPORTS Rope, IO, MathConstructors, AlgebraClasses, Structures, Variables EXPORTS Sets = BEGIN OPEN AC: AlgebraClasses, VARS: Variables, Sets; SyntaxError: PUBLIC ERROR [reason: ATOM] = CODE; BadUniverse: PUBLIC ERROR [universe: AC.Object] = CODE; TypeError: PUBLIC ERROR [message: ATOM _ $Unspecified] = CODE; Method: TYPE = AC.Method; Object: TYPE = AC.Object; VariableFromRope: PUBLIC AC.FromRopeOp ~ { variable: Object _ VARS.FromRope[in, VARS.Variables]; set: Object _ MakeSet[LIST[variable], VariableSets]; singleSetStructure: Object _ MakeSingleSetStructure[set]; RETURN[SSSEltFromUnderlyingSetUniverseElt[variable, singleSetStructure] ]; }; VariableSets: PUBLIC AC.Object _ MakePowerSetStructure[VARS.Variables]; -- this is initialization only; n.b. must be done after familyOfSetsClass initialized, so that gets it as non-NIL class, so that class pointer in variableSetsClass points to something non-NIL as superclass. variableMethod: Method _ AC.MakeMethod[FromRopeOp, FALSE, NEW[AC.FromRopeOp _ VariableFromRope], NIL, "variable"]; variableSetsClass: AC.Object _ AC.MakeClass["variableSetsClass", VariableSets.class, NIL]; AC.AddMethodToClass[$variable, variableMethod, variableSetsClass]; VariableSets.class _ variableSetsClass; AC.InstallStructure[VariableSets]; -- update value of VariableSets installed by MakeFamilyOfSetsStructure; now its class is not just the standard one, but a subclass containing variableMethod. END. ΦASVariableSetsImpl.mesa Last Edited by: Arnon, April 28, 1987 9:22:39 am PDT Errors and Types Operations Start Code Kludge up special subclass for VariableSets, containing special evaluation for variables Κφ˜Jšœ™J™4J™šΟk ˜ Jšœ˜Icode˜K˜ K˜Kšœ˜Kšœ ˜ Kšœ ˜ Jšœ˜—J˜head2šœœ˜!Jšœœ:˜JJšœ˜J˜—Jšœœœœ˜5head™Jš œ œœ œœ˜0Jš œ œœ œ œ˜7Jš œ œœ œœ˜>Jšœœœ˜Jšœœœ˜—™ šΟnœœœ˜*Jšœœœ ˜5Jšœœ˜4Jšœ9˜9JšœD˜JJšœ˜J˜——™ Jšœž œ-™XJ™Jš ž œœœ œ Οc“œŸ+˜—J™Jš œœœœœ!œ˜rKšœœ œ4œ˜ZJ˜Jšœ@˜BJ˜Jšœ'˜'J˜Jšœ!Ÿ˜ΐ—˜J˜—Jšœ˜J˜—…—*φ