【问题标题】:Test IORef identity?测试 IORef 身份?
【发布时间】:2020-05-05 02:01:04
【问题描述】:

在 Haskell 中,有没有办法测试两个 IORef 是否相同?我正在寻找这样的东西:

IORef a -> IORef a -> IO Bool

例如,如果您想可视化由 IORef 组成的图形,这将非常有用。我认为这不会破坏引用透明度,因为 IORefs 具有有意义的身份(并且结果可能在 IO 中,无论如何)。而且我认为作为指针比较,有效地实现这一点并不难。

这在某处可用吗?如果没有,为什么不呢?

(编辑:我刚从a different SO question 找到System.Mem.StableName,看起来很有帮助。)

【问题讨论】:

标签: haskell


【解决方案1】:

不要想太多。你有instance Eq (IORef a),所以你可以只使用==,结果甚至不在IO中。

【讨论】:

  • 请注意,这是IORefs 的标识,但您当然可以有多个不同的IORefs 指向同一个实际,即正常Haskell 引用的不可观察共享
  • 谢谢,不知道我是怎么错过的。 :)
猜你喜欢
  • 2013-02-21
  • 2022-01-04
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2018-02-14
  • 1970-01-01
相关资源
最近更新 更多