I'm slowly sliding toward a hot take that docstrings as usually implemented in eg Python and Lisp are a mistake in the large, because you have to put them between the function definition and the function code body. Make your docstring too big and you push them too far apart.

@cks In Common Lisp you can set the documentation string outside of the function definition because documentation is setf'able.

(defun sqr (x) (* x x)) (setf (documentation 'sqr 'function) "square a number if you want, i guess")

So you get projects that write all user-facing documentation outside of the files that define them, like in 3d-math: https://codeberg.org/shinmera/3d-math/src/branch/main/dual-quaternions/documentation.lisp

As a user though you're never actually looking at that file though of course. You use your editors tools.

3d-math/dual-quaternions/documentation.lisp at main

3d-math - A library implementing the necessary linear algebra math for 2D and 3D computations

Codeberg.org