4

我想提供一个基于Javascript Typed Arrays的向量的 Clojurescript 实现,它支持 assoc、replace 等。我想我想这样做(也许有更好的方法,或者也许有人已经做到了?)。大概我会使用 deftype,但我应该为哪些协议提供“混凝土”?

4

1 回答 1

3

让我们看看内置向量实现了什么。您可以在 github 上查看源代码。

看起来是:Object, IWithMeta, IMeta, IStack, ICollection, IEmptyableCollection, ISequential, IEquiv, IHash, ISeqable, ICounted, IIndexed, ILookup, IMapEntry, IAssociative, IVector, IReduce, IKVReduce, IFn, IEditableCollectionand IReversible.

这很多,但是由于每个方法都定义了一种或最多两种方法,所以工作量并不大。另外,您可以保留其中的一些未实现,例如IEditableCollection哪些仅用于瞬态或IReduce哪些用于新的减速器功能。

您甚至不必让您的新数据结构完全像内置 Vector 一样工作。例如,你可以让它实现所有顺序的东西,而不用担心地图的东西,当然,它不如普通的 Vector 方便。

于 2013-01-03T00:50:50.087 回答