f = on f -- replaces the function f by a version which will print out its arguments and return value each time it's called, together with a sequence number so the two reports can be connected.
This function is of only limited utility because it cannot be used with write-protected system functions.
The reason we write f = on f and not something like f = on(x -> ...) is so the function handed to on will know its name. The name will appear in the display.
Optional arguments :