Ok, I’m happy to take a crack at it if you think that’s a good approach. I am quite comfortable with C, but I have basically no idea how Racket’s internals work, so that’d be the real barrier. I think one of the less-technical questions would also just be how to expose this information in Racket.
I do think using a number is probably too fragile, but even then, it doesn’t matter too much, since somehow there needs to be a known set of values for comparisons. Something like (eq? (type-of some-val) type:list) needs to be possible, but I’m not sure where type:list should go or what it should actually be called. > On Mar 26, 2016, at 16:01, Jay McCarthy <[email protected]> wrote: > > We could expose the C virtual machine's type tags and that would be > O(1) to a unique number. We could define the number as not being > stable across executions of Racket or versions, whichever we like > better. > > If you're uncomfortable with the number, we could combine it with an > O(1) hash lookup from the number to a symbol. > > I think an extension like this is achievable for someone with a > cursory knowledge of C. You should do it Alexis. > > -- > > The numbers are given here in this enum: > > https://github.com/racket/racket/blob/master/racket/src/racket/src/stypes.h > > The type tag is just called type: > > https://github.com/racket/racket/blob/master/racket/src/racket/include/scheme.h#L326` > > Jay -- You received this message because you are subscribed to the Google Groups "Racket Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/034504BF-6A0B-4158-B389-4DCA0DED6FFD%40gmail.com. For more options, visit https://groups.google.com/d/optout.
