我有一个嵌套的、相互递归的数据结构,并希望将计算昂贵的值与某些节点相关联。实际上,我想暂时将Pandoc文档中的块链接到该块中出现的单词列表。
我想避免的没有吸引力的选择:
扩展 Block 数据类型,使其包含单词列表,这归结为创建具有大量(脆弱)样板代码的新扩展 Pandoc 数据类型
将块映射到单词列表;这是次优的,因为块太复杂而无法有效地用作键
我寻求解决方案的方向是某种覆盖数据结构,其中包括扩展块,但底层数据类型不受影响,因此我仍然可以使用广泛的 Pandoc 库。但也许这不是 Haskell 的思维方式……
发布脚本 2011-06-12:
正如评论所示,我可能高估了 Map 方法的成本,部分原因是错误的假设。确实:“没有什么比一个明显的事实更具欺骗性了”。
无论如何,我接受 hammar 的答案,因为它说明了如何创建可扩展的数据类型。
谢谢