ネストされた相互再帰的なデータ構造があり、計算コストの高い値をいくつかのノードに関連付けたいと考えています。実際、 Pandocドキュメントのブロックをそのブロックで発生する単語のリストに一時的にリンクしたいと思います。
避けたい魅力のないオプション:
単語リストを含むようにBlockデータ型を拡張します。これは、多くの(壊れやすい)ボイラープレートコードを含む新しい拡張Pandocデータ型を作成することになります。
ブロックを単語リストにマッピングする。ブロックが複雑すぎてキーとして効率的に機能できないため、これは最適ではありません
私が解決策を探している方向は、拡張ブロックを含むある種のオーバーレイデータ構造ですが、基になるデータ型は変更されていないため、拡張Pandocライブラリを引き続き使用できます。しかし、おそらくこれはハスケルの考え方ではありません...
スクリプトを投稿2011-06-12:
コメントが示すように、私はおそらく、部分的に間違った仮定に基づいて、マップアプローチのコストを過大評価していました。確かに、「明白な事実ほど欺瞞的なものはありません」。
とにかく、拡張可能なデータ型を作成する方法を示しているので、hammarの答えを受け入れます。
ありがとう