Ocaml双哈希表

Ocaml双哈希表,ocaml,hashtable,double-hashing,Ocaml,Hashtable,Double Hashing,我一直在寻找在Ocaml中使用双哈希表的方法,但找不到它。我想做的是: 哈希:((“a”,1),(“b”,2),…),其中所有提到的元素都不会重复,例如,“a”不会再次出现,也不会出现2 所以,如果我找到一个像[1,“b”,2,“a”,…]这样的数组,我可以用它的键或值替换这些数字和字母的出现:[“a”,2,“b”,1,…] 谢谢 库容器数据具有CCBijection 如果您想要一个可变版本,可以将两个哈希表与 模块表:sig 输入(!'左,!'右)t (*或在OCaml 4.12之前: 输入(

我一直在寻找在Ocaml中使用双哈希表的方法,但找不到它。我想做的是:

哈希:
((“a”,1),(“b”,2),…)
,其中所有提到的元素都不会重复,例如,“a”不会再次出现,也不会出现2

所以,如果我找到一个像
[1,“b”,2,“a”,…]
这样的数组,我可以用它的键或值替换这些数字和字母的出现:
[“a”,2,“b”,1,…]


谢谢

库容器数据具有CCBijection

如果您想要一个可变版本,可以将两个哈希表与

模块表:sig
输入(!'左,!'右)t
(*或在OCaml 4.12之前:
输入(!'左,!'右)t
*) 
val add:'左->'右->('左,'右)t->单位
...
end=struct
type('a,'b)t={左:('a,'b)Hashtbl.t;右:('b,'a)Hashtbl.t}
让我们添加左右tbl=
Hashtbl.add tbl.left-right;
Hashtbl.add tbl.right-right-left
...
结束

库容器数据具有CCBijections

如果您想要一个可变版本,可以将两个哈希表与

模块表:sig
输入(!'左,!'右)t
(*或在OCaml 4.12之前:
输入(!'左,!'右)t
*) 
val add:'左->'右->('左,'右)t->单位
...
end=struct
type('a,'b)t={左:('a,'b)Hashtbl.t;右:('b,'a)Hashtbl.t}
让我们添加左右tbl=
Hashtbl.add tbl.left-right;
Hashtbl.add tbl.right-right-left
...
结束
您能详细说明什么是“双哈希表”吗?它似乎不同于使用双哈希来解决冲突……您能详细说明什么是“双哈希表”吗?它似乎不同于使用双哈希来解决冲突。。。。