declare proc {MapTreeTest MapTree} fun {Add1 X} X+1 end fun {Add3 X} X+3 end in {Test {MapTree node(item:4 subtrees:nil) Add1} '=' node(item:5 subtrees:nil)} {Test {MapTree node(item:3 subtrees:[node(item:4 subtrees:nil) node(item:7 subtrees:nil)]) Add3} '=' node(item:6 subtrees:[node(item:7 subtrees:nil) node(item:10 subtrees:nil)])} {Test {MapTree node(item:10 subtrees:[node(item:3 subtrees:[node(item:4 subtrees:nil) node(item:7 subtrees:nil)]) node(item:10 subtrees:[node(item:20 subtrees: nil) node(item:30 subtrees: nil) node(item:40 subtrees: nil)] )]) Add3} '=' node(item:13 subtrees:[node(item:6 subtrees:[node(item:7 subtrees:nil) node(item:10 subtrees:nil)]) node(item:13 subtrees:[node(item:23 subtrees: nil) node(item:33 subtrees: nil) node(item:43 subtrees: nil)] )])} end