|  | ANSI Common Lisp  14 Conses  14.2 Dictionary of Conses 
 
| 14.2.13  tree-equal | Function |  
 
 Syntax:
tree-equal
tree-1 tree-2 &key test test-not
   generalized-boolean 
Arguments and Values:
tree-1 - a tree.
tree-2 - a tree.
 
test - a designator for a function of two arguments
  that returns a generalized boolean.
 
test-not - a designator for 
  a function of two arguments
  that returns a generalized boolean.
 
generalized-boolean - a generalized boolean.
 
Description:
tree-equal tests whether two trees are of the same shape
and have the same leaves.  
tree-equal returns true if tree-1 and tree-2  are 
both atoms and satisfy the test,
or if they are both conses and
the car of tree-1 is tree-equal to
the car of tree-2 and
the cdr of tree-1 is tree-equal to
the cdr of tree-2.  
Otherwise, tree-equal returns false.
tree-equal recursively compares conses but not any 
other objects that have components.  
 
The first argument to the :test or :test-not 
function is tree-1 or a car or cdr of tree-1;
the second argument is tree-2 or a car 
or cdr of tree-2.
 
Examples:
 (setq tree1 '(1 (1 2))
       tree2 '(1 (1 2)))  (1 (1 2))
 (tree-equal tree1 tree2)  true
 (eql tree1 tree2)  false
 (setq tree1 '('a ('b 'c))
       tree2 '('a ('b 'c)))  ('a ('b 'c))  ((QUOTE A) ((QUOTE B) (QUOTE C)))
 (tree-equal tree1 tree2 :test 'eq)  true
Exceptional Situations:
The consequences are undefined 
if both tree-1 and tree-2 are circular.
See Also:
equal,
Section 3.6 Traversal Rules and Side Effects
Notes:
The :test-not parameter is deprecated.
 
Allegro CL Implementation Details:
 None. |