~ chicken-core (master) /tests/breadth-first.scm
Trap1;;;; 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))) )