Я пишу ADT в r5rs и использую 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
Когда я удаляю #lang r5rs
сверху и выбираю R5RS в качестве языка в DrRacket, кажется, что это работает. Но тогда мой файл queue.rkt
по-прежнему имеет #lang r5rs
вверху и Определить язык из исходного кода. Когда я удаляю #lang r5rs
и выбираю R5RS в качестве языка и в этом файле, я получаю следующее в файле my-ADT
:
default-load-handler: expected a `module' declaration
found: something else
in: #<path:/Users/path/path/path/queue.rkt>