uses System.Generics.Defaults,
System.Generics.Collections;
var
Numbers: TArray<Integer>;
Number: Integer;
begin
Numbers := [2, 3, 1];
//the comparer is an anonymous function
TArray.Sort<Integer>(Numbers,
TComparer<Integer>.Construct(
function(const L, R: Integer): Integer
begin
Result := R - L;
end));
//numbers is [3, 2, 1]
for Number in Numbers do
Write(Number, ' ');
WriteLn;
end.