Я пишу программу, в которой я должен повторно использовать код от одного из моих профессоров. Моя программа написана в Racket, а код, который я хочу использовать повторно, написан на r6rs.Списки раскладок, несовместимые с r6rs?
Когда я хочу протестировать свою программу, он всегда терпит неудачу. Это потому, что я вызываю процедуру с аргументом как список (список ракет), но эта процедура находится в файле R6RS. В файле R6RS есть (assert (list? argument))
, это всегда ложь ...
Вот простой пример: ракетка код:
#lang racket
(require "test2.ss")
(define a (list 1 2 3))
(b a)
R6RS код:
#!r6rs
(library
(test)
(export b)
(import (rnrs base (6))
(rnrs control (6))
(rnrs lists (6))
(rnrs io simple (6)))
(define (b a)
(display "a is : ") (display a) (newline)
(display "list? : ") (display (list? a)) (newline)))
Испытание list?
в файле R6RS всегда ложь ... даже если я передаю в качестве аргумента вновь созданный список, как в приведенном выше примере.
Как я могу сделать то же, что и в приведенном выше примере, так что результаты тестов list?
истинны.
Благодарим за помощь!
EDIT: Я не смог найти тест r6rs, результатом которого является true в неизменяемом списке, но я нашел другой способ решить мою проблему (передав измененный список в процедуру).
Ракетные пары неизменяемы, пары схем не являются, следовательно, несоответствием. –
Действительно, существует ли еще один тест на Схеме, который будет иметь место при тестировании в неизменном списке? Потому что я не могу его найти .. – HyperZ