I’m trying to use the database library db with TR, and I’ve run into a problem whose only workaround seems really nasty.
Specifically, it concerns vectors (or lists, presumably) that contain opaque values. So, for instance, here’s foo1.rkt: #lang racket (provide return-a-list) (struct my-struct ()) (define (return-a-list) (vector 13 (my-struct) 15)) … and here’s foo2.rkt: #lang typed/racket (require/typed "foo1.rkt" [return-a-list (-> (Vectorof Any))]) (return-a-list) Running foo2.rkt produces this error: . . return-a-list: contract violation Attempted to use a higher-order value passed as `Any` in untyped code: #<my-struct> in: an element of the range of (-> (vectorof Any)) contract from: (interface for return-a-list) blaming: /private/tmp/foo2.rkt (assuming the contract is correct) at: /private/tmp/foo2.rkt:4.16 Making “my-struct” transparent solves this problem, but the problem arises for me in the use of db’s #<sql-null>, which I can’t mess with. Frankly, it looks like the easiest workaround is just … not to use TR here. Am I missing something obvious? Also, I’d love a bit more explanation of how this breaks TR’s type safety guarantee. Thanks! John -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.