In trying to use the ffi example interface to the xosd program (xosd.rkt/use-xosd.rkt at ), I notice that
(define-syntax defxosd (syntax-rules (:) [(_ name : type ...) (define name (get-ffi-obj (regexp-replaces 'name '((#rx"-" "_") (#rx"[*?]$" ""))) libxosd (_fun type ...)))])) fails on execution, with: regexp-replace*: contract violation expected: (or/c string? bytes?) given: 'xosd-create argument position: 2nd other arguments...: #rx"-" "_" It appears Racket is now more strict, and perhaps what used to work now doesn't. I naively fixed the immediate problem by using the ~a form (from racket/format) to convert the constant formed with 'name to a string, i.e, replace: (get-ffi-obj (regexp-replaces 'name '((#rx"-" "_") (#rx"[*?]$" ""))) with: (get-ffi-obj (regexp-replaces (~a 'name) '((#rx"-" "_") (#rx"[*?]$" ""))) Was this the right thing to do, or is there a better way? Cheers, Kieron.
____________________ Racket Users list: http://lists.racket-lang.org/users