[racket] DRRacket Check Syntax Loops Endlessly (Sample Provided)

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Thu Nov 1 12:16:46 EDT 2012

On Thu, Nov 1, 2012 at 12:07 PM, Ray Racine <ray.racine at gmail.com> wrote:
> Fresh build from Racket git MASTER, the following causes DRRacket's Check
> Syntax to loop without termination.

Clearly, this isn't the behavior you want, but I don't think a
contract is possible to generate for this code.

If you change the type of the S2-x field to `(S0 T)`, then it works.
That might even have been what you wanted.

>
> #lang typed/racket/base
>
> (provide f)
>
> (struct: (T) S1 ([x : (Listof String)]))
>
> (struct: (T) S2 ([x : S0]
>                  [g : (T -> Boolean)]))
>
> (define-type (S0 T) (U (S1 T) (S2 T)))
>
> (: f (String -> (S0 String)))
> (define (f x)
>   (S1 '()))
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
>



--
sam th
samth at ccs.neu.edu

Posted on the users mailing list.