Lambda微积分函数返回TRUE / FALSE而没有“if”

时间:2018-01-01 21:51:28

标签: python if-statement lambda-calculus

我是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)

0 个答案:

没有答案