我是Lambda Calculus& amp;的新手。试图通过Python代码了解它的工作原理。
在Lambda演算中, TRUE , FALSE & IFELSE 条件可以表示为:
(我用L代表Lambda符号)
TRUE = Lx.Ly.x
FALSE = Lx.Ly.y
IFELSE = Lc.Lx.Ly.((c x) y)
使用上述定义,以下内容为:
(我正在编写下面的Python风格的函数应用程序)
TRUE(e1)(e2) = e1
FALSE(e1)(e2) = e2
IFELSE(TRUE)(e1)(e2) = e1
IFELSE(FALSE)(e1)(e2) = e2
我创建Lambda微积分式ABS功能的尝试在下面用Python编写。 ABS重复应用GTZ(大于零)的返回值来计算abs(x)。
GTZ功能使用 if 语句。由于Lambda演算没有if语句(AFAIK),如何在Lambda演算中实现?
我回顾的在线lambda演算材料都提到IFELSE可以编码为函数应用程序;但他们都没有提到如何在没有“if”语句或等效语句的情况下生成IFELSE本身的条件输入。
请帮助我理解如何在Lambda演算中编写这个。
谢谢!
def TRUE(x):
def f(y):
return x
return f
def FALSE(x):
def s(y):
return y
return s
def GTZ(x):
return TRUE if x > 0 else FALSE
def ABS(x):
return GTZ(x)(x)(-x)