是否有任何语言建立在独特的数据结构上?

时间:2018-02-11 16:18:38

标签: data-structures

复制不可变数据是良性但浪费空间。共享相等的不可变数据结构的反向操作可用于减少存储器需求并提供恒定的时间相等性,完美的散列和字典查找(例如,用于存储器化)。可以使用诸如hash consing之类的技术实现最大共享,并产生唯一表示的数据结构。一个相关的概念是history-independent data structures,但他们关注的是安全性。

我最近注意到在研究this benchmark时很容易采用独特的表示法,并且它可以显着提高内存消耗和性能。具体来说,通过将符号表达式作为整数索引引用到表中,该表给出其组成子表达式,并在遇到前所未见的表达式时指定下一个连续整数。此外,当在C和C ++等低级语言中解决此类问题时,这种表示可以说比传统的(非共享的)功能更自然。众所周知,符号,逻辑和动态程序(例如OCaml's Boyer benchmark)在使用散列构建为其数据结构提供唯一表示时表现得更好,因此这种结果并不令人惊讶或不新。

然而,使用传统语言的哈希值很麻烦,这就引出了一个问题:是否有任何编程语言会自动为其原始数据结构使用唯一的表示形式?

例如,考虑一个类似mini-ML的类型系统,它包含整数,变量,元组和联合。任何类型的值的构造都可以使用上面描述的技术轻松地进行散列,因此所有结构相同的数据将被最大程度地共享。有没有这样的编程语言?如果没有,是否有停止的理由不这样做?

一些背景阅读:

0 个答案:

没有答案