标签:而不是 提升性能 mcc prot rem 简单 快速 term 开发
历史
Lambda演算为描述函数及其评估提供了理论框架。它是一种数学抽象而不是编程语言 - 但它构成了几乎所有当前函数式编程语言的基础。等效的理论公式,组合逻辑,通常被认为比lambda演算更抽象,并且在发明之前。组合逻辑和lambda演算最初都是为了更清晰地接近数学基础而开发的。
一种早期功能性语言是Lisp,它是由John McCarthy在麻省理工学院(MIT)于20世纪50年代后期开发的IBM 700/7000系列科学计算机。 Lisp首先介绍了函数式编程的许多范式特性,尽管早期的Lisp是多范式语言,并且随着新范式的发展,它包含了对众多编程风格的支持。后来的方言,如Scheme和Clojure,以及Dylan和Julia等分支,试图简化和合理化Lisp围绕一个干净功能的核心,而Common Lisp旨在保存和更新它所取代的众多旧方言的范式特征。
信息处理语言(IPL),1956,有时被认为是第一种基于计算机的函数编程语言。[32]它是一种用于操纵符号列表的汇编式语言。它确实有一个生成器的概念,它相当于一个接受函数作为参数的函数,并且,由于它是一个汇编级语言,代码可以是数据,因此IPL可以被视为具有更高阶函数。但是,它在很大程度上依赖于变异列表结构和类似的命令性功能。
Kenneth E. Iverson在20世纪60年代早期开发了APL,在他1962年出版的“ A Programming Language”(ISBN 9780471430148)一书中有所描述。APL是约翰巴克斯的FP的主要影响力。在90年代初,艾弗森和罗杰·惠创建?。在20世纪90年代中期,以前曾与艾弗森合作过的亚瑟惠特尼创建了K,后者在金融行业中与其后代Q一起商业化使用。
约翰巴克斯在他的1977年图灵奖演讲中展示了FP “可以从冯·诺依曼风格中解放出来的程序设计功能风格及其程序代数”。他将功能性程序定义为通过“组合形式”以分层方式构建,允许“程序代数”; 在现代语言中,这意味着功能性程序遵循组合性原则。 Backus的论文推广了函数式编程的研究,虽然它强调功能级编程而不是现在与函数式编程相关的lambda-calculus风格。
1973年语言ML被创造罗宾·米尔纳在爱丁堡大学和大卫·特纳开发的语言SASL在圣安德鲁斯大学。同样在20世纪70年代的爱丁堡,Burstall和Darlington开发了功能语言NPL。NPL基于Kleene递推方程,并在他们的程序转换工作中首次引入。然后Burstall,MacQueen和Sannella将ML的多态类型检查结合起来,产生了Hope语言。ML最终发展成几种方言,其中最常见的是OCaml和Standard ML。
同时,如有影响力的Lambda论文和经典的1985年教科书“计算机程序的结构和解释”中所描述的,Scheme的发展,Lisp 的简单词汇范围和(不纯)功能方言,将功能性编程的力量意识提升到更广泛的范围。编程语言社区。
在20世纪80年代,Per Martin-Löf开发了直觉型理论(也称为建构型理论),它将功能性程序与表达为依赖类型的建设性证据联系起来。这导致了交互式定理证明的新方法,并影响了后续函数式编程语言的发展。 David Turner开发的懒惰功能语言Miranda最初出现于1985年,对Haskell有很强的影响力。由于米兰达是专有的,Haskell于1987年开始达成共识以形成一个功能规划研究的开放标准 ; 实施版本自1990年以来一直在进行中。
最近,它已经在基于CSG几何框架构建的OpenSCAD语言的参数CAD中得到了应用,尽管它无法重新分配值导致了通常不熟悉函数式编程作为概念的用户之间的混淆。功能编程继续用于商业环境。
标签:而不是 提升性能 mcc prot rem 简单 快速 term 开发
原文地址:https://www.cnblogs.com/ljy1/p/10591443.html