ref: df22ae34a79a76ed07090be41fce329b8d3cfe6c
dir: /src/docs_extra.lsp/
(define-macro (doc-for term (doc #f))
(let* ((sym (or (and (cons? term) (car term)) term))
(val (top-level-value sym))
(funvars (and (cons? term) (cdr term))))
(if (not funvars)
(when (function? val)
(error "docs: " sym ": no funvars specified"))
(unless (function? val)
(error "docs: " sym ": funvars set but isn't a function")))
`(symbol-set-doc ',sym ',doc ',funvars)))
(doc-for (= a . rest)
"Return #t if the arguments are equal.")
(doc-for (nan? x)
"Return #t if the argument is NaN, regardless of the sign.")
(doc-for (vm-stats)
"Print various VM-related information, such as the number of GC calls
so far, heap and stack size, etc.")
(doc-for (lz-pack data (level 0))
"Return data compressed using Lempel-Ziv.
The data must be an array, returned value will have the same type.
The optional level is between 0 and 10. With level 0 a simple LZSS
using hashing will be performed. Levels between 1 and 9 offer a
trade-off between time/space and ratio. Level 10 is optimal but very
slow.")
(doc-for (lz-unpack data :to destination))
(doc-for (lz-unpack data :size decompressed-bytes)
"Return decompressed data previously compressed using lz-pack.
Either destination for the decompressed data or the expected size of
the decompressed data must be specified. In the latter case a new
array is allocated.")
(doc-for (rand)
"Return a random non-negative fixnum on its maximum range.")
(doc-for (rand-uint64)
"Return a random integer on [0, 2⁶⁴-1] interval.")
(doc-for (rand-uint32)
"Return a random integer on [0, 2³²-1] interval.")
(doc-for (rand-double)
"Return a random double on [0.0, 1.0] interval.")
(doc-for (rand-float)
"Return a random float on [0.0, 1.0] interval.")