はたして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