[racket-dev] In Typed Racket, struct declarations do not work in an internal definition context

From: Alexis King (lexi.lambda at gmail.com)
Date: Sat Jan 24 12:33:03 EST 2015

Yes, I’d considered that point, and yes, it makes sense. Anyway, the situation in which I was trying to do something like this ended up being unnecessary, so I don’t even have a valid use-case anymore. I think it’s probably okay to leave it as-is unless someone can come up with a useful reason to care.

> On Jan 24, 2015, at 09:24, Sam Tobin-Hochstadt <samth at cs.indiana.edu> wrote:
> On Thu, Jan 22, 2015 at 3:57 PM, Alexis King <lexi.lambda at gmail.com> wrote:
>> 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.
> I don't currently have plans to work on this problem. The big issue is
> that Racket structs are what's called "generative", meaning that each
> time you execute a struct declaration, you get a different struct
> type. Thus it's not at all clear what the right type should be for
> your `make-me-a-struct` function, and type systems that do allow this
> sort of thing (such as ML) would reject this particular use.
> Can you say more about the specific issue you're having? There might
> be a different way around it.
> Sam

Posted on the dev mailing list.