Lambda正常排序

时间:2018-10-09 07:08:09

标签: lambda-calculus

因此,在上一篇文章之后: Lambda Calculus Reduction steps

我仍然对某些地方感到困惑。

如果我有类似的东西

  

λx。(λz.zz)(λy.y)x

链接文章中的注释:

  

(λ参数输出)输入

参数为λx,但输出为(λz.zz),输入为(λy.y)吗?还是输入(λz.zz)(λy.y)而输入 x

- 我想说

  

(λx。(λz.zz))(λy.y))x

输出是(λz.zz),输入是(λy.y),因为第一个要处理的是一个CAN。

我的步骤,不确定是否正确:

  
      
  1. (λx。(λz.zz))(λy.y))x
  2.   
     

(λy.y)被删除,因为没有x要替换

     
      
  1. (λz.zz)x

  2.   
  3. xx

  4.   

谢谢

1 个答案:

答案 0 :(得分:0)

在初始表达式中加上括号即可:
jest.mock('util'); // core Node.js modules must be explicitly mocked const supertest = require('supertest'); import app from './app'; const request = supertest(app); const realSetInterval = setInterval; // capture the real setInterval const realClearInterval = clearInterval; // capture the real clearInterval beforeEach(() => { jest.useFakeTimers(); // use fake timers }); afterEach(() => { jest.useRealTimers(); // restore real timers }); test("test promisify(setTimeout) with fake timers", async () => { expect.assertions(1); const interval = realSetInterval(() => { jest.runAllTimers(); // run all timers every 10ms }, 10); await request.get("/one").then(res => { realClearInterval(interval); // cancel the interval expect(res.text).toEqual("Original string"); // SUCCESS }); });
在这里,您只能做一个减少:
select name, (mark1+mark2+mark3) as total from student
原来的表情变成了
λx.(((λz.zz) (λy.y)) x)
减少到
((λz.zz) (λy.y)) => ((λy.y) (λy.y)) => λy.y
这是正常形式。