Higher-order functions: Difference between revisions
Content added Content deleted
Line 2,846: | Line 2,846: | ||
END ; |
END ; |
||
END. |
|||
(*) === How to use in a program === (*) |
|||
program testMRF.pas; |
|||
{$mode Delphi} {$H+} {$J-} {$R+} (*) https://www.freepascal.org/docs-html/prog/progch1.html (*) |
|||
USES |
|||
MRF, |
|||
Math, |
|||
SysUtils; |
|||
{$WARN 6058 off : Call to subroutine "$1" marked as inline is not inlined} // Use for variants |
|||
VAR |
|||
a,b,c : array of variant ; |
|||
Accu : variant ; |
|||
BEGIN |
|||
Randomize ; |
|||
setlength ( a, 7 ) ; |
|||
setlength ( b, 7 ) ; |
|||
setlength ( c, 7 ) ; |
|||
a := Map ( RandFillInt , a ) ; |
|||
Map ( show , a ) ; |
|||
writeln ; |
|||
writeln ; |
|||
Accu := FoldR ( add , a ) ; |
|||
WriteLn ( 'Sum = ' , Accu ) ; |
|||
writeln ; |
|||
writeln ; |
|||
Accu := Reduce ( mult , a ) ; |
|||
WriteLn ( 'Product = ' , Accu ) ; |
|||
writeln ; |
|||
writeln ; |
|||
b := Map ( RandFillInt , b ) ; |
|||
Map ( show , b ) ; |
|||
writeln ; |
|||
writeln ; |
|||
Accu := avg ( a ) ; |
|||
WriteLn ( 'avg = ' ,Accu ); |
|||
writeln ; |
|||
writeln ; |
|||
c := Filter ( Is_Odd , a ) ; |
|||
Map ( show , c ) ; |
|||
writeln ; |
|||
writeln ; |
|||
Map ( show , b ) ; |
|||
Accu := ForAll ( Is_Odd , b ) ; |
|||
writeln ; |
|||
writeln ; |
|||
WriteLn ( 'ForAll Is_Odd = ' , Accu ) ; |
|||
writeln ; |
|||
writeln ; |
|||
Map ( show , b ) ; |
|||
Accu := AnyOf ( Is_Even , b ) ; |
|||
writeln ; |
|||
writeln ; |
|||
WriteLn ( 'AnyOf Is_Even = ' , Accu ) ; |
|||
writeln ; |
|||
writeln ; |
|||
setlength ( c, 0 ) ; |
|||
setlength ( b, 0 ) ; |
|||
setlength ( a, 0 ) ; |
|||
END. |
END. |
||