[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
29.7 Library and macros
Bigloo libraries can export macros, expanders, and syntaxes but these
must be handled carefully. Macros (these also applies to expanders and
syntaxes) exported by modules are not visible by client code. Exported
macros have to be placed inside the initialization file. For instance,
if we change the definition of bformat.init
file for:
(declare-library! 'bformat :version "1.0" :srfi '(bformat) :basename "bigloobformat" :module-init '__bformat :module-eval '__make_lib :class-init "bigloo.bformat.__bformat" :class-eval "bigloo.bformat.__make_lib") (define-expander BFORMAT (lambda (x e) (match-case x ((?- (? (lambda (s) (and (string? s) (not (string-index s #\%))))) . ?a ) `(string-append ,@(cdr x))) (else `(bformat ,@(map (lambda (x) (e x e)) (cdr x)))))
At compile time the macro BFORMAT will be declared. Hence, we can change
the definition of foo.scm
for:
(module foo (library bformat)) (bigloo-library-path-set! (cons (pwd) (bigloo-library-path))) (print (BFORMAT "library path: %a" (bigloo-library-path))) (eval '(library-load 'bformat)) (repl)
This document was generated on March 31, 2014 using texi2html 5.0.