I'm not sure what that error message means, but I think I was thinking of a different strategy. Something like this (but where you deal with 'else' properly and write in '#%kernel (so you have to use the expansion of log-info etc etc)), all staying in the same file.
#lang racket (provide (rename-out [new:case case])) (define-syntax (new:case stx) (with-syntax ([line (syntax-line stx)] [fn (syntax-source stx)]) (syntax-case stx () [(_ exp [(d ...) exp ...]) #'(let ([x exp]) (check-em 'fn line x '(d ... ...)) (case exp [(d ...) exp ...] ...))]))) (define (check-em file line val datums) (for ([datum (in-list datums)]) (unless (eq? (equal? datum val) (eqv? datum val)) (log-info (format "found a difference in ~a:~a; ~s vs ~s" file line datum val))))) Robby On Sun, Nov 25, 2012 at 8:57 PM, Jon Zeppieri <zeppi...@gmail.com> wrote: > On Sun, Nov 25, 2012 at 7:49 PM, Jon Zeppieri <zeppi...@gmail.com> wrote: >> >> Looking back at the users thread, I see what you mean. I'll create a >> branch that will do what you suggest: evaluate the expression both >> ways, compare, and complain if the results differ. >> > > This is not turning out to be as simple as expected. > > I created modules equal-case.rkt and eqv-case.rkt, and then a simple > case macro in case.rkt that uses both. However, the build fails at: > > make xsrc/precomp.h > env XFORM_PRECOMP=yes ../racketcgc -cqu ../../../racket/gc2/xform.rkt > --setup . --cpp "gcc -E -I./.. -I../../../racket/gc2/../include -DOS_X > -D_DARWIN_UNLIMITED_SELECT -pthread -fno-common " --keep-lines -o > xsrc/precomp.h ../../../racket/gc2/precomp.c > /Users/jaz/src/racket/collects/s-exp/lang/reader.rkt:1:36: > syntax/module-reader: got two #:language keywords > in: #:language > context...: > /Users/jaz/src/racket/collects/syntax/module-reader.rkt:19:14: loop > /Users/jaz/src/racket/collects/syntax/module-reader.rkt:35:4: > construct-reader > standard-module-name-resolver > standard-module-name-resolver > standard-module-name-resolver > /Users/jaz/src/racket/src/racket/gc2/xform.rkt:95:24 > /Users/jaz/src/racket/src/racket/gc2/xform.rkt: [running body] > make[4]: *** [xsrc/precomp.h] Error 1 > make[3]: *** [all] Error 2 > make[2]: *** [3m] Error 2 > make[1]: *** [3m] Error 2 > make: *** [all] Error 2 _________________________ Racket Developers list: http://lists.racket-lang.org/dev