続 my-define

id:SaitoAtsushi さんと id:g000001さんの助けでたどりつきました。

(define-syntax my-define
  (lambda (x)
    (syntax-case x ()
      ((k var val)
       (with-syntax ([var (datum->syntax #'k (string->symbol
                           (format "$~a" (syntax->datum #'var))))])
         #'(define var val))))))

Ypsilon だと下のコードでも通ります。(R6RS的にOKかは分からない)

(define-syntax my-define
  (lambda (x)
    (syntax-case x ()
      ((k var val)
       (with-syntax ([var (string->symbol
                           (format "$~a" (syntax->datum #'var)))])
         #'(define var val))))))