Racket update! apparently you can do what I was trying to do with objects*, but it just takes a separate form: dynamic-get-field
which means I can go straight back to bullying Racket into being a comfortable language to use
* getting/setting an object’s field when I only know the name of the field at runtime
by the way? I have no idea why get-field and dynamic-get-field are like this but the way they’re designed is asinine for at least three separate reasons and they belong in the dumpster. thankfully Racket is a Lisp so I can just smack it in the face with macros until it decides to not be asinine anymore