[racket] comparing structure types through contracts
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)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;