Технический выбор в немаршалинге данных хеша-consed

Кажется, существует довольно мало фольклорного знания, плавающего о в ограниченных кругах о ловушках хеша-consing, объединенного с немаршалингом маршалинга данных. Я ищу ссылки на который можно сослаться на эти лакомые кусочки.

Например, кто-то когда-то указал на меня на библиотеку aterm и упомянул, что авторы ясно думали об этом и что представление на диске было восходящим (дети узла приезжают перед самим узлом в потоке данных). Это - действительно правильный способ сделать вещи, когда необходимо повторно совместно использовать каждый узел (с возможным идентичным узлом уже в памяти). Эта передача пересовместного использования должна быть сделана вверх дном, таким образом, немаршалинг себя мог бы также состоять также в том так, чтобы было возможно сделать все в единственной передаче.

Я нахожусь в процессе описания трудностей, с которыми встречаются в нашем собственном контексте и решениях, которые мы нашли. Я ценил бы любую ссылку на который можно сослаться на вид вышеупомянутого фольклорного знания. Некоторые люди, очевидно, встретились с проблемами прежде (aterm библиотека является только одним примером). Но я ничего не нашел в письменной форме. Даже маленький кусочек информации, которую я имею о aterm, является слухом. Я не волнуюсь, что это не надежно (Вы не можете составить это), но "персональная связь" и "смотрят, как это сделано в исходном коде", считаются плохой формой в цитатах.

У меня есть достаточно ссылок на одном только хеше-consing. Я только интересуюсь ссылками, где это вмешивается в другие аспекты программирования, такие как маршалинг или распределение.

6
задан Kate Gregory 28 June 2010 в 13:10
поделиться

3 ответа

Хорошо, это не намного полезнее, но Эндрю Кеннеди написал функциональный перл под названием просто Pickling Combinators, который появился в Journal of Functional Programming, (2004), 14:6:727-739. Там широко обсуждается разделение структур и то, как оно обрабатывается в pickles, но нет прямого обсуждения того, как эта проблема может быть связана с хэш-консолированием в реализации языка. Но в статье обсуждается разделение структуры в памяти, а также в пикеле, так что я надеюсь, что это лучше, чем ничего.

Мартин Элсман опубликовал продолжение статьи в 2005 году в Trends in Functional Programming; название - Type-specialized serialization with sharing. Статья в основном посвящена хэш-консолидации распаковщиком (десериализатором), а не хэш-консолидации при имплементации, но, опять же, она может быть чем-то полезна.

Статья JFP является закрытой, но, похоже, есть препринт на веб-странице Эндрю. Статья Элсмана, похоже, доступна через Google Scholar по адресу http://tinyurl.com/yd5tw2b.


(В прошлой жизни я работал над проектом по созданию ASCII-писем, которые люди могли бы читать и редактировать. По глупости мне не удалось его опубликовать, но я сохранил интерес)

.
3
ответ дан 17 December 2019 в 04:45
поделиться

Я нашел одну ссылку на маршаллинг на функциональных языках; не уверен, что это будет полезно, но авторы сообразительны: http://tinyurl.com/yc3hob9

Я считаю, что Маттиас Блюм и / или Эндрю Аппель что-то сделали с этим, но я не могу найти бумага. Я также полагаю, что однажды просмотрел что-то в Журнале функционального программирования , но я не могу вспомнить, была ли статья принята или кто ее написал.

Я предлагаю вам спросить Матиаса Блюма, Эндрю Аппеля и Фила Уодлера, могут ли они помочь.

2
ответ дан 17 December 2019 в 04:45
поделиться

В Coq V5.10 есть хэш-консолирование и маршалинг/немаршалинг. Я не нашел ничего в опубликованном виде, но в исходном коде шаги разгруппировки будут называться "реинтернализацией". Coq размаршализировал значения и затем обходил их, чтобы заново создать совместное использование - очевидное и единственное решение, когда все, что предоставляет язык - это unmarshal функция типа int_channel -> 'a.

0
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: