6.9.4 Copying Deep Structures

The procedures for copying lists (see Lists) only produce a flat copy of the input list, and currently Guile does not even contain procedures for copying vectors. The (ice-9 copy-tree) module contains a copy-tree function that can be used for this purpose, as it does not only copy the spine of a list, but also copies any pairs in the cars of the input lists.

(use-modules (ice-9 copy-tree))
Scheme Procedure: copy-tree obj
C Function: scm_copy_tree (obj)

Recursively copy the data tree that is bound to obj, and return the new data structure. copy-tree recurses down the contents of both pairs and vectors (since both cons cells and vector cells may point to arbitrary objects), and stops recursing when it hits any other object.