(define-syntax +(lambda (stx)(syntax-case stx ()((_ x y) #'(fast-binary-plus x y)((_ arg ...) #'(slow-general-plus arg ...))((id (identifier? #'id) #'slow-general-plus))))..otherwise, the (_ #'slow-general-plus) clause will match the entire form (+ a b c d ...), not just the identifier +, and the result of expression will be the slow-general-plus procedure object.This should also resolve John's concern.