This patch implements the R7RS 'syntax-error' macro, which supports improved error reporting from within 'syntax-rules' macros. For example: (define-syntax simple-let (syntax-rules () ((_ (head ... ((x . y) val) . tail) body1 body2 ...) (syntax-error "expected an identifier but got" (x . y))) ((_ ((name val) ...) body1 body2 ...) ((lambda (name ...) body1 body2 ...) val ...)))) (define (foo x) (simple-let ((y (* x x)) ((z1 z2) (values x x))) (+ y 1))) => While compiling expression: ERROR: Syntax error: unknown location: simple-let: expected an identifier but got (z1 z2) in form (simple-let ((y (* x x)) ((z1 z2) (values x x))) (+ y 1)) This patch assumes that my earlier "custom ellipses" patch has already been applied. I'd like to push these to stable-2.0. Comments and suggestions welcome. Mark