我发现自己需要在我正在开发的Haskell程序中使用字符串表。特别是,我想要一个允许将任何String插入(比如说)'Atom'的系统;给定一个Atom,你应该能够恢复它来自的原始字符串,并且(严格地)比较两个Atom的相等性应该与指针比较一样快(或几乎同样快)。
(可以轻松地为此功能设计一个引用透明的接口;实现将在内部使用unsafePerformIO
,但库的用户无需了解此类详细信息。)
Hackage上的两个库似乎在正确的球场:stringtable-atom和simple-atom。有没有人有使用这些库的经验?特别是,对于一个人对另一个人的好处可能有什么建议吗?
答案 0 :(得分:2)
另一个不错的选择是ekmett的新实习包,它处理字节串以及更复杂的递归类型:http://hackage.haskell.org/package/intern
他向我保证这是线程安全的。
答案 1 :(得分:0)
我写了monad-atom供我自己使用。如果您需要全局唯一原子,那么这不是您想要的,但如果您只需要一个字符串表,那么它就是简单而安全的。