【发布时间】:2013-04-17 09:04:16
【问题描述】:
函数式编程使用不可变数据。当您修改某些内容时,您会重新实例化“世界”,尽可能多地在您的增强世界中重用以前的化身。
我正在探索 JavaScript 中的 FP。我在 Lisp 中创建了一个类似于 List 的 List 对象。你cons 一个新的头部到一个现有的尾部。在将项目添加到持久列表时,我想创建一个与列表一致的持久索引。因此,如果我在联系人列表中cons 一个新联系人,我可能想要索引姓氏和电话号码,这样我就可以快速定位项目,而无需有效地启动全表扫描。
问:在 JavaScript 中,可以构建什么样的持久数据结构来提供快速键控访问?
也就是说,我认为这个想法是在构建增强索引时重用以前的索引数据。没有将前一个索引上的所有键克隆到增强索引中,我发现这个问题令人麻木。通过克隆,这将在以编程方式加载数据时浪费大量内存。索引应该是内存高效的,并提供按值快速访问。
【问题讨论】:
-
很遗憾人们关闭了真正的问题。
-
对于 JS 实现,请查看“mori”swannodette.github.io/mori 以及“feat”cofylang.org/tests/test-feat.html
-
我相信来自 mori.js 的
vectors符合要求。
标签: javascript data-structures functional-programming lisp