Beta减少Lambda演算示例

时间:2020-04-18 13:49:28

标签: lambda-calculus

(λw。w)(λu。λv。u)(λu。λv。v)(λu。λv。u)

有人可以逐步介绍该示例的Beta减少功能吗? 我真的很困惑

1 个答案:

答案 0 :(得分:1)

const Patches = require('Patches'); const Diagnostics = require('Diagnostics'); // monitor() and subscribe() methods allows you yo "listen" variable changes in patch editor Patches.outputs.getScalar('alpha').then(function(alphaSignal){ alphaSignal.monitor().subscribe(function(alphaVal){ if(alphaVal.newValue == 1) { Diagnostics.log('alpha is 1'); } else { Diagnostics.log('alpha is not 1'); } }); });

将(λw。w)应用于(λu。λv。u)。由于这是身份功能,因此没有任何变化。

context.error[require('feathers-knex').ERROR]

将(λu。λv.u)应用于(λu。λv.v)。它在表达式中替代了u。由于我们现在可能会对第一个表达式中的多个v感到困惑,因此我们可以将内部表达式中的v阿尔法重命名为另一个变量x。

(λw. w) (λu. λv. u) (λu. λv. v) (λu. λv. u)

将(λv。(λu.λx.x))应用于(λu.λv.u)。由于v没有出现在lambda的主体中,因此该参数被有效地丢弃了。

(λu. λv. u) (λu. λv. v) (λu. λv. u)

我们现在可以(可选)再次重命名以恢复原始变量名。

(λv. (λu. λx. x)) (λu. λv. u)

相关问题