[racket] typing a function

From: Pierpaolo Bernardi (olopierpa at gmail.com)
Date: Wed Nov 21 12:34:29 EST 2012

Another puzzle.  Why the following, as written, does not type:

========
#lang typed/racket

(define-type sex (U -1 0 1))

(struct: sexomino
  ((n : sex)
   (e : sex)
   (s : sex)
   (o : sex)))

(: sexomini (Listof sexomino))
(define sexomini
  (let ()
    (define n 0)
    (define f -1)
    (define m 1)
    (define s sexomino)
    (list (s n m n n) (s f f n n))))
========

while it works if I change the last line to:

 (list (s n m n n) (s -1 -1 n n))))

?

Cheers
P.

Posted on the users mailing list.