スキームのeqv-hashtable
データ構造は、文字列であるキーを認識していないようです。次のコードでは、eqv-hashtable
を作成し、新しいデータを作成しています。
(define state-hash (make-eqv-hashtable))
(hashtable-set! state-hash "S" (State "S" #f '() '()))
ただし、データがハッシュテーブルに格納されているかどうかを確認しようとすると、次のことが発生します。
(hashtable-contains? state-hash "S") ; --> #f
手順hashtable-contains?
は、キー"S"
が現在ハッシュテーブルにないことを示していますが、以下はそうでないことを示唆しています。
(hashtable-keys state-hash) ; --> #("S")
キーに文字列以外のもの、たとえば記号(eg 'S
)を使用しても、問題はありません。文字列をキーとして使用したくない理由はありますか?