summaryrefslogtreecommitdiff
path: root/module/rnrs
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-02-02 16:17:48 +0100
committerLudovic Courtès <ludo@gnu.org>2011-02-02 18:06:28 +0100
commitb8fff11ed9bfdfe96dc86d1db97ab58286b5f8b5 (patch)
tree41d60cbd3a8b4d430f411b2fc585355c903f7804 /module/rnrs
parentc62da8f891569aa717f4f8557c7e87650ec92fb1 (diff)
downloadguile-b8fff11ed9bfdfe96dc86d1db97ab58286b5f8b5.tar.gz
Avoid circular dependency between (rnrs base) and (rnrs exceptions).
* module/rnrs/base.scm (raise): Define as a macro instead of a procedure.
Diffstat (limited to 'module/rnrs')
-rw-r--r--module/rnrs/base.scm9
1 files changed, 7 insertions, 2 deletions
diff --git a/module/rnrs/base.scm b/module/rnrs/base.scm
index c81ded134..4c9c51bb0 100644
--- a/module/rnrs/base.scm
+++ b/module/rnrs/base.scm
@@ -123,8 +123,13 @@
(define (vector-map proc . vecs)
(list->vector (apply map (cons proc (map vector->list vecs)))))
- (define raise
- (@ (rnrs exceptions) raise))
+ (define-syntax raise
+ ;; Resolve the real `raise' lazily to avoid a circular dependency
+ ;; between `(rnrs base)' and `(rnrs exceptions)'.
+ (syntax-rules ()
+ ((_ c)
+ ((@ (rnrs exceptions) raise) c))))
+
(define condition
(@ (rnrs conditions) condition))
(define make-error