This is not exactly doing what my example does. (In your
version, you have no control about the error case - whether it
is signaled or not, what the error message is, etc.) If you
don't like this argument, consider the following instead:
(define f
(case-lambda
((x y z) (* x y z))
(args
(log "f has been invoked with a
wrong number of arguments" args)
(error "f has to be invoked with
exactly three arguments"))))
Just two more instances of "..." (or ,@ or whatever,
depending on your pattern matcher).
Marc