簡體   English   中英

R5RS中未定義的ADT

[英]Undefined ADT in r5rs

我正在r5rs中編寫ADT,並且正在使用DrRacket。 我將#lang r5rs放在文件的頂部,並從DrRacket中選擇“ 從源代碼確定語言” ,但這告訴我ADT未定義。 我正在使用DrRacket 6.0版。 這是我第一次遇到這種情況,無法理解我做錯了什么。

我的ADT

#lang r5rs
(#%require "queue.rkt") ;A required file
(#%provide (all-defined))

(define (my-ADT)
    (let ((val1 '())
          (val2 '()))

    (define (foo) ...)
    (define (bar) ...)

    (define (dispatch msg)
        (case msg
            ((foo) foo)
            ((bar) bar)
            (else "Unknown message")))

    dispatch))

當我嘗試創建my-ADT的實例時,得到以下輸出: my-ADT: undefined; cannot reference an identifier before its definition my-ADT: undefined; cannot reference an identifier before its definition

當我從頂部刪除#lang r5rs並在DrRacket中選擇R5RS作為語言時,它似乎可以工作。 但是然后我的queue.rkt文件仍然在頂部具有#lang r5rs從Source中確定Language 當我遠程#lang r5rs並在該文件中還選擇R5RS作為語言時,在my-ADT文件中得到以下內容:

default-load-handler: expected a `module' declaration
found: something else
in: #<path:/Users/path/path/path/queue.rkt>

錯誤

my-ADT:未定義; 無法在定義標識符之前引用標識符

通常表示函數my-ADT在定義之前就已使用。 也就是說,必須將所有定義放在文件頂部,並將表達式放在下面。

上面的示例沒有使用my-ADT因此,如果出現此錯誤,則問題可能出在“ queue.rkt”中。 您可以正確運行“ queue.rkt”嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM