私が取っているクラスでは、Scheme の古い R5RS 標準を使用して SICP 割り当てを解決しています。私はテスト ファーストの開発を行うのが好きなので、単体テスト フレームワークが適していると判断し、小規模なテストを作成するために SchemeUnit を選択しました。
これはこれまでのところうまく機能しており、出力のプリミティブ (文字列、数値など) をテストするだけですが、リストをテストしようとすると障害が発生しました。これはおそらく、テストの実行に使用される Scheme ダイアレクトの違いと関係があります。
foo.scm: (define a-list (list 2))
foo-tests.scm: (check-equal? a-list (list 2))
テストを実行したときの結果:
Unnamed test
FAILURE
name: check-equal?
location: tester.scm:22:3
actual: {2}
expected: (2)
テスト スイートを実行するには"#lang scheme/base
、foo-tests.scm とrequire
schemeunit パッケージの先頭に追加する必要があります。foo.scm には、上部に#lang r5rs
andが必要です。(#%provide (all-defined))
R5RS と "scheme/base" では、リストの実装が何らかの形で異なっていると思います。それらを連携させる方法はありますか?そして、なぜ失敗するのですか ({} vs ())?