assoc、replace などをサポートするJavascript Typed Arraysに基づく vector の Clojurescript 実装を提供したいと思います。おそらくdeftypeを使用するでしょうが、どのプロトコルに「concretions」を提供する必要がありますか?
1 に答える
3
組み込みベクトルが何を実装するか見てみましょう。ソースはこちらの github で見ることができます。
次のように見えます: Object, IWithMeta, IMeta, IStack, ICollection, IEmptyableCollection, ISequential, IEquiv, IHash, ISeqable, ICounted, IIndexed, ILookup, IMapEntry, IAssociative.IVectorIReduceIKVReduceIFnIEditableCollectionIReversible
かなりの量ですが、それぞれが 1 つまたは多くても 2 つのメソッドを定義しているため、それほど多くの作業は必要ありません。さらに、IEditableCollectionトランジェントにのみ使用されるものやIReduce、新しいレデューサー関数に使用されるものなど、実装されていないものをそのままにしておくこともできます。
新しいデータ構造を組み込みのベクターとまったく同じように機能させる必要さえありません。たとえば、すべてのシーケンシャルなものを実装し、マップなどについて心配する必要はありませんが、もちろん、通常のベクターよりも便利ではありません。
于 2013-01-03T00:50:50.087 に答える