我正在编写一个程序,我必须在其中重用我的一位教授的代码。我的程序是用 Racket 编写的,而我想重用的代码是用 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)))
R6RS 文件中的list?
测试总是错误的......即使我将新创建的列表作为参数传递,就像上面的例子一样。
我怎样才能像上面的例子一样做,以便list?
测试结果为真。
谢谢你的帮助!
编辑:我在不可变列表上找不到导致 true 的 r6rs 测试,但我找到了另一种解决问题的方法(通过将可变列表传递给过程)。