When using require/typed with a struct type in the signature, it seems
to matter if the require comes before or after the struct definition:

typed.rkt
=========
#lang typed/racket

(require/typed "untyped.rkt"
 [number-me (my-struct -> Number)])

(struct: my-struct ())

(number-me (my-struct))

untyped.rkt
=========
#lang racket/base

(provide number-me)
(define (number-me _) 52)


Running typed.rkt yields:

my-struct?: undefined;
 cannot reference an identifier before its definition

But, if I change typed.rkt to

typed2.rkt
=========
#lang typed/racket

(struct: my-struct ())

(require/typed "untyped.rkt"
 [number-me (my-struct -> Number)])

(number-me (my-struct))


There's no error and the call succeeds.

Any reason for the ordering dependency?  It's quite inconvenient to be
shuffling require statements around as soon as you want to put a
struct in their type, so I'm assuming this wasn't intended.
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to