Technical choice in legible hash data

It seems that in folklore knowledge, in circles with a limited circle, a lot of knowledge about hash consing traps in combination with marshalling data parsing has appeared. I am looking for links for links to these tidbits.

For example, someone once pointed me to the aterm library and mentioned that the authors clearly thought about it and that the presentation on the disk was from the bottom up (the children of the node go to the node itself in the data stream). This is really the right way to do something when you need to redistribute each node (with a possible identical node already in memory). This relocation passage must be made from the bottom up, so there can be self-capture in itself, so that it can do everything in one pass.

I now describe the difficulties encountered in our own context and the solutions we have found. I would appreciate any possible reference to the kind of aforementioned folklore knowledge. Some people obviously ran into problems before (the aterm library is just one example). But I did not find anything in writing. Even a small part of the information that I have about atherma hears. I am not worried that it is not reliable (you cannot do this), but “private messages” and “see how this is done in the source code” are considered to be bad in quoting.

I have enough hash consing links. I'm only interested in links where it interferes with other aspects of programming, such as sorting or distribution.

+6
functional-programming marshalling
source share
3 answers

OK, this is not much more, but Andrew Kennedy wrote a functional pearl, called simply Etch Combinators, which appears in the Journal of Functional Programming (2004), 14: 6: 727-739. There is an extensive discussion of sharing structure and how it is processed in pickles, but there is no direct discussion of how this problem can relate to hashing in a language implementation. But the article discusses the separation of structure in both memory and brine, so I hope this is better than nothing.

In 2005, Martin Elsman published an article entitled "Trends in Functional Programming"; header is a specialized serialization of a shared type. The article is primarily about the hash-consent of impurity (deserializer), and not about the hash-consent in the implementation, but again it can cost something.

JFP paper is patented, but appears to be preprinted on Andrew's webpage . The Elsman document appears to be available through Google Scholar at http://tinyurl.com/yd5tw2b .


(In a previous life, I was working on an ASCII pickle project that people could read and edit. I stupidly could not publish it, but I have an interest.)

+3
source share

I found one sorting link in functional languages; not sure if this will be useful, but the authors are smart: http://tinyurl.com/yc3hob9

I believe that Matthias Blum and / or Andrew Appel did something, but I can’t find the newspaper. I also believe that I once listed something for the Functional Programming Journal, but I cannot remember whether the paper was accepted or who wrote it.

I suggest you ask Matthias Blum, Andrew Appel and Phil Wadler if they can help.

+2
source share

Coq V5.10 had hash-consing and marshaling / unmarshaling. I did not find anything in the published form, but in non-marxing steps, it will be referred to as a “rethinking” of the source code. Coq unmarhsaled values ​​and then crossed them to re-create sharing, the obvious and only solution when all languages ​​provide an unmarshal function of type int_channel -> 'a .

0
source share

All Articles