我发现自己需要在我正在开发的Haskell程序中使用字符串表.特别是,我想要一个允许将任何String插入(比如说)'Atom'的系统; 给定一个Atom,你应该能够恢复它来自的原始字符串,并且(批判性地)比较两个Atom的相等性应该与指针比较一样快(或几乎同样快).
(人们可以很容易地为这个功能设计一个引用透明的接口;实现将在unsafePerformIO内部使用,但库的用户不需要知道这些细节.)
Hackage上的两个库似乎在正确的球场:stringtable-atom和simple-atom.有没有人有使用这些库的经验?特别是,对于一方对另一方的好处是什么,有什么建议吗?
另一个不错的选择是 ekmett 的新 intern 包,它处理字节串以及更复杂的递归类型:http://hackage.haskell.org/package/intern
他向我保证它是线程安全的。