If I have a syntax extension that expands to include "define" and/or "provide/contract" (at top level, possibly within a "begin"), will that break any Racket tools?

The "myprogram.rkt" below works, but I don't know whether this will break some tool now or in the future.

#lang racket/base
;; File: foo.rkt
(require racket/contract)
(define-syntax foo-define/provide/contract/begin
 (syntax-rules ()
   ((_ SYM CONTRACT BODY0 BODYn ...)
    (begin (display "*DEBUG* before\n")
           (define SYM BODY0 BODYn ...)
           (provide/contract (SYM CONTRACT))
           (display "*DEBUG* after\n")))))
(provide foo-define/provide/contract/begin)

#lang racket/base
;; File: mymodule.rkt
(require "foo.rkt")
(foo-define/provide/contract/begin onetwothree number? 123)

#lang racket/base
;; File: myprogram.rkt
(require "mymodule.rkt")
(printf "onetwothree is ~S\n" onetwothree)

--
http://www.neilvandyke.org/
_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/users

Reply via email to