在函数中定义队列

时间:2016-06-11 01:08:25

标签: scheme racket

我正在尝试在我的一个函数中创建一个新队列,但是我收到了错误

  

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)
  )

1 个答案:

答案 0 :(得分:3)

您发布的代码应该有效,请尝试更改语言 - 将其设置为"从源代码确定语言"并在文件的开头添加此行:

#lang racket

如果出于某种原因你不能使用其他语言,这相当于你写的:

(define (bfs-graph X G)
  (let ((q (make-queue)))
    (enqueue! q X)
    ; ... some work with queue
    ))