if the thing with the ellipsis worked added by certainty on Sat Apr 5 15:23:20 2014

(define-syntax define-record
  (syntax-rules ()
    ((_ ?record (?ctor ?arg ...) ?pred (?slot ?reader ?writer) ...)
     (begin
       (define (?ctor ?arg ...)
         (cons '?record (list '?arg ...)))

       (define (?pred rec)
         (and (list? rec) (eqv? (car rec) '?record)))

       (define (?reader r)
         (list-ref (cdr r) (list-index (lambda (y) (eqv? y '?slot)) (list '?arg ...))))  ...))))