[racket] What am I doing wrong in this typed racket program?

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Tue Sep 18 18:23:47 EDT 2012

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 <samth at 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
> <robby at 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 <samth at 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 <tonyg at 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
>>> samth at ccs.neu.edu
>>> ____________________
>>>   Racket Users list:
>>>   http://lists.racket-lang.org/users
>
>
>
> --
> sam th
> samth at ccs.neu.edu

Posted on the users mailing list.