4

assoc、replace などをサポートするJavascript Typed Arraysに基づく vector の Clojurescript 実装を提供したいと思います。おそらくdeftypeを使用するでしょうが、どのプロトコルに「concretions」を提供する必要がありますか?

4

1 に答える 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 に答える