Would a structure type property be a viable alternative?  Example:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#lang racket/load

(module a racket

  (define-values (prop:S S? S-ref) (make-struct-type-property 'S))
  (provide S?)

  (define-struct s (a b) #:transparent #:property prop:S #t)

  (provide/contract [struct s ([a number?]
                               [b number?])]))

(module b racket
  (require 'a)
  (define a-struct (make-s 3 4))
  (define-values (type _) (struct-info a-struct))
  (printf "type: ~s\n" type)
  (printf "S?: ~s\n" (S? (make-s 3 4)))
  (printf "eq? ~s\n" (eq? type struct:s)))

(require 'b)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to