## Код:
```
TYPE
   
   List* = POINTER TO RECORD (O.Object)
      FCount,
      FCapacity: INTEGER;
      FList: POINTER TO ARRAY OF O.Object;
   END;

   ListSortCompare* = PROCEDURE (Index1, Index2: INTEGER): INTEGER;
   ListSortExchange* = PROCEDURE (Index1, Index2: INTEGER);
   ListSort* = PROCEDURE (l, r: INTEGER; Compare: ListSortCompare; Exchange: ListSortExchange);
   
   PROCEDURE QuickSort (
         L, R : INTEGER;
         Compare: ListSortCompare;
         Exchange: ListSortExchange);
      VAR
         I, J: INTEGER;
         P, Q: INTEGER;
   BEGIN
      REPEAT
         I := L;
         J := R;
         P := (L + R) DIV 2;
         REPEAT
            WHILE Compare (P, I) > 0 DO INC(I) END;
            WHILE Compare (P, J) < 0 DO DEC(J) END;
            IF I <= J THEN
               Exchange (I, J);
               INC(I);
               DEC(J)
            END;
         UNTIL I > J;
         IF L < J THEN QuickSort (L, J, Compare, Exchange) END;
         L := I;
      UNTIL I >= R;
   END QuickSort;
   
   PROCEDURE (L: List) Sort*(sortList: ListSort; Compare: ListSortCompare), NEW;
   BEGIN
      sortList (0, L.FCount - 1, Compare, L.Exchange)
   END Sort;
```

В строке
sortList (0, L.FCount - 1, Compare,L.Exchange)
показывает сообщение о несовместимости типов.
Тобишь, L.Exchange не тождественен типу ListSortExchange. Или, иными словами,
PROCEDURE (L: List) Exchange* (Index1, Index2: INTEGER)
и
PROCEDURE (Index1, Index2: INTEGER)
разные типы.

Каким же образом я могу представить процедурный тип иначе, чтобы я мог подставить его в sortList?