Lambda 表达式学习(2) ——lambda 变换
2015-03-20 21:58
169 查看
回顾λ-calculus语法:
t ::= terms:
x variable
λx.t abstraction
t t application
λ-变换:保持λ-项含义的同时对其进行变换。
1. α-变换:改变被绑定变量的名称,所代表的含义仍是一样的。
λx.t → λy.t(x:=y)
(将表达式的body t中的所有x的自由出现替换称y)
两个lambda表达式如果可以通过α-变换(可能应用到子项)从一个变换到另外一个,则称他们是全等的。
2. β-规约:对application的变换,表示函数作用的概念。
![](http://images.cnitblog.com/blog2015/733770/201503/202157350474950.png)
将t1中所有的自由的x替换为t2作为结果。
不允许任何beta归约的lambda表达式被称为Beta范式。不是所有的表达式都可以归约到范式。
3. η-变换:
Eta-conversion expresses the idea of extensionality, which in this context is that two functions are the same if and only if they give the same result for all arguments. Eta-conversion converts between λx.(f x) and f whenever x does not appear free in f.
t ::= terms:
x variable
λx.t abstraction
t t application
λ-变换:保持λ-项含义的同时对其进行变换。
1. α-变换:改变被绑定变量的名称,所代表的含义仍是一样的。
λx.t → λy.t(x:=y)
(将表达式的body t中的所有x的自由出现替换称y)
两个lambda表达式如果可以通过α-变换(可能应用到子项)从一个变换到另外一个,则称他们是全等的。
2. β-规约:对application的变换,表示函数作用的概念。
![](http://images.cnitblog.com/blog2015/733770/201503/202157350474950.png)
将t1中所有的自由的x替换为t2作为结果。
不允许任何beta归约的lambda表达式被称为Beta范式。不是所有的表达式都可以归约到范式。
3. η-变换:
Eta-conversion expresses the idea of extensionality, which in this context is that two functions are the same if and only if they give the same result for all arguments. Eta-conversion converts between λx.(f x) and f whenever x does not appear free in f.
相关文章推荐
- C# in Depth Third Edition 学习笔记-- Lambda表达式和表达式树
- Java学习笔记-Lambda表达式及內建函数式接口
- Java Lambda 表达式学习笔记
- DotNet 3.0+ 新特性学习 之 匿名方法&Lambda表达式(Anonymous Method&Lambda Expression)
- Java8学习笔记 — 【Lambda表达式】
- 学习笔记之在 LINQ 外部使用 Lambda 表达式(C# 编程指南)
- 黑马程序员之C#学习笔记: Lambda表达式学习总结
- [C#学习教程-委托]001.大道至简之委托(代理),匿名函数,Lambda表达式
- LINQ To SQL深入学习系列之一(C#3.0为LINQ的加强之一Lambda 表达式)
- Lambda表达式学习笔记
- java 8 lambda 表达式 学习
- JDK 8 新特性学习(二) Lambda表达式、集合流之操作
- Java8学习笔记(一)-初步认识Lambda表达式
- 学习Java8--Lambda表达式
- Java 8特性学习 --- Lambda表达式
- JAVA 1.8 新特性学习(2) lambda表达式
- Java8 Lambda表达式学习心得
- Java 8学习之Lambda表达式
- c++ 11学习笔记--Lambda 表达式(对比测试Lambda ,bind,Function Object)