For metaobject protocol like stuff, Guile has GOOPS and Racket has Swindle (as a separate package), but unfortunately it looks like Swindle's author is no longer a fan of its core designs https://www.reddit.com/r/Racket/comments/2crihw/why_is_swindle_hidden_away/