0

ラケット/ドクターに電話したら 次のコードをラケットします。

> add1

私は得る:

#<procedure:add1>

Rackunit と呼ばれる単体テスト用のライブラリを使用している場合、次のようにします。

(require rackunit)

(check-equal? add1 #<procedure:add1>)

テストは構文エラーで失敗します:

read: bad syntax `#<'

なぜこれが起こるのですか?

4

1 に答える 1

2

多くの種類のデータについて、何を戻すことwriteができますreadか。ただし、プロシージャの場合はできないため、読み取り不能な値として出力されます。

プロシージャーの等価性は、不透明な構造の等価性に似ています。同一性のみをチェックします。これだけ必要な場合でも、手順をどこかに保存して、check-equal を使用できますか? (たとえば、add1 を含むリストは、add1 を含むリストと比較されます)。手順が論理的に同じであることを実際に確認する必要がある場合、これは一般的に不可能です。

于 2016-11-06T23:24:38.137 に答える