uses System.Collections.Generic,System; type AllFun = class class function Identity(x: T): T; begin Result := x; end; end; function IEnumerable.Sort1: IEnumerable; begin var f: Func; f := AllFun&.Identity; Self.OrderBy(f); Result := Self; end; procedure IEnumerable.For_Each1(p: System.Action); begin foreach x: T in Self do p(x); end; procedure p(x: integer); begin write(x); end; {function IEnumerable.Write(delim: string := ' '): IEnumerable; begin if Self.Count=0 then exit; write(Self.First); foreach x: T in Self.Skip(1) do write(delim,x); Result := Self; end; function IEnumerable.Writeln(delim: string := ' '): IEnumerable; begin Self.Write(delim); writeln; Result := Self; end;} function IEnumerable.ZipClassic(b: IEnumerable): IEnumerable>; begin //Result := Self.Zip(b,(x,y)->x*y); end; begin var a := new integer[4](3,7,2,6); a.Println(',');//.OrderBy(x->x).Println; //a.Sort1().Writeln(); a.OrderBy(AllFun&.Identity).Println; // var pp: System.Action := procedure(x) -> write(x); // a.For_Each(pp); //a.For_Each(procedure(x) -> write(x)); end.