我正在尝试在我的一个函数中创建一个新队列,但是我收到了错误
define:找到一个不在顶层的定义
我该如何解决这个问题?我需要在里面的某个地方创建这个队列。我不能只在它之外创建辅助变量。
(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)]
)
)
编辑:
好的,这似乎有效。我将尝试更多地使用代码。感谢。
(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)
)
答案 0 :(得分:3)
您发布的代码应该有效,请尝试更改语言 - 将其设置为"从源代码确定语言"并在文件的开头添加此行:
#lang racket
如果出于某种原因你不能使用其他语言,这相当于你写的:
(define (bfs-graph X G)
(let ((q (make-queue)))
(enqueue! q X)
; ... some work with queue
))