Я пытаюсь написать что-то, что работает как в DrRacket/plt-r5rs, так и в Gambit/gsi.
У меня проблема в том, что (load "foo.scm")
в Gambit не загружает define-syntax
-блоки. Использование (include "foo.scm")
в Gambit работает, но, конечно, приводит к синтаксической ошибке в DrRacket.
Есть ли способ решить эту проблему, чтобы я мог написать переносимый код R5RS?
Что я пробовал:
- Переопределение
(include "foo.scm")
в(load "foo.scm")
и наоборот. Проблема: Недопустимо переопределять макросы в Gambit. - Оборачивая указанные переопределения в файл
(if gambit ...)
. Проблема: Недопустимо помещать определение внутри if (если только оно не находится внутри другого определения). - Вместо этого передача строки с именем файла во включение в файл библиотеки. Проблема: кажется, что включение в Гамбите происходит до того, как начинается интерпретация.