title: Scheme Find all possible paths for an undirected graph
body: <p>I am having problem to print out all the possible paths. Currently I am only able to print out one path, and if (path-demo "J" "I"), the program will shown this error mcdr: expects argument of type <code>&lt;mutable-pair&gt;</code>; given <code>#f</code></p>
  
  <pre><code> (define net
    '(("A" "B")
      ("B" "A" "C")
      ("C" "B" "D")
      ("D" "C" "E" "F")
      ("F" "I" "D")
      ("I" "F")
      ("E" "D" "J")
      ("J" "E" "G")
      ("G" "J" "H"))) 
  
   (define (path-demo start finish)
           (for-each (lambda (x) (display x) (display " "))
                     (cons "Route:" (shortest-path start finish net))))
  
   (define (shortest-path start end net)
      (bfs end (list (list start)) net))
  
   ;; Breadth-first search
    (define (bfs end queue net)
      (display queue) (newline) (newline) ; entertainment
      (if (null? queue)
        '()
        (let ((path (car queue)))
         (let ((node (car path)))
           (if (equal? node end) ;; Graham used CL eql
               (reverse path)
               (bfs end 
                    (append (cdr queue)
                            (new-paths path node net))
                    net))))))
  
   (define (new-paths path node net)
     (map (lambda (n) (cons n path)) (cdr (assoc node net))))
  
  ;;
  (path-demo "J" "I")
  </code></pre>