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))) ))