Supongamos que tengo dos objetos complejos diferentes, a y b, cada uno de los cuales puede contener otros objetos o matrices. Quiero obtener la diferencia de a y b de manera que pueda 'aplicar' ese parche a a para obtener b, o 'aplicarlo al revés' a b para obtener a. En otras palabras, quiero poder hacer un viaje de ida y vuelta, sin importar cuán complejo sea el objeto.
La razón por la que necesito esto es porque quiero poder volver a los distintos estados de un registro en una base de datos a lo largo del tiempo. Cada vez que cambia el registro, quiero almacenar un parche y quiero poder reproducir los parches hacia adelante o hacia atrás para llegar a cualquier estado anterior de ese registro.
Cualquier ayuda sería muy apreciada.