<> <> <> DIRECTORY Basics USING [Comparison], Rope USING [ROPE]; RopeList: CEDAR DEFINITIONS = BEGIN <> <> CompareProc: TYPE = PROC [r1, r2: Rope.ROPE] RETURNS [Basics.Comparison]; <> EqualLists: PROC [l1, l2: LIST OF Rope.ROPE, case: BOOL _ TRUE] RETURNS [BOOL]; <> Memb: PROC [list: LIST OF Rope.ROPE, r: Rope.ROPE, case: BOOL _ TRUE] RETURNS [BOOL]; <> <> <> Cons: PROC [list: LIST OF Rope.ROPE, r: Rope.ROPE] RETURNS [LIST OF Rope.ROPE] = INLINE { RETURN[CONS[r, list]]; }; Append: PROC [l1, l2: LIST OF Rope.ROPE] RETURNS [LIST OF Rope.ROPE]; <> CopyTopList: PROC [list: LIST OF Rope.ROPE] RETURNS [LIST OF Rope.ROPE] = INLINE { RETURN[Append[list, NIL]]; }; <> Remove: PROC [list: LIST OF Rope.ROPE, r: Rope.ROPE, case: BOOL _ TRUE] RETURNS [LIST OF Rope.ROPE]; <> Reverse: PROC [list: LIST OF Rope.ROPE] RETURNS [LIST OF Rope.ROPE]; <> <> <> DAppend: PROC [l1, l2: LIST OF Rope.ROPE] RETURNS [LIST OF Rope.ROPE]; <> DRemove: PROC [list: LIST OF Rope.ROPE, r: Rope.ROPE, case: BOOL _ TRUE] RETURNS [LIST OF Rope.ROPE]; <> DReverse: PROC [list: LIST OF Rope.ROPE] RETURNS [LIST OF Rope.ROPE]; <> <> Length: PROC [list: LIST OF Rope.ROPE] RETURNS [INT]; <> Map: PROC [list: LIST OF Rope.ROPE, proc: PROC [Rope.ROPE]]; <> <> Sort: PROC [list: LIST OF Rope.ROPE, compareProc: CompareProc] RETURNS [LIST OF Rope.ROPE]; <> Compare: CompareProc; <> IgnoreCase: CompareProc; <> END. <>