There’s a bug report about this here: http://bugs.racket-lang.org/query/?cmd=view&pr=14524 Though I notice it gives a different error message now. But why should structure type declarations being a module-wide construct? Internal function definitions work, and internal type definitions work, so why shouldn’t internal structure definitions?
On Jan 22, 2015, at 3:57 PM, Alexis King <lexi.lam...@gmail.com> wrote: > Simple enough. This works: > > #lang racket > > (define (make-me-a-struct) > (struct foo ()) > (foo)) > > (make-me-a-struct) ; => #<foo> > > This does not: > > #lang typed/racket > > (define (make-me-a-struct) > (struct foo ()) > (foo)) ; error: cannot apply a function with unknown arity > > (make-me-a-struct) > > This problem makes sense. Type declarations seem to be a module-wide > construct, so a type that should be scoped to a single function doesn’t work. > I’m running into this issue when trying to create an executable struct using > define-struct/exec from within a macro, which doesn’t work due to this > particular problem. > > I can work around this in a variety of ways—I can extract this into an > untyped module and use require/typed, I can use vectors to “fake” structs and > provide an appropriate interface, etc. Still, I wonder if there are any plans > to resolve this type of problem? Since it seems to be an issue with how TR > handles types at its core, I’m not even sure how feasible it would be. > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev
_________________________ Racket Developers list: http://lists.racket-lang.org/dev