您可以使用AVL树或红黑树来实现对数时间的访问,具体可参考SWI和YAP中的library(assoc)和library(rbtrees)。如果需要常数时间的访问,请创建一个具有N个参数的项,并使用arg/3进行有效访问。这些参数中的每一个都可以再次是具有N个参数的项,因此您可以拥有一个具有高效读取访问的数组。使用setarg/3,您甚至可以破坏性地修改元素,但代价是失去了良好的逻辑属性以及更加痛苦的调试和测试。在许多情况下,您可以重构算法以不需要随机访问,并使用列表列表进行操作。如果无法实现这一点,AVL或其他平衡树通常是非常好的选择。