Task

Write a procedure which accepts as arguments another procedure and a positive integer.

The latter procedure is executed a number of times equal to the accepted integer.




 
# operator that executes a procedure the specified number of times            #
OP REPEAT = ( INT count, PROC VOID routine )VOID:
    TO count DO routine OD;
 
# make REPEAT a low priority operater                                         #
PRIO REPEAT = 1;
 
 
# can also create variant that passes the iteration count as a parameter      #
OP REPEAT = ( INT count, PROC( INT )VOID routine )VOID:
    FOR iteration TO count DO routine( iteration ) OD;
 
main: (
 
    # PROC to test the REPEAT operator with                                   #
    PROC say something = VOID: print( ( "something", newline ) );
 
    3 REPEAT say something;
 
    # PROC to test the variant                                                #
    PROC show squares = ( INT n )VOID: print( ( n, n * n, newline ) );
 
    3 REPEAT show squares
 
)
 