While doing this I found these bugs: 1. A lambda wrapped by cl-function with a :documentation form will not get a docstring and the :documentation form will be left in the body of the closure. 2. In code run interactively, a :documentation form in cl-defmacro or defmacro will work correctly. However if you byte-compile that code, the byte-compiler stops with the following error message: Symbol’s function definition is void: internal-make-closure 3. A :documentation form in cl-defgeneric only works if its argument is a string literal. In cl-defmethod, it works whether the argument is a string literal or an expression. 4. A :documentation form works in cl-iter-defun and iter-defun, but not in iter-lambda. Stefan, here's a list of macros in which it appears to me that (:documentation FORM) is supposed to work. Is this correct? Am I missing any? lambda pcase-lambda defun defmacro cl-defun cl-defmacro iter-defun cl-iter-defun iter-lambda function cl-function cl-defgeneric cl-defmethod defsubst cl-defsubst