目录
头等函数
头等函数(first-class function)是指在程序设计语言中,函数被当作头等公民。这意味着,函数可以作为别的函数的参数、函数的返回值,赋值给变量或存储在数据结构中。 有人主张应包括支持匿名函数(函数字面量,function literals)。, by Michael Lee Scott, section 11.2 "Functional Programming".
查看 简单类型λ演算和头等函数
不动点组合子
不动点组合子(Fixed-point combinator,或不动点算子)是计算其他函数的一个不动点的高阶函数。 函数 f 的不动點是將函數應用在輸入值 x 時,會傳回與輸出值相同的值,使得 f(x).
依赖类型
在计算机科学和逻辑中,依赖类型(或依存类型,dependent type)是指依赖于值的类型,其理论同时包含了数学基础中的类型论和计算机编程中用以减少程序错误的类型系统两方面。在 Per Martin-Löf 的直觉类型论中,依赖类型可对应于谓词逻辑中的全称量词和存在量词;在依赖类型函数式编程语言如 ATS、Agda、Dependent ML、Epigram、F* 和 Idris 中,依赖类型系统通过极其丰富的类型表达能力使得程序规范得以借助类型的形式被检查,从而有效减少程序错误。 依赖类型的两个常见实例是依赖函数类型(又称依赖乘积类型、Π-类型)和依赖值对类型(又称依赖总和类型、Σ-类型)。一个依赖类型函数的返回值类型可以依赖于某个参数的具体值,而非仅仅参数的类型,例如,一个输入参数为整型值n的函数可能返回一个长度为n的数组;一个依赖类型值对中的第二个值可以依赖于第一个值,例如,依赖类型可表示这样的类型:它由一对整数组成,其中的第二个数总是大于第一个数。 依赖类型增加了类型系统的复杂度。由于确定两个依赖于值的类型的等价性需要涉及具体的计算,若允许在依赖类型中使用任意值的话,其类型检查将会成为不可判定问题;换言之,无法确保程序的类型检查一定会停机。 由于Curry-Howard同构揭示了程序语言的类型论与证明论的直觉逻辑之间的紧密关联性,以依赖类型系统为基础的编程语言大多同时也作为构造证明与可验证程序的辅助工具而存在,如 Coq 和 Agda(但并非所有证明辅助工具都以类型论为基础);近年来,一些以通用和系统编程为目的的编程语言被设计出来,如 Idris。 一些以证明辅助为主要目的的编程语言采用强函数式编程(total functional programming),这消除了停机问题,同时也意味着通过它们自身的核心语言无法实现任意无限递归,不是图灵完全的,如 Coq 和 Agda;另外一些依赖类型编程语言则是图灵完全的,如 Idris、由 ML 衍生而来的 ATS 和 由 F# 衍生而来的 F*。.
查看 简单类型λ演算和依赖类型
类型居留问题
在简单类型lambda演算中,类型居留问题是如下问题: 给定一个类型 \tau,是否存在一个 \lambda-项 M 使得对于某个类型环境 \Gamma 有 \Gamma \vdash M: \tau ? 如果回答是肯定的,则 M 被称为 \tau 的居所。 因为在简单类型的 lambda 演算中类型对应于极小蕴涵逻辑(参见Curry-Howard同构),一个类型有一个居所,当且仅当它是极小蕴涵逻辑的重言式。 Richard Statman 证明了类型居留问题是 PSPACE-完全性的。 Category:Lambda演算 Category:类型论.
类型论
在最广泛的层面上,类型论是关注把实体分类到叫做类型的搜集中的数学和逻辑分支。在这种意义上,它与类型的形而上学概念有关。现代类型论在部分上是响应罗素悖论而发明的,并在伯特兰·罗素和阿弗烈·诺夫·怀海德的《数学原理》中起到重要作用。 在计算机科学分支中的编程语言理论中,类型论提供了设计分析和研究类型系统的形式基础。实际上,很多计算机科学家使用术语“类型论”来称呼对编程语言的类型语言的形式研究,尽管有些人把它限制于对更加抽象的形式化如有类型lambda演算的研究。.
查看 简单类型λ演算和类型论
类型推论
类型推论、型別推斷、或隐含类型,是指编程语言在编译期中能够自动推导出值的数据类型的能力,它是一些强静态类型语言的特性。一般而言,函数式编程语言也具有此特性。自动推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。 具有类型推论的语言有:Rust, Haskell, Cayenne, Clean, ML, OCaml, Epigram, Scala, Nemerle, D, Chrome,Visual Basic 2008和 Boo。计划支持类型推论的有 Fortress, Vala, C# 3.0, C++11和Perl 6。 显式的转换到另一种数据类型叫做“强制”。.
查看 简单类型λ演算和类型推论
用於數學、科學和工程的希臘字母
希臘字母被用於數學、科學、工程和其他方面。在數學方面,希臘字母通常用於常數、特殊函數和特定的變數,而且通常大寫和小寫都有分別,而且互不相關。有一些希臘字母和拉丁字母一樣,而且不被使用:A, B, E, H, I, K, M, N, O, P, T, X, Y, Z。除此之外,由於小寫的ι(iota),ο(omicron)和υ(upsilon)跟拉丁字母i,o和u相似,所以很少被使用。有時,希臘字母的字體變種在數學數有特定的意思,例如φ(phi)和π(pi)。 在金融數學中,有些會用來表示投資風險的變數。 母語為英語的數學家在讀希臘字母時,他們不會用現在的或古時的發音,但用傳統的英語發音。例如θ,數學家會讀成/ˈθeɪtə/。(古時:,現在:).
直觉类型论
觉类型论、或构造类型论、或Martin-Löf 类型论、或就叫类型论是基于数学构造主义的函数式编程语言、逻辑和集合论。直觉类型论由瑞典数学家和哲学家 Per Martin-Löf 在1972年介入。 Martin-Löf 已经多次修改了它的提议;先是非直谓性的而后是直谓性的,先是外延的而后是内涵的类型论变体。 直觉类型论基于的是命题和类型的同一: 一个命题同一于它的证明的类型。这种同一通常叫做Curry-Howard同构,它最初公式化了命题逻辑和简单类型 lambda 演算。类型论通过介入包含着值的依赖类型把这种同一扩展到谓词逻辑。类型论内在化了 Brouwer、Heyting 和 Kolmogorov 提议的叫做 BHK释义的直觉逻辑释义。类型论的类型扮演了类似于集合在集合论的角色,但是在类型论中的函数总是可计算的。.
规范化性质
在数理逻辑和理论计算机科学中,一个重写系统有规范化性质,如果所有项都是强规范化的;就是说所有重写序列都最终终止于规范形式的项。 纯粹无类型 lambda 演算不是强规范化的。考虑项 \lambda x. x x x。它有如下重写规则: 对于任何项 t, 但是考虑在应用 \lambda x.
Lambda立方体
在数理逻辑和类型论中,λ-立方是探索 Coquand 的构造演算中细化轴的框架,以简单类型 λ-演算(在立方图中写作 λ→)作为原点放在立方体的顶点,而构造演算(即高阶依赖类型化 λ-演算,在图中写作 λPω)则是其空间对顶点。立方体的每个轴都表示一种新的抽象形式:.
柯里-霍华德同构
柯里-霍華德对应是在计算机程序和数学证明之间的紧密联系;这种对应也叫做柯里-霍華德同构、公式为类型对应或命题为类型对应。这是对形式逻辑系统和公式计算(computational calculus)之间符号的相似性的推广。它被认为是由美国数学家哈斯凯尔·加里和逻辑学家William Alvin Howard独立发现的。.
构造演算
构造演算(CoC)是高阶有类型 lambda 演算,这里的类型是一级值。因此在 CoC 内有可能定义从整数到类型、从类型到类型的函数,同从整数到整数的函数一样。CoC 是强规范化的。 CoC 最初由 Thierry Coquand 开发。 CoC 是 Coq 定理证明器早期版本的基础;它后来的版本建造在归纳构造演算之上,这是带有对归纳数据类型的天然支持的 CoC 扩展。在最初的 CoC 中,归纳数据类型必须模拟为它们的多态解构函数。.
查看 简单类型λ演算和构造演算
有类型λ演算
有类型 lambda 演算是使用 lambda 符号(\lambda)指示匿名函数抽象的一种有类型的形式化。有类型 lambda 演算是基础编程语言并且是有类型的函数式编程语言如 ML 和 Haskell 和更间接的指令式编程语言的基础。它们通过 Curry-Howard同构密切关联于直觉逻辑并可以被认为是范畴的类的内部语言,比如简单类型 lambda 演算是笛卡尔闭范畴(CCC)的语言。 传统上,有类型 lambda 演算被看作无类型lambda演算的精细化。更现代的观点把有类型 lambda 演算看做更基础的理论,而把无类型 lambda 演算看作它的只有一个类型的特殊情况。.
亦称为 简单类型 lambda 演算,简单类型Lambda演算,简单类型化λ演算。