~ chicken-core (chicken-5) /tests/breadth-first.scm


 1;;;; breadth-first.scm
 2
 3
 4(include "QUEUE")
 5
 6
 7(functor (breadth-first (Q QUEUE)) (search)
 8  (import scheme (chicken base) Q)
 9  
10  (define (enqlist q xs)
11    (foldl (lambda (q x) (enqueue q x)) q xs))
12
13  (define (search next x)
14    (define (bfs q)
15      (if (empty? q)
16	  '()
17	  (let ((y (head q)))
18	    (cons y (lambda () (bfs (enqlist (dequeue q) (next y))))))))
19    (bfs (enqueue empty-queue x))) )
Trap