<> <> <> <> <<>> DIRECTORY Rope USING [ROPE]; Express: CEDAR DEFINITIONS ~ { OPEN R: Rope; ROPE: TYPE ~ R.ROPE; Symbols: TYPE ~ LIST OF ROPE; Fcn: TYPE ~ PROC [a,b,c,d,e: REAL _ 0] RETURNS [z: REAL]; <> ParseError: ERROR [error: ErrorDesc]; ErrorDesc: TYPE ~ RECORD [ reason: ROPE, position: INT ]; IllegalClientProcedure: ERROR; ClientProc: TYPE ~ RECORD [ proc: PROC ANY RETURNS [REAL], --Actually ANY must be 1 or 2 REALs userRope: ROPE --What client's user will call it ]; ClientProcList: TYPE ~ LIST OF ClientProc; RopeToFcn: PROC [ expression: ROPE, symbols: Symbols, --Up to five, corresponding to a,b,c,d,e cProcs: ClientProcList _ NIL, oldFcn: Fcn _ NIL ] RETURNS [fcn: Fcn]; <<>> <> <> <> <> <<>> <> <> <> FreeFcn: UNSAFE PROC [fcn: Fcn]; <> }.