From b8fff11ed9bfdfe96dc86d1db97ab58286b5f8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 2 Feb 2011 16:17:48 +0100 Subject: [PATCH] Avoid circular dependency between (rnrs base) and (rnrs exceptions). * module/rnrs/base.scm (raise): Define as a macro instead of a procedure. --- module/rnrs/base.scm | 9 +++++++-- 1 file 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