On 2012-04-27 13:17:36 -0500, Robby Findler wrote: > Specifically, it seems like I can add the contract > (unconstrained-domain-> any) to each method to get it to be opaque > without actually contributing anything of value. > > [...] > > Or is there something else going on there that I'm missing?
The primary reason that I added opaque contracts is that they are needed for Typed Racket's eventual class/object support. A secondary reason is for enforcing contract coverage. You're right though: you could get around this by writing a loose contract or by only specifying the name.[1] The intention is that the contract error would encourage people to write useful contracts (my mistake for saying "force"---it doesn't quite do that) rather than just bypass it. [1]: e.g., (class/c #:opaque m) will allow (class object% (super-new) (define/public (m) ...)) Cheers, Asumu _________________________ Racket Developers list: http://lists.racket-lang.org/dev