有限域的有限映射模型替换。我要么需要模拟具有无限域的替换操作,要么找到一种合适的方法来表示具有无限域的替换。例如,考虑替换的限制操作:
- σ| e (x n ) = 如果 x n ∈ FV(e) 则 σ(x n ) 否则 x n
因为限制操作适用于可能无限集中的所有变量,所以像有限映射这样的数据类型不能“向前”预测添加新绑定时的限制。当然,使用具有无限域的有限映射会导致非终止。有没有一种方法可以模拟操作,例如使用有限映射的限制,或者另一种替代表示,允许人们轻松地编写像限制这样的操作?我觉得我忽略了一个明显的解决方案——例如,利用惰性评估或功能替换。
编辑:
作为参考,这是一个使用有限映射的简单解决方案。每次将限制操作应用于替换 σ 和表达式 e 时,找到 e 的自由变量的集合 FV ( e )。对于σ 域中的每个变量 x n ,如果 x n ∈ FV( e ) 则设置 σ'(x n ) = x n。返回 σ'。假设 σ'(x n ) = x n如果 x n ∉ dom(σ')。
编辑:这是我忽略的明显解决方案。