DelphiでReduceを・・・

はたしてDelphiでReduceっぽいことして意味があるのかどうか・・・。
むしろ演算子オーバーロードができるようになったのだから、オブジェクトでやるべきか。

delphi_reduce.dpr

program delphi_reduce;

{$APPTYPE CONSOLE}

type
  TIntOperatorProc = function (val1, val2: Integer): Integer;

function Reduce(proc: TIntOperatorProc; list: array of Integer;
    init:Integer = 0): Integer;
var
  val: Integer;
begin
  Result := init;
  for val in list do
    Result := proc(Result, val);
end;

function _add(val1, val2: Integer): Integer;
begin
  Result := val1 + val2;
end;

var
  list: array [1..10] of Integer;
  i: Integer;
begin
  for i := Low(list) to High(list) do
    list[i] := i;
  WriteLn(Reduce(_add, list));
end.

実行結果

E:\Projects\_Samples\reduce>delphi_reduce.exe
55