diff --git a/lib/init-7.scm b/lib/init-7.scm index 8a3ea91f..a8c88a74 100644 --- a/lib/init-7.scm +++ b/lib/init-7.scm @@ -143,13 +143,21 @@ (lambda (expr use-env mac-env) (f expr mac-env)))) -(define er-macro-transformer +(define er-macro-transformer* (lambda (f) (lambda (expr use-env mac-env) (f expr (make-renamer mac-env) (lambda (x y) (identifier=? use-env x use-env y)))))) +(define er-macro-transformer + (lambda (f) + (er-macro-transformer* + (lambda (expr rename compare) + (if (not (pair? expr)) + (error "invalid use of non-identifier macro outside operator postion" expr) + (f expr rename compare)))))) + (define-syntax cond (er-macro-transformer (lambda (expr rename compare)