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
.IVector
IReduce
IKVReduce
IFn
IEditableCollection
IReversible
かなりの量ですが、それぞれが 1 つまたは多くても 2 つのメソッドを定義しているため、それほど多くの作業は必要ありません。さらに、IEditableCollection
トランジェントにのみ使用されるものやIReduce
、新しいレデューサー関数に使用されるものなど、実装されていないものをそのままにしておくこともできます。
新しいデータ構造を組み込みのベクターとまったく同じように機能させる必要さえありません。たとえば、すべてのシーケンシャルなものを実装し、マップなどについて心配する必要はありませんが、もちろん、通常のベクターよりも便利ではありません。
于 2013-01-03T00:50:50.087 に答える