在lambda演算中的其他函数体之前注入函数

时间:2017-11-08 10:07:36

标签: lambda-calculus

我试图解决一个未知函数B的函数方程式,如下所示:

B f (λg.M) = (λg.f M)

也就是说,我正在寻找一个函数B(&#34的简写;在body&#34之前注入;),当使用给定函数f调用时lambda表达式(λg.M)(其中M是该lambda函数体中的某个表达式),将在表达式f之前添加函数M,将该表达式视为函数f应用于的参数。

然而,我遇到了一个问题:如何"剥离"来自lambda表达式λg.的绑定(λg.M)只能获得M?有没有办法提取它?它有可能吗?

一个相关的问题,更一般:
有没有任何解决这些函数方程的技术来获得未知函数的公式,根据某个函数方程的定义表现? (如上所述)

1 个答案:

答案 0 :(得分:1)

我不知道是否有解决此类问题的一般方法,但在这种特殊情况下,您可以采取

B = λf.λh.(λg'. f (h g'))

有了这样的B,我们有

   B f (λg.M)
-> (λh.(λg'. f (h g'))) (λg.M)
-> (λg'. f ((λg.M) g'))
-> (λg'. f (M[g := g'] ))

这是你想要的,直到α等价。