我正在尝试编写一个获取表达式的函数,并在给定的表达式中用另一个构造函数替换特定的构造函数。与此类似的东西:
输入:f XY 输出:f XZ Y 和 Z 都属于同一个数据类型,而且它们都是从 show 派生的,所以我可以比较构造函数。我的问题是我不知道如何在表达式中替换一个构造函数。真的有可能吗?[编辑]:一些片段来澄清我的问题:
data Message = X | Y | Z deriving(show)
data Term = F Message Message | G Term
substitute::Term->Term
substitue Term = -- another term with Y replaced with Z