5

いつ使用するのか、そしてその理由は?

私の質問は次の文から来ています:「いくつかのクラスで短所をハッシュし、それらのインスタンスを参照の同等性と比較する」

4

3 に答える 3

4

Odersky、Spoon、および Venners (2007)、Scala でのプログラミング、Artima Press、p. 243:

弱いコレクションで作成したすべてのインスタンスをキャッシュすることにより、クラスのコンス インスタンスをハッシュします。次に、クラスの新しいインスタンスが必要なときはいつでも、最初にキャッシュをチェックします。作成しようとしている要素と同じ要素がキャッシュに既にある場合は、既存のインスタンスを再利用できます。この配置の結果、equals() で等しい 2 つのインスタンスは、参照の等価性でも等しくなります。

于 2010-12-05T14:50:18.810 に答える
3

みんなの答えをまとめる:

ACL2(Applicative Common Lispの計算論理)は、プログラミング言語、一階述語論理の拡張可能な理論、および機械的定理証明者で構成されるソフトウェアシステムです。

-Wiki ACL2

コンピュータプログラミングでは、短所(/ ˈkɒnz/または/ˈkɒns /と発音)は、Lispプログラミング言語のほとんどの方言の基本的な関数です。consは、2つの値または値へのポインタを保持するメモリオブジェクトを構築します(そのため名前が付けられています)。これらのオブジェクトは、(cons)セル、conses、または(cons)ペアと呼ばれます。Lispの専門用語では、「xをyに変換する」という表現は、(cons xy)を使用して新しいオブジェクトを作成することを意味します。結果として得られるペアには、car(最初の要素)と呼ばれる左半分と、cdrと呼ばれる右半分(2番目の要素)があります。

-Wikiの短所

論理的には、honsは単にconsの別名です。つまり、ACL2の定理は次のとおりです。

(等しい(hons xy)(cons xy))

honsを作成する際に、同じ車とcdrでhonsがすでに存在するかどうかを確認しようとするため、Honsは一般に短所よりも実行が遅くなります。これには、検索とハッシュテーブルの使用が含まれます。

-http ://www.cs.utexas.edu/~moore/acl2/current/HONS.html

あなたの質問を考えると:

いくつかのクラスで短所をハッシュし、それらのインスタンスを参照の同等性と比較します

hash consLISPコンストラクターをハッシュして、等式比較によってオブジェクトがすでに存在するかどうかを判断するプロセスのようです。

于 2009-04-13T14:31:36.157 に答える
2

http://en.wikipedia.org/wiki/Hash_consがリダイレクトされるようになりました。

深いものではなく、(参照) 比較を可能にするハッシュ付きconの sです。eqこれはメモリにとってより効率的であり (同一のオブジェクトが参照として格納されるため)、比較が一般的な操作である場合はもちろん高速です。

http://www.cs.utexas.edu/~moore/acl2/current/HONS.htmlでは、Lisp の実装について説明しています。

于 2009-04-13T14:34:37.993 に答える