私は教授の一人からコードを再利用しなければならないプログラムを書いています。私のプログラムは Racket で書かれており、再利用したいコードは r6rs で書かれています。
プログラムをテストしようとすると、常に失敗します。これは、リスト(ラケット リスト)を引数としてプロシージャを呼び出すためですが、そのプロシージャは R6RS ファイルにあります。R6RS ファイルには があり(assert (list? argument))
、これは常にfalse です...
ここに簡単な例があります: ラケットコード:
#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?
テストは常に false です...上記の例のように、新しく作成されたリストを引数として渡しても。
list?
テストの結果が真になるように、上記の例と同じことを行うにはどうすればよいでしょうか。
ご協力いただきありがとうございます!
編集: 不変リストで true になる r6rs テストが見つかりませんでしたが、問題を解決する別の方法を見つけました (可変リストをプロシージャに渡すことにより)。