GENERIC INTERFACE Sort(Elem); TYPE CompareProc = PROCEDURE(x,y: Elem.T): INTEGER; (* Must return < 0, 0, >0 according as xy *) PROCEDURE Array( VAR (*inout*) a: ARRAY OF Elem.T; p: CompareProc) RAISES {}; END Sort.