ned*_*ned 27 dictionary hashtable prolog data-structures
前几天我在prolog中解决了一个谜题,并意识到如果我使用其他编程语言,我会使用哈希表/字典,但据我所知,这在prolog中是不可能的.
所以我的第一个问题是,是否有任何prolog支持类似字典的数据结构与哈希表的性能特征?
其次,我想到,由于大多数prolog使用哈希表来存储谓词,我可以编写一个包装器谓词来断言和收回事实,创建一个字典接口来利用谓词的底层哈希表.但是我会获得散列表的性能特征,还是会增加会降低性能的开销?
一些Prolog环境具有关联列表,可用于创建和编辑字典:
编辑:
您可以通过在外语中实现谓词来获得更好的性能,例如:
我刚刚发现:
SWI-Prolog版本7引入了dicts作为抽象对象,具有用于访问成员的具体现代语法和功能符号,以及用户定义的访问函数.
语法如下:
Tag{Key1:Value1, Key2:Value2, ...}
请参阅Dicts:具有命名参数的结构以获取详细信息.
注意 :
point{x:1,y:2}.xdict.第一个参数是标记.其余参数创建一个排序键值对的数组"因此,Prolog使用在过去10年中涌现的"地图"数据类型(例如Clojure中的地图)来捕捉许多语言.