diff options
author | Ludovic Courtès <ludo@gnu.org> | 2011-02-02 16:17:48 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2011-02-02 18:06:28 +0100 |
commit | b8fff11ed9bfdfe96dc86d1db97ab58286b5f8b5 (patch) | |
tree | 41d60cbd3a8b4d430f411b2fc585355c903f7804 /module/rnrs | |
parent | c62da8f891569aa717f4f8557c7e87650ec92fb1 (diff) | |
download | guile-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.scm | 9 |
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 |