MODULE Main; IMPORT List; FROM Test IMPORT done; TYPE T= REF INTEGER; PROCEDURE CompareInt (<*UNUSED*>arg: REFANY; a, b: REFANY): [-1..+1] = VAR ai, bi: REF INTEGER; BEGIN ai := NARROW(a, REF INTEGER); bi := NARROW(b, REF INTEGER); IF ai^ < bi^ THEN RETURN -1 ELSIF ai^ > bi^ THEN RETURN +1 ELSE RETURN 0 END END CompareInt; VAR s: List.T; v1, v2, v3, v4: T; BEGIN v1 := NEW (T); v1^ := 12; v2 := NEW (T); v2^ := 61; v3 := NEW (T); v3^ := 22; v4 := NEW (T); v4^ := 10; s := List.List4 (v1, v2, v3, v4); s := List.SortD(s, CompareInt); done (); END Main.