This was mind-boggling to debug! In syntax-rules, the pattern (x ...) will match #nil, since it matches the empty list. This can have surprising consequences. Consider: (define-syntax test (syntax-rules () ((test (x ...)) (x ...)) ((test x) x))) (test (+ 1 2)) ; => 3 (test 123) ; => 123 (test #f) ; => #f ;; However... (test #nil) ; error Anyway, attached is a patch to fix the issue in match. - Taylan