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?