ref: 8a26e53e24fd1fca9cc2ff6e60d60d69c25d602f
dir: /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.")
(load "docs_ops.lsp")
(del! *syntax-environment* 'doc-for)