Наложенная структура данных?

У меня есть вложенная взаимно рекурсивная структура данных , и я хочу связать вычислительные дорогостоящие значения с некоторыми узлами. На самом деле, я хочу временно связать блоки в документе Pandoc со списком слов, встречающихся в этом блоке.

Неприятные варианты, которых я хочу избежать:

  • расширение типа данных блока, чтобы он включает список слов, который сводится к созданию нового расширенного типа данных Pandoc с большим количеством (хрупких) блоков кода шаблона

  • , отображающих блоки в списки слов; что является неоптимальным, поскольку блоки слишком сложны для эффективного использования в качестве ключей

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

Post scriptum 2011-06-12 :

Как видно из комментариев, я, вероятно, переоценил стоимость подхода Map, частично основываясь на неверных предположениях . В самом деле: «нет ничего более обманчивого, чем очевидный факт».

В любом случае, я принимаю ответ hammar, потому что он показывает, как создать расширяемый тип данных.

Спасибо

8
задан sleepyMonad 12 June 2011 в 09:29
поделиться