MODULE PtLoc; (* Procedures for labelling points with coordinates. *) (* It is a checked run-time error if any of the procedures in this module are supplied parameters other than points. *) IMPORT Unparse, PS; PROC Point(p) IS PS.Type(p, Unparse.Point(p)) END; UI PointTool(Point); (* Print the coordinate value of "p" at location "p". *) PROC MoveTo(p) IS PS.MoveTo(p); Point(p) END; PROC LineTo(p) IS PS.LineTo(p); Point(p) END; PROC CurveTo(p, q, r) IS PS.CurveTo(p, q, r); Point(p); Point(q); Point(r) END; UI PointTool(MoveTo); UI PointTool(LineTo); UI PointTool(CurveTo); (* Execute the procedure of the same name in the "PS" module, but print the coordinate of each argument point. *)