Idea for the day:
A function/macro to not return an instance of an object/struct, but a constructor to generate that object/struct in its current state. Probably demonstrated in Lisp by now.
@rocx Oleg thought of this in 1999: https://srfi.schemers.org/srfi-10/srfi-10.html
@rocx Unless the object/struct holds some kind of magical/stateful/singleton value (maybe socket, file handle, etc.), this f closes over the object and returns a constructor function that calls clone/dup on the obj. (Extra copy needed in closure if obj is mutable.)