(index ("ir-macros" 0) ("ir-macro-rules" 322) ("ir-macro-define" 773) ("ir-macro-let" 1316) ("ir-macro-letrec" 1825))
(def (sig (procedure "(ir-macros sym)" (id ir-macros))) (p "where sym is optional.") (p "This is the documentation dispatcher provided for all modules written in the Design-by-Contract style. Without a symbol, it lists all exported symbols of the module, with one of these symbols it prints the contract of the symbol."))
(def (sig (syntax "(ir-macro-rules (sym ...) (code0 xpr0) (code1 xpr1) ...)" (id ir-macro-rules))) (p "pairs the differnt macro-codes code0 code1 ... with expressions xpr0 xpr1 ..., which usually evalute to backquoted templates in the scope of injected symbols sym ....") (p "This macro is unhygienic by design, it introduces the two symbols inject and compare? into its scope. The macro is implemented in contracts and passed through to ir-macros"))
(def (sig (syntax "(ir-macro-define (name . args) . body)" (id ir-macro-define))) (p "defines a macro with macro-code (name . args) by means of body, which is either a sequence of expressions xpr . xprs which generate a template, or a list of the form (with-injected (sym ...) xpr . xprs). In the latter case the macro is unhygienic and pollutes its local namespace with sym ..., in the former case it is hygienic.") (p "Note, that this macro in its hygienic form has exactly the same syntax as define-macro of Chicken-3 and other Schemes!"))
(def (sig (syntax "(ir-macro-let ((code0 . body0) ...) . body)" (id ir-macro-let))) (p "where code0 ... is the macro-code (name0 . args0) ... of a local macro and body0 ... the corresponding body which generates a template. As in ir-macro-define this must either be a sequence of expressions, xpr0 .  xprs0, or a list of the form (with-injected (sym0 ...) xpr0 . xprs0). In the latter case the local macros are unhygienic.  These macros are locally defined in parallel and in there scope body is executed."))
(def (sig (syntax "(ir-macro-letrec ((code0 body0) ...) . body)" (id ir-macro-letrec))) (p "recursive version of ir-macro-let, i.e. the local macros have access to each other."))
