Can you explain more? Surely TR must know what "Setof" is, because it translated it to "set/c" and surely it must know what "Any" is, since it turned it into some other contract. That seems like enough information to me.
Robby On Tue, Sep 18, 2012 at 5:00 PM, Sam Tobin-Hochstadt <[email protected]> wrote: > I'm saying that I don't at the moment know how to avoid giving this > error, given the current behavior of `set/c`. > > On Tue, Sep 18, 2012 at 5:57 PM, Robby Findler > <[email protected]> wrote: >> Are you saying it is reasonable that a typed racket program should >> produce contract constructor errors like that? >> >> Robby >> >> On Tue, Sep 18, 2012 at 4:53 PM, Sam Tobin-Hochstadt <[email protected]> >> wrote: >>> The problem here is that `Any` is a special contract which isn't a >>> "chaperone contract", and `set/c` requires chaperone contracts. >>> >>> It's not obvious to me if this can be detected statically, but you can >>> work around this by changing `Any` to some other type. >>> >>> Sam >>> >>> On Tue, Sep 18, 2012 at 5:44 PM, Tony Garnock-Jones <[email protected]> >>> wrote: >>>> Hi all, >>>> >>>> What could I be doing wrong here? >>>> >>>> #lang typed/racket >>>> (provide (struct-out foo)) >>>> (struct: foo ([bar : (Setof Any)])) >>>> >>>> Racket 5.3.0.24 complains about it ("racket problem.rkt"): >>>> >>>> set/c: contract violation >>>> expected: chaperone-contract? >>>> given: #<make-contract> >>>> context...: >>>> /Users/tonyg/src/racket-typed-matrix/problem.rkt: [running body] >>>> >>>> The complaint vanishes if I comment out the provide, remove the bar >>>> field, or change the bar field's type to Any/Integer/etc. >>>> >>>> Tony >>>> ____________________ >>>> Racket Users list: >>>> http://lists.racket-lang.org/users >>> >>> >>> >>> -- >>> sam th >>> [email protected] >>> ____________________ >>> Racket Users list: >>> http://lists.racket-lang.org/users > > > > -- > sam th > [email protected] ____________________ Racket Users list: http://lists.racket-lang.org/users

