@akater
I did it y'all. I turned #scheme into a proper #lisp
(we already have defmacro, loop [ala (let loop () ...)], defmethod (as define-method), defun is simple function definitions iirc, so all is thats left is unwind-protect, which trivially defined using dynamic-wind)
Besides, no matter how you try to implement defun in Scheme, it won't do what it does in CL: no separate function namespace. unwind-protect is not the same as dynamic-wind. “let loop” is not the same as CL's loop. defmacro is discouraged (but yeah, some Scheme implementations offer it under the table anyway because Scheme's own approach to macros misses the point of Lisp macros, and users want Lisp macros).
Besides, no matter how you try to implement defun in Scheme, it won't do what it does in CL: no separate function namespace. unwind-protect is not the same as dynamic-wind. “let loop” is not the same as CL's loop. defmacro is discouraged...