Why does ASDF use the

(operate operation-name arguments ...)

convention instead of the more usual function call

(function-name arguments ...)

Even with `operate', eventually a function will be called.

Also that one can define top level functions that call operate
(defun foo (...)
   (operate 'foo-operation ...))

What does the extra layer of operate allow that generic functions and methods
do not?

Thank you,

Mirko