;; note that these options are not mutually exclusive! ; option 1: Explicitly state the thing you're documenting, letting you define it wherever you please. ; Going to need this syntax no matter what, so it's not really an option, but I digress. (document procedure (x a b) "Takes args and does stuff." #:arg a ("An argument." #:type fixnum) #:ret "A value." ) ; option 2: A bit of read syntax. Looks at what's directly below it, ; and makes a doc based on that (whether it be a define, define-syntax, module, etc.) #@( "Takes args and does stuff." #:arg a ("An argument." #:type fixnum) #:ret "A value." ) (define (x a b) c) ; option 3: csdoc has its own define function, that you can use to both define a procedure and document it. ; csdoc-define-syntax, etc. will also be a thing if we go this route. ; As a bonus, specifying types of things in the docs can automatically add calls to ":"/"the" for you. (csdoc-define (x a b) ( "Takes args and does stuff." #:arg a ("An argument." #:type fixnum) #:ret "A value." ) c )