+;;; Note: This implementation isn't perfect, because it allows
+;;; non-toplevel mutations. Ideally it'd act just like DEFUN. We can
+;;; do this in SBCL using internals:
+;;; (sb-impl::%defun 'f (lambda (x) (* x x)))
+;;; or so. But we won't rely on internal APIs.
(defmacro defunction (symbol function)
"Define a function (bound to SYMBOL) based off of a function value