У меня есть вложенная взаимно рекурсивная структура данных , и я хочу связать вычислительные дорогостоящие значения с некоторыми узлами. На самом деле, я хочу временно связать блоки в документе Pandoc со списком слов, встречающихся в этом блоке.
Неприятные варианты, которых я хочу избежать:
расширение типа данных блока, чтобы он включает список слов, который сводится к созданию нового расширенного типа данных Pandoc с большим количеством (хрупких) блоков кода шаблона
, отображающих блоки в списки слов; что является неоптимальным, поскольку блоки слишком сложны для эффективного использования в качестве ключей
Направление, в котором я ищу решение, - это какая-то структура данных наложения, которая включает расширенные блоки, но с нетронутыми базовыми типами данных, так что я все еще могу используйте обширные библиотеки Pandoc. Но, возможно, это не способ мышления Haskell ...
Post scriptum 2011-06-12 :
Как видно из комментариев, я, вероятно, переоценил стоимость подхода Map, частично основываясь на неверных предположениях . В самом деле: «нет ничего более обманчивого, чем очевидный факт».
В любом случае, я принимаю ответ hammar, потому что он показывает, как создать расширяемый тип данных.
Спасибо