| 6 seconds | Name binding, Recursion, Iteration, and Continuations - slide 42 : 42 |
If we find the node we are looking for it is convenient to throw the out of the tree traversal
(define (find-in-tree tree pred)
(call-with-current-continuation
(lambda (found)
(letrec
((find-in-tree1
(lambda (tree pred)
(if (pred tree)
(found tree)
(let ((subtrees (subtree-list tree)))
(for-each
(lambda (subtree) (find-in-tree1 subtree pred))
subtrees)))
#f)))
(find-in-tree1 tree pred))) ))
