Thinking about this further, I think Typed Racket should always know
when chaperone contracts are required, just as it currently checks
when flat contracts are required. So this shouldn't be too hard to
fix.

On Tue, Sep 18, 2012 at 6:23 PM, Robby Findler
<ro...@eecs.northwestern.edu> wrote:
> 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 <sa...@ccs.neu.edu> 
> 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
>> <ro...@eecs.northwestern.edu> 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 <sa...@ccs.neu.edu> 
>>> 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 <to...@ccs.neu.edu> 
>>>> 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
>>>> sa...@ccs.neu.edu
>>>> ____________________
>>>>   Racket Users list:
>>>>   http://lists.racket-lang.org/users
>>
>>
>>
>> --
>> sam th
>> sa...@ccs.neu.edu



-- 
sam th
sa...@ccs.neu.edu
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to