REBOL [ Title: "Object Cloner" File: %cloneobj.r Email: timewarp@sirius.com Author: "Erin A. Thomas" Date: 30-Jun-2000 Purpose: { Clone objects recursively. This way the objects inside are copies instead of references. } Example: { new-object clone make existing-object [] } Category: [util 3] ] clone: func [ "Clones all sub objects so there are no multiple references" o [object!] "The object to clone" /local wrd so ] [ foreach wrd next first o [ if object? so: get in o :wrd [(set in o :wrd make so []) (clone so)] ] return o ]