check-equal?
を使用して、eq?
以外の構文オブジェクトを含むオブジェクトを使用して一連のテストを作成しています。これらのテストでは、syntax->datum
に与えられたときに等しい場合、2つの構文オブジェクトが等しいと言っても大丈夫です。 (バインディング情報がたくさんあることは分かりますが、現在ではデータの平等性を保証しています)バインド情報が後で良いことをテストします。RackUnitで使用する修正された `equal?`関数を作成します
2つのオブジェクトが構文オブジェクトしかし、私は彼らがお互いにequal?
であれば、彼らが平等であることを望みます。
これらのオブジェクトは、いくつかの再帰的な時点でそれらの構文のオブジェクトが含まれている場合は、私は彼らのデータム上の平等をテストしたいので、私はちょうど行うことはできません。
(define (my-equal? a b)
(if (and (syntax? a) (syntax? b)
(equal? (syntax->datum a) (syntax->datum b))
(equal? a b)))
(define-binary-check (check-my-equal? my-equal? actual expected))
これが行うことはありませんので再帰的チェック。
私は再帰を自分で処理でき、プリミティブにはequal?
しか使用できませんでしたが、それは自分自身の等価性テストを実装する上で最も重要なことです。