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.




include "cowgol.coh";
 
# Only functions that implement an interface can be passed around
# The interface is a type and must be defined before it is used
# This defines an interface for a function that takes no arguments
interface Fn();
 
# This function repeats a function that implements Fn
sub Repeat(f: Fn, n: uint32) is
    while n != 0 loop
        f();
        n := n - 1;
    end loop;
end sub;
 
# Here is a function
sub Foo implements Fn is
    print("foo ");
end sub;
 
# Prints "foo foo foo foo"
Repeat(Foo, 4);
print_nl(); 