enum data, left, right function tmap(sequence tree, integer rid) tree[data] = call_func(rid,{tree[data]}) if tree[left]!=null then tree[left] = tmap(tree[left],rid) end if if tree[right]!=null then tree[right] = tmap(tree[right],rid) end if return tree end function function newnode(object v) return {v,null,null} end function function add10(atom x) return x+10 end function procedure main() object root = newnode(1.00) -- Add some nodes. root[left] = newnode(1.10) root[left][left] = newnode(1.11) root[left][right] = newnode(1.12) root[right] = newnode(1.20) root[right][left] = newnode(1.21) root[right][right] = newnode(1.22) -- Now the tree has seven nodes. -- Show the whole tree. ppOpt({pp_Nest,2}) pp(root) -- Modify the whole tree. root = tmap(root,routine_id("add10")) -- Create a whole new tree. object root2 = tmap(root,rid) -- Show the whole tree again. pp(root) end procedure main()