fbpx
维基百科

系统F

系统F,也叫做多态lambda演算二阶lambda演算,是有类型lambda演算。它由逻辑学家Jean-Yves Girard英语Jean-Yves Girard计算机科学家John C. Reynolds英语John C. Reynolds独立发现的。系统F形式化了编程语言中的参数多态的概念。

正如同lambda演算有取值于(rang over)函数的变量,和来自它们的粘合子(binder);二阶lambda演算取值自类型,和来自它们的粘合子。

作为一个例子,恒等函数有形如A→ A的任何类型的事实可以在系统F中被形式化为判断

这里的α是类型变量英语type variable

Curry-Howard同构下,系统F对应于二阶逻辑

系统F,和甚至更加有表达力的lambda演算一起,可被看作Lambda立方体的一部分。

逻辑和谓词 编辑

布尔类型被定义为:  ,这里的α是类型变量。这产生了下列对布尔值TRUEFALSE的两个定义:

TRUE :=  
FALSE :=  

接着,通过这两个λ-项,我们可以定义一些逻辑算子:

AND :=  
OR :=  
NOT :=  

实际上不需要IFTHENELSE函数,因为你可以只使用原始布尔类型的项作为判定(decision)函数。但是如果需要一个的话:

IFTHENELSE :=  

谓词是返回布尔值的函数。最基本的谓词是ISZERO,它返回TRUE当且仅当它的参数是邱奇数 0:

ISZERO := λ n. nx. FALSE) TRUE

系统F结构 编辑

系统F允许以同Martin-Löf类型论有关的自然的方式嵌入递归构造。抽象结构(S)是使用构造子建立的。有函数被定类型为:

 

 自身出现类型 中的一个内的时候递归就出现了。如果你有 个这种构造子,你可以定义 为:

 

例如,自然数可以被定义为使用构造子的归纳数据类型 

 
 

对应于这个结构的系统F类型是  。这个类型的项由有类型版本的邱奇数构成,前几个是:

0 :=  
1 :=  
2 :=  
3 :=  

如果我们反转curried参数的次序(比如 ),则 的邱奇数是接受函数f作为参数并返回fn次幂的函数。就是说,邱奇数是一个高阶函数 -- 它接受一个单一参数函数f,并返回另一个单一参数函数。

用在编程语言中 编辑

本文用的系统F版本是显式类型的,或邱奇风格的演算。包含在λ-项内的类型信息使类型检查直接了当。Joe Wells(1994)设立了一个"难为人的公开问题",证明系统 F的Curry-风格的变体是不可判定的,它缺乏明显的类型提示。

Wells的结果暗含着系统F的类型推论是不可能的。一个限制版本的系统F叫做"Hindley-Milner",或简称"HM",有一个容易的类型推论算法,并用于了很多强类型函数式编程语言,比如HaskellML

参考文献 编辑

  • Girard, Lafont and Taylor, 1997. . Cambridge University Press.
  • J. B. Wells. "Typability and type checking in the second-order lambda-calculus are equivalent and undecidable." In Proceedings of the 9th Annual IEEE Symposium on Logic in Computer Science (LICS), pages 176-185, 1994. [3] (页面存档备份,存于互联网档案馆

外部链接 编辑

系统f, 也叫做多态lambda演算或二阶lambda演算, 是有类型lambda演算, 它由逻辑学家jean, yves, girard, 英语, jean, yves, girard, 和计算机科学家john, reynolds, 英语, john, reynolds, 独立发现的, 形式化了编程语言中的参数多态的概念, 正如同lambda演算有取值于, rang, over, 函数的变量, 和来自它们的粘合子, binder, 二阶lambda演算取值自类型, 和来自它们的粘合子, 作为一个例子, 恒等函数有. 系统F 也叫做多态lambda演算或二阶lambda演算 是有类型lambda演算 它由逻辑学家Jean Yves Girard 英语 Jean Yves Girard 和计算机科学家John C Reynolds 英语 John C Reynolds 独立发现的 系统F形式化了编程语言中的参数多态的概念 正如同lambda演算有取值于 rang over 函数的变量 和来自它们的粘合子 binder 二阶lambda演算取值自类型 和来自它们的粘合子 作为一个例子 恒等函数有形如A A的任何类型的事实可以在系统F中被形式化为判断 L a l x a x a a a displaystyle vdash Lambda alpha lambda x alpha x forall alpha alpha to alpha 这里的a是类型变量 英语 type variable 在Curry Howard同构下 系统F对应于二阶逻辑 系统F 和甚至更加有表达力的lambda演算一起 可被看作Lambda立方体的一部分 目录 1 逻辑和谓词 2 系统F结构 3 用在编程语言中 4 参考文献 5 外部链接逻辑和谓词 编辑布尔类型被定义为 a a a a displaystyle forall alpha alpha to alpha to alpha nbsp 这里的a是类型变量 这产生了下列对布尔值TRUE和FALSE的两个定义 TRUE L a l x a l y a x displaystyle Lambda alpha lambda x alpha lambda y alpha x nbsp FALSE L a l x a l y a y displaystyle Lambda alpha lambda x alpha lambda y alpha y nbsp 接着 通过这两个l 项 我们可以定义一些逻辑算子 AND l x B o o l e a n l y B o o l e a n x B o o l e a n y F A L S E displaystyle lambda x Boolean lambda y Boolean x Boolean y FALSE nbsp OR l x B o o l e a n l y B o o l e a n x B o o l e a n T R U E y displaystyle lambda x Boolean lambda y Boolean x Boolean TRUE y nbsp NOT l x B o o l e a n x B o o l e a n F A L S E T R U E displaystyle lambda x Boolean x Boolean FALSE TRUE nbsp 实际上不需要IFTHENELSE函数 因为你可以只使用原始布尔类型的项作为判定 decision 函数 但是如果需要一个的话 IFTHENELSE L a l x B o o l e a n l y a l z a x a y z displaystyle Lambda alpha lambda x Boolean lambda y alpha lambda z alpha x alpha y z nbsp 谓词是返回布尔值的函数 最基本的谓词是ISZERO 它返回TRUE当且仅当它的参数是邱奇数 0 ISZERO l n n l x FALSE TRUE系统F结构 编辑系统F允许以同Martin Lof类型论有关的自然的方式嵌入递归构造 抽象结构 S 是使用构造子建立的 有函数被定类型为 K 1 K 2 S displaystyle K 1 rightarrow K 2 rightarrow dots rightarrow S nbsp 当S displaystyle S nbsp 自身出现类型K i displaystyle K i nbsp 中的一个内的时候递归就出现了 如果你有m displaystyle m nbsp 个这种构造子 你可以定义S displaystyle S nbsp 为 a K 1 1 a S a K 1 m a S a a displaystyle forall alpha K 1 1 alpha S rightarrow dots rightarrow alpha dots rightarrow K 1 m alpha S rightarrow dots rightarrow alpha rightarrow alpha nbsp 例如 自然数可以被定义为使用构造子的归纳数据类型N displaystyle N nbsp z e r o N displaystyle mathit zero mathrm N nbsp s u c c N N displaystyle mathit succ mathrm N to mathrm N nbsp 对应于这个结构的系统F类型是 a a a a a displaystyle forall alpha alpha to alpha to alpha to alpha nbsp 这个类型的项由有类型版本的邱奇数构成 前几个是 0 L a l x a l f a a x displaystyle Lambda alpha lambda x alpha lambda f alpha to alpha x nbsp 1 L a l x a l f a a f x displaystyle Lambda alpha lambda x alpha lambda f alpha to alpha fx nbsp 2 L a l x a l f a a f f x displaystyle Lambda alpha lambda x alpha lambda f alpha to alpha f fx nbsp 3 L a l x a l f a a f f f x displaystyle Lambda alpha lambda x alpha lambda f alpha to alpha f f fx nbsp 如果我们反转curried参数的次序 比如 a a a a a displaystyle forall alpha alpha to alpha to alpha to alpha nbsp 则n displaystyle n nbsp 的邱奇数是接受函数f作为参数并返回f的n次幂的函数 就是说 邱奇数是一个高阶函数 它接受一个单一参数函数f 并返回另一个单一参数函数 用在编程语言中 编辑本文用的系统F版本是显式类型的 或邱奇风格的演算 包含在l 项内的类型信息使类型检查直接了当 Joe Wells 1994 设立了一个 难为人的公开问题 证明系统 F的Curry 风格的变体是不可判定的 它缺乏明显的类型提示 1 2 Wells的结果暗含着系统F的类型推论是不可能的 一个限制版本的系统F叫做 Hindley Milner 或简称 HM 有一个容易的类型推论算法 并用于了很多强类型的函数式编程语言 比如Haskell和ML 参考文献 编辑Girard Lafont and Taylor 1997 Proofs and Types Cambridge University Press J B Wells Typability and type checking in the second order lambda calculus are equivalent and undecidable In Proceedings of the 9th Annual IEEE Symposium on Logic in Computer Science LICS pages 176 185 1994 3 页面存档备份 存于互联网档案馆 外部链接 编辑Summary of System F 页面存档备份 存于互联网档案馆 by Franck Binard 取自 https zh wikipedia org w index php title 系统F amp oldid 75304326, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。