存在哪些实现严格数据结构的库?具体来说,我正在寻找严格的名单和严格的设置。Haskell中的严格数据结构库
免责声明:
我知道deepseq的。这非常有用,但是它增加了每次使用deepseq时可能遍历整个数据结构的开销(可能不止一次)。
我知道,严格的容器,如数据结构不 确保它包含将全面评估一切,但结构 本身应该是严格的,比如:
data StrictList a = !a :$ !(StrictList a) | Empty
(在这里,包含的元素在WHNF中,并且可能没有完全评估,但是列表的结构是。例如,无限列表将是非终止值。)
我知道关于hackage上的'strict'包,但它有一个非常有限的 d套严格的数据结构。它不包含严格的 列表或集。
写作严格列出自己似乎令人惊讶的简单(我爱GHC的 扩展导出函子,Traversable的和可折叠的,顺便说一句。),但它仍然 好像这将是一个单独的库做得更好。而集合的高效实现对我来说似乎并不重要。
为什么你需要一个严格的结构? – fuz
@FUZxxl确保毫不拖延地评估事物通常可以减少空间使用并使计算速度更快。它也可能具有相反的效果,所以懒惰的结构也很重要。为了高效的代码,你需要两个(并且必须知道/找出在哪里使用)。 –
@FUZxxl:我在一个集合上做类似状态monad的事情,我会经常插入和删除集合中的元素,但不会评估集合一段时间。这导致了空间泄漏,这可以通过严格的脊柱(谢谢John L)数据结构来解决。 – shahn