Я пытаюсь создать новую очередь в одном из своих функций, но я получаю ошибкуОпределение очереди в функции
Определяет нашел определение, которое не на самом высоком уровне
Как я могу это решить? Мне нужно создать эту очередь где-то внутри. Я не могу просто создавать вспомогательные переменные вне его.
(define (bfs-graph X G)
(define q (make-queue))
(enqueue! q X)
... some work with queue
)
(define (reachable? X Y G)
(cond
[(empty? (graph-edges G)) #f]
[else (bfs-graph X G)]
)
)
EDIT:
Хорошо, это, кажется, как это работает. Я попытаюсь сыграть с кодом еще немного. Благодарю.
(define (reachable? X Y G)
(let ((q (make-queue)))
(cond
[(empty? (graph-edges G)) #f]
[else (bfs-graph X G q)]
)
)
)
(define (bfs-graph X G q)
(enqueue! q X)
)
хочет создать новую, другую очередь каждый раз, когда 'BFS-graph' называется, или повторно использовать ту же очередь между различные вызовы 'bfs -граф? –
Теперь, когда я думаю об этом, я собираюсь повторно использовать bfs-graph рекурсивно. Я пытаюсь, как вы могли предположить, найти всех соседей данной вершины, и я помещаю их в очередь, поэтому я хотел бы иметь ту же самую очередь, которую я мог бы добавить с новыми значениями. – Arcane
Тогда лучше создать очередь _outside_ процедуры и передать ее в качестве параметра из процедуры, которая запускает вычисление. –