1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 13:00:26 +02:00

(@, @@): New macros.

This commit is contained in:
Marius Vollmer 2003-11-17 00:28:03 +00:00
parent b58e742039
commit 473687d130

View file

@ -2893,6 +2893,31 @@
(define load load-module)
;; The following macro allows one to write, for example,
;;
;; (@ (ice-9 pretty-print) pretty-print)
;;
;; to refer directly to the pretty-print variable in module (ice-9
;; pretty-print). It works by looking up the variable and inserting
;; it directly into the code. This is understood by the evaluator.
;; Indeed, all references to global variables are memoized into such
;; variable objects.
(define-macro (@ mod-name var-name)
(let ((var (module-variable (resolve-interface mod-name) var-name)))
(if (not var)
(error "no such public variable" (list '@ mod-name var-name)))
var))
;; The '@@' macro is like '@' but it can also access bindings that
;; have not been explicitely exported.
(define-macro (@@ mod-name var-name)
(let ((var (module-variable (resolve-module mod-name) var-name)))
(if (not var)
(error "no such variable" (list '@@ mod-name var-name)))
var))
;;; {Parameters}
;;;