summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1998-06-07 10:29:40 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1998-06-07 10:29:40 +0000
commitcf266109003fc1b202bc62d9a23615ba3e45d545 (patch)
tree228550a009a1bb5f9243748c5aa5e6d23d9059cf
parent6dabf6a95cc6e653dced403a52e446b20a9d014c (diff)
downloadguile-cf266109003fc1b202bc62d9a23615ba3e45d545.tar.gz
* boot-9.scm (use-syntax): Turned into a macro inorder to be
similar in use to `use-modules'. Example: (use-syntax (ice-9 syncase)) will 1. load the module (ice-9 syncase), and, 2. install the procedure `syncase' as eval transformer. (internal-use-syntax): New procedure. (process-define-module): Use `internal-use-syntax'.
-rw-r--r--ice-9/ChangeLog10
-rw-r--r--ice-9/boot-9.scm21
2 files changed, 23 insertions, 8 deletions
diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog
index e40d8a185..903447194 100644
--- a/ice-9/ChangeLog
+++ b/ice-9/ChangeLog
@@ -1,3 +1,13 @@
+1998-06-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * boot-9.scm (use-syntax): Turned into a macro inorder to be
+ similar in use to `use-modules'.
+ Example: (use-syntax (ice-9 syncase)) will 1. load the module
+ (ice-9 syncase), and, 2. install the procedure `syncase' as eval
+ transformer.
+ (internal-use-syntax): New procedure.
+ (process-define-module): Use `internal-use-syntax'.
+
1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* Makefile.am (ice9_sources): Add emacs.scm.
diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm
index 6e38717e9..7e768899b 100644
--- a/ice-9/boot-9.scm
+++ b/ice-9/boot-9.scm
@@ -1861,6 +1861,10 @@
(define %autoloader-developer-mode #t)
+(define (internal-use-syntax transformer)
+ (set-module-transformer! (current-module) transformer)
+ (set! scm:eval-transformer transformer))
+
(define (process-define-module args)
(let* ((module-id (car args))
(module (resolve-module module-id #f))
@@ -1893,11 +1897,9 @@
(if (not interface)
(error "missing interface for use-module" used-module))
(if (eq? keyword 'use-syntax)
- (let ((transformer (module-ref interface
- (car (last-pair used-name))
- #f)))
- (set-module-transformer! module transformer)
- (set! scm:eval-transformer transformer)))
+ (internal-use-syntax
+ (module-ref interface (car (last-pair used-name))
+ #f)))
(loop (cddr kws) (cons interface reversed-interfaces)))))
(else
(error "unrecognized defmodule argument" kws))))))
@@ -2717,9 +2719,12 @@
(defmacro use-modules modules
`(process-use-modules ',modules))
-(define (use-syntax transformer)
- (set-module-transformer! (current-module) transformer)
- (set! scm:eval-transformer transformer))
+(defmacro use-syntax (spec)
+ (if (pair? spec)
+ `(begin
+ (process-use-modules ',(list spec))
+ (internal-use-syntax ,(car (last-pair spec))))
+ `(internal-use-syntax ,spec)))
(define define-private define)