`
SunMicro
  • 浏览: 20999 次
社区版块
存档分类
最新评论

Lambda Calculus

阅读更多
λ演算是一套用于研究函数定义、函数应用和递归的形式系统。它由 Alonzo Church 和 Stephen Cole  Kleene 在 20 世纪三十

年代引入,Church 运用 lambda 演算在 1936 年给出 判定性问题 (Entscheidungsproblem) 的一个否定的答案。这种演算可以

用来清晰地定义什么是一个可计算函数。关于两个 lambda 演算表达式是否等价的命题无法通过一个通用的算法来解决,这是

不可判定性能够证明的头一个问题,甚至还在停机问题之先。Lambda 演算对函数式编程有巨大的影响,特别是Lisp 语言。

Lambda 演算可以被称为最小的通用程序设计语言。它包括一条变换规则 (变量替换) 和一条函数定义方式,Lambda 演算之通

用在于,任何一个可计算函数都能用这种形式来表达和求值。因而,它是等价于图灵机的。

尽管如此,Lambda 演算强调的是变换规则的运用,而非实现它们的具体机器。可以认为这是一种更接近软件而非硬件的方

式。

有界vs自由

python 代码
 
  1. (lambda x,y:x+y)+x+y+z  

lambda表达式中的x,y与外部x,y显然是不同的,为了区别两者,引入了有界和自由的概念。lambda只能处理有界的标识

符。

当一个标识符出现在了lambda的参数里面,并包含在了这个lambda表达式中,那么就称其有界限,反之无界。

python 代码
 
  1. (lambda x,y:x+y)+x+y+z  


x,y被包含在了lambda表达式中,所以其有界,而z没有那么他就是自由标识符,虽然y在lambda的参数中,但并没有在表达式中

出现。那么他就是自由的

有界和自由是一个相对的概念

python 代码
 
  1. (lambda x:(lambda y,z:y+2)) 

相对于内嵌的lambda,z是自由的,因为在内嵌的表达式中并没有z出现,然后相对于整个lambda表达式,它又是有界的。

“free(x)”代表表达式x所有的自由变量集合


判定lambda表达式完全合法的标准是它的所有变量都是有界的。

上例中(lambda x,y:x+2)虽然可以在程序中正常执行,但其实是一个不完全合法的lambda表达式

lambda算子计算规则

alpha,beta,eta

alpha(conversion)(转换规则):

简单来说就是重命名规则(但被绑定的变量能否由另一个变量替换有一系列的限制):

lambda x,y:x+ylambda m,n:m+n是等价的

beta(reduction)(归约)

将lambda表达式中的有界变量替换为应用中对应得实际值

(lambda x,y:x+y)(2,3)等价于2+3

Beta的严格定义:

lambda x . B e = B[x := e] if free(e) \subset free(B[x := e]

考虑这样一种情况

python 代码
 
  1. (lambda x:(lambda y:x+y)(x+3) 

其等价的表达式现在是

x+x+3

这里的问题是lambda中得有界变量与(x+3)中得自由变量有冲突,两则是不同的,需要区别

alpha[x/z]:(lambda x:(lambda y:x+y)(x+3)=(lambda z:(lambda y:z+y)(x+3)

现在展开后就是z+x+3,正确结果


eta(变换)
Eta表达的是外延性的概念,在这里外延性指的是,两个函数对于所有的参数得到的结果都一致,当且仅当它们是同一个函数。


(python中的lambda不等价与该处所指的lambda)
www.wikilib.com/wiki
分享到:
评论

相关推荐

    The Lambda Calculus (Stanford Encyclopedia of Philosophy).pdf

    **Lambda 函数演算**(Lambda Calculus)是计算机科学、逻辑学和数学中的一个基本概念,由逻辑学家阿隆佐·邱奇在20世纪30年代提出。它的核心是一个简洁的表示函数及其应用的符号系统。Lambda演算通过抽象和应用两个...

    Lambda Calculus and Combination an introduction

    Lambda Calculus for computer science; Although it is an introduction, it is an abstract for lambda calculus

    Lambda Calculus its Syntax and Semantics.djvu

    Lambda Calculus its Syntax and Semantics.djvu 俄文版

    The Lambda Calculus Its Syntax and Semantics 2nd pdf

    这是一本讲述了Lambda Calculus的书,而且其内容讲的十分透彻,只是很厚,希望大家努力

    A short introduction to the Lambda Calculus

    《Lambda演算:简明介绍及其历史背景》 在探讨Lambda演算之前,我们先简要回顾一下数学符号的历史演变,这将有助于我们更好地理解Lambda演算作为一种创新性符号体系的出现背景。数学符号,尤其是数字表示法,在西方...

    Introduction to Lambda Calculus

    λ演算,λ(Lambda(大写Λ,小写λ)读音:lan b(m) da(兰亩达)['læ;mdə])演算是一套用于研究函数定义、函数应用和递归的形式系统。它由 Alonzo Church 和 Stephen Cole Kleene 在 20 世纪三十年代引入,...

    lambda calculus

    Lambda学习,不错的资料参考 The λ-calculus was begun at Princeton, and the purpose of this report is to show how it has been recycled every decade after the 1930s in new and useful ways.

    A Tutorial Introduction to the Lambda Calculus

    ### Lambda演算简介 #### 一、Lambda演算概述 Lambda演算是一种形式化的计算模型,由美国逻辑学家阿隆佐·丘奇(Alonzo Church)在20世纪30年代提出。它最初是为了研究有效可计算函数的数学性质而开发的。经过数十年...

    Lambda Calculus with Types

    本书《Lambda Calculus with Types》不仅覆盖了Lambda演算的基础理论,还着重介绍了三种类型系统:简单类型、递归类型和交叉类型。简单类型系统确保函数接收特定类型的参数并返回特定类型的值;递归类型用于描述可以...

    The Lambda Calculus Its Syntax and Semantics 2nd

    lambda的书

    Lambda Calculus and Types.pdf

    ### Lambda演算与类型系统概览 ...综上所述,《Lambda Calculus and Types》涵盖了Lambda演算的基础知识、核心概念以及一些高级主题,为读者提供了深入理解Lambda演算及其在理论计算机科学中的应用的全面视角。

    An Introduction to Functional Programming Through Lambda Calculus

    标题《通过λ演算介绍函数式编程》指出,本书旨在通过介绍λ演算这一简洁的计算形式系统,提供对函数式编程概念的温和引导。λ演算由Alonzo Church发明,是理论计算机科学领域的一个核心概念。书中以纯λ演算为基础...

    An introduction to functional programming through lambda calculus.PDF.zip

    Functional programming is rooted in lambda calculus, which constitutes the world's smallest programming language. This well-respected text offers an accessible introduction to functional programming ...

    introduction to lambda calculus.Henk Barendregt Erik Barendsen

    《Lambda 函数演算简介》由 Henk Barendregt 和 Erik Barendsen 合著,这本著作是深入理解 Lambda 函数演算的基础读物。Lambda 函数演算是数学和计算机科学领域的一个核心概念,它起源于莱布尼茨的理想——创建一种...

    An Introduction to the Lambda Calculus

    It is surprising that despite the simplicity of its syntax, the λ-calculus hosts a large body of notation, abbreviations, naming conventions, etc. Our aim, as far as the notation throughout this work...

    Orangeboard Lambda Calculus Interpreter-开源

    Orangeboard Lambda Calculus Interpreter 是一个基于.NET / mono平台的开源项目,专为了解释和评估未类型化的λ(Lambda)演算表达式而设计。λ演算是计算机科学中一种抽象的计算模型,由数学家Alonzo Church在20...

    Graphic lambda calculus

    图灵lambda演算是一种视觉语言,用于表示未类型化的lambda演算,并且可以应用于新兴代数的计算或局部平面纠结图的Reidemeister变换的表示。由Marius Buliga在罗马尼亚科学院数学研究所提出的这一理论,具有一个核心...

    LCI - A lambda calculus interpeter-开源

    LCI(Lambda Calculus Interpreter)是一个实现这个理论的开源项目,它为用户提供了一个交互式的环境来实验和理解 lambda 演算。 LCI 不仅仅是一个简单的语法解析器,它还包含了对 lambda 演算的丰富支持。以下是...

    The Impact of the Lambda Calculus in Logic and Computer Science (1997)-计算机科学

    在1997年的论文"The Impact of the Lambda Calculus in Logic and Computer Science"中,探讨了Lambda演算如何影响逻辑学和计算机科学的发展。Lambda演算由数学家阿隆佐·邱奇于20世纪30年代提出,它为函数式编程...

Global site tag (gtag.js) - Google Analytics