[英]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.