Hi, I recently experimented with docstrings, and I stumbled over not being able to define a function which only has a docstring as body:
(define (foo) "bar") (procedure-documentation foo) ⇒ #f Adding a form makes the string act as docstring: (define (foo) "bar" #f) (procedure-documentation foo) ⇒ "bar" I feel that this is inconsistent, which hurts even more, because it breaks for the simplest showcase of docstrings. My use case for using docstrings like this is that when I start writing a function, I begin with the docstring. There I explain what I want to do. Then I commit. Then I implement the function. We already discussed in #guile @ freenode, that it is simple to add a dummy-body to make the docstring work. To me that feels like a cludge. And I was asked to move the discussion here. A reason for not wanting a string as the only part of the body to be seen as docstring are that this would make it harder to write functions which only return a string without giving them their return value as docstring. This would then require this: (define (foo) #f "bar") I think it would be more consistent to have the first form of the body double as a docstring if it is a string. The current behaviour is that if the first form in the function is a string, it is not part of the body - except if the body would otherwise be empty. What do you think? Best wishes, Arne