Abstraction of Depth-First Search
- With success criteria & successor function
(define search
(lambda (stack next success)
(cond ((null? stack) NIL)
((success (car stack)) (car stack))
(else (search
(append (next (car stack)) (cdr stack))
next
success)))))