gpt4 book ai didi

Ocaml中可变变量的哈希表

转载 作者:行者123 更新时间:2023-12-04 13:33:49 26 4
gpt4 key购买 nike

我需要在 Ocaml 中使用可变变量的哈希表,但它不起作用。

let link = Hashtbl.create 3;;
let a = ref [1;2];;
let b = ref [3;4];;
Hashtbl.add link a b;;

# Hashtbl.mem link a;;
- : bool = true

# a := 5::!a;;
- : unit = ()

# Hashtbl.mem link a;;
- : bool = false

有什么办法让它工作吗?

最佳答案

您可以使用函数接口(interface),它可以让您提供自己的哈希和相等函数。然后,您编写仅基于值的非可变部分的函数。在这个例子中,没有不可变的部分。因此,您希望在表格中找到什么并不是特别清楚。但是在一个更现实的例子中(根据我的经验),您可以使用一些不可变的部分。

如果没有任何不可变的部分,您可以专门添加它们以用于散列。例如,您可以为每个值添加任意唯一整数。

也可以基于物理相等(==)进行散列,它对引用(和其他可变值)有合理的定义。但是,您必须小心,因为 body 上的平等有点棘手。例如,您不能将值的物理地址用作散列键——地址可能会因垃圾收集而随时更改。

关于Ocaml中可变变量的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com