代码之家  ›  专栏  ›  技术社区  ›  Pascal Cuoq

散列消耗数据解组的技术选择

  •  6
  • Pascal Cuoq  · 技术社区  · 14 年前

    在有限的圈子里,似乎有很多关于 散列编码 结合 编组解编 数据。我在找这些小道消息的参考资料。

    例如,有人曾指我去图书馆 aterm 并提到作者已经清楚地考虑过这一点,并且磁盘上的表示是自底向上的(节点的子节点在数据流中位于节点本身之前)。当您需要重新共享每个节点(内存中已存在可能相同的节点)时,这确实是正确的方法。这个重新共享过程需要自下而上完成,所以解组本身也可能是这样,这样就可以在一个过程中完成所有事情。

    我正在描述在我们自己的背景下遇到的困难,以及我们找到的解决办法。如果能提及上述民俗知识,我将不胜感激。显然有些人以前遇到过这些问题(aterm库只是一个例子)。但我没有找到任何书面材料。即使是我所知道的关于阿特姆的一小部分信息也是听说过的。我并不担心它不可靠(你不能编造出来),但是“个人交流”和“看看它是如何在源代码中完成的”在引用中被认为是糟糕的形式。

    我有足够的关于杂凑的参考资料。我只感兴趣的参考资料,它干扰其他方面的编程,如编组或分发。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Norman Ramsey    14 年前

    好吧,这没什么用,但是安德鲁·肯尼迪写了一个功能性的珍珠 酸洗组合器 ,发表在《函数式编程杂志》(2004),14:6:727-739。关于结构共享和在pickle中如何处理它,有很多讨论,但是没有直接讨论这个问题如何与 实施 关于语言。但本文确实讨论了内存和pickle中的结构共享,所以我希望它比什么都没有要好。

    马丁·埃尔斯曼在2005年发表了一篇后续论文 函数式程序设计的发展趋势 ;标题是 具有共享的类型专用序列化 . 本文主要讨论unpickler(反序列化器)的hash计算,而不是实现中的hash计算,但它可能还是有价值的。

    JFP文件是专有的,但是 preprint on Andrew's web page 。 埃尔斯曼的论文似乎可以通过谷歌学者在 http://tinyurl.com/yd5tw2b


    (在以前的生活中,我参与了一个项目,创建人们可以阅读和编辑的ascii pickle。我愚蠢地没能出版,但我保留了一个兴趣。)

        2
  •  2
  •   Norman Ramsey    14 年前

    我在函数式语言中找到一个关于编组的引用;不确定它是否有用,但作者很聪明: http://tinyurl.com/yc3hob9

    我相信马蒂亚斯·布卢姆和/或安德鲁·阿佩尔在这方面做了些什么,但我找不到报纸。我也相信我曾经为 函数式程序设计杂志 ,但我不记得这篇论文是谁写的还是被接受的。

    我建议你问问马蒂亚斯·布卢姆,安德鲁·阿佩尔和菲尔·瓦德勒他们是否能帮忙。

        3
  •  0
  •   Pascal Cuoq    14 年前

    coq v5.10具有散列计算和编组/解编。我没有找到任何已发布的表单,但在源代码中,解组步骤将被引用为“重新连接”。coq未编码的值,然后遍历它们以重新创建共享,当所有语言都提供了 unmarshal 类型函数 int_channel -> 'a .