gpt4 book ai didi

haskell - 生成独特的、可比较的值

转载 作者:行者123 更新时间:2023-12-02 06:03:16 25 4
gpt4 key购买 nike

生成临时 key (每个 key 对于程序来说都是唯一的)的好方法是什么?理想情况下,以下形式的操作:

newKey :: IO Key

这样:

do a <- newKey
b <- newKey
return (a == b)

始终返回 false。另外,应该可以使用Key在一个高效的关联容器中(例如 Map )。

例如,这可以用于维护支持随机插入和删除的事件处理程序集合:

Map Key EventHandler

我知道的选项:

mallocForeignPtrBytes 1似乎是我最好的选择。我想我可以通过使用 GHC 的 newPinnedByteArray# 来稍微提高效率。直接primop。

还有更好的选择吗?是mallocForeignPtrBytes由于某些不明显的原因,该方法存在缺陷?

最佳答案

如果您不想向项目添加任何其他依赖项,可以使用 Data.Unique在基础包中。

在内部,系统使用 TVar (依赖于 GHC 的 STM 系统)Integer,这样每次调用 newUnique 时,TVar 都会自动递增,并且新的Integer 存储在不透明的Unique 数据类型中。由于 TVar 不能同时被不同线程修改,因此它们保证 Unique 是按顺序生成的,并且事实上它们必须是唯一的。

关于haskell - 生成独特的、可比较的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623018/

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