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

From: Eric Dobson (eric.n.dobson at gmail.com)
Date: Tue Sep 18 20:48:54 EDT 2012

I have done some work in this area, and my patches are currently
sitting on github waiting for comments. (And also some cleanup by me).

I believe that the current version in my pull request will give a
static error here.

https://github.com/plt/racket/pull/139

On Tue, Sep 18, 2012 at 5:38 PM, Matthias Felleisen
<matthias at ccs.neu.edu> wrote:
>
> +1
>
> A flavor of this problem has come up repeatedly, and it will come up again. We need some fix.
>
>
>
>
>
> On Sep 18, 2012, at 6:28 PM, Ryan Culpepper wrote:
>
>> Typed Racket should raise an error saying something like "(Setof Any) cannot be translated to a contract". Then elaborate in the docs where you discuss interaction with untyped code about what types cannot be converted to contracts and maybe why.
>>
>> Ryan
>>
>>
>> On 09/18/2012 06:00 PM, Sam Tobin-Hochstadt 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
>>>
>>>
>>>
>>
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users
>
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

Posted on the users mailing list.