#scheme
#схема
Вопрос:
Я пытаюсь использовать библиотеку Scheme (afp primitives) в Repl.it , просто скопировав все процедуры в main.scm. Но некоторые процедуры, похоже, не работают. Например rec
, процедура определяется следующим образом:
(define-syntax rec
(syntax-rules ()
((rec (name . variables) . body)
(letrec ((name (lambda variables . body))) name))
((rec name expression)
(letrec ((name expression)) name))))
Когда я просто определяю его, компилятор выдает следующую ошибку:
proper list required for function application or macro use: (name . variables) []
Поскольку я только начинаю изучать Scheme, я понятия не имею, как это исправить. Может кто-нибудь мне помочь?
Редактировать — это ситуация:
Комментарии:
1. когда вы пытаетесь его использовать ….. как? пожалуйста, скопируйте и вставьте ваше взаимодействие, то есть ваш ввод и (ошибочный) ответ из REPL.
2. @WillNess: добавлено изображение. Другими словами, просто определите процедуру, при которой возникает ошибка компилятора.
3. какую процедуру вы определяете? есть ли у вас какой-либо собственный код во входном источнике, помимо кода, который вы скопировали из библиотеки? кроме того, не могли бы вы предоставить ссылку на свой Repl.it вход?
4. Нет, на данный момент у меня нет собственного кода. Repl.it это: repl.it/@Jacobvan6/Scheme-trials#main.scm .
5. ваш код работает так, как есть в DrRacket. это должно быть repl.it . (?) cf , который также работает в Racket, но не работает в repl.it .
Ответ №1:
Согласно вашим скриншотам, repl.it использует схему Бива.
BiwaScheme не имеет
syntax-rules
илиsyntax-case
Таким образом, вы не можете использовать syntax-rules
с ним макросы, как вы пытаетесь. Необходимо найти другой подход rec
или использовать другую схему.