I wrote a syntax-rules macro to define a record type with updaters instead of mutators: gitlab.com/dpk/presrfis/-/blob