DIRECTORY Rope, IO, BigRats, AlgebraClasses, RatIntervals; RatIntervalsImpl: CEDAR PROGRAM IMPORTS Rope, IO, BigRats EXPORTS RatIntervals = BEGIN OPEN BR: BigRats, RatIntervals; ReadRatInterval: PUBLIC PROC [in: IO.STREAM] RETURNS [out: RatInterval] ~ { puncChar: CHAR; leftEndPoint, rightEndPoint: BR.BigRat; []_ in.SkipWhitespace[]; puncChar _ in.GetChar[ ]; IF puncChar # '( THEN ERROR; leftEndPoint _ NARROW[ BR.BigRats.class.read[in, BR.BigRats] ]; []_ in.SkipWhitespace[]; puncChar _ in.GetChar[ ]; IF puncChar # ', THEN ERROR; rightEndPoint _ NARROW[ BR.BigRats.class.read[in, BR.BigRats] ]; []_ in.SkipWhitespace[]; puncChar _ in.GetChar[ ]; IF puncChar # ') THEN ERROR; RETURN[NEW[RatIntervalRec _ [leftEndPoint, rightEndPoint] ] ]; }; RatIntervalFromRope: PUBLIC PROC [in: Rope.ROPE] RETURNS [out: RatInterval] = { stream: IO.STREAM _ IO.RIS[in]; out _ ReadRatInterval[stream]; }; RatIntervalToRope: PUBLIC PROC [in: RatInterval, showDenomOne: BOOL _ FALSE] RETURNS [out: Rope.ROPE] ~ { out _ "( "; out _ Rope.Cat[out, BR.BigRats.class.toRope[in.leftEndPoint], " , "]; out _ Rope.Cat[out, BR.BigRats.class.toRope[in.rightEndPoint], " )"]; }; WriteRatInterval: PUBLIC PROC [in: RatInterval, out: IO.STREAM, showDenomOne: BOOL _ FALSE] ~ { ratIntRope: Rope.ROPE _ RatIntervalToRope[in, showDenomOne]; out.PutF["%g\n", IO.rope[ratIntRope] ]; }; END. RRatIntervalsImpl.mesa Last Edited by: Arnon, July 19, 1985 2:54:46 pm PDT Κ5˜Jšœ™J™3J™šΟk ˜ Jšœ˜Icodešœ˜Jšœ˜J˜Jšœ ˜ —J˜head2šœœ˜Jšœ˜Jšœ ˜J˜—Jšœœœœ˜'J˜J™š Οnœœœœœœ˜KJšœ œ˜Jšœœ˜'Jšœ˜Jšœ˜Jšœœœ˜Jšœœœœ ˜?Jšœ˜Jšœ˜Jšœœœ˜Jšœœœœ ˜@Jšœ˜Jšœ˜Jšœœœ˜Jšœœ4˜>J˜J˜—š žœœœ œœ˜OKš œœœœœ˜Kšœ˜K˜J˜—šžœœœ!œœœ œ˜iJšœ ˜ Kšœœ/˜EKšœœ/˜EK˜J˜—šžœœœœœœœ˜_Jšœœ'˜