徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
自由
比浏览器更快的访问!
 

函數程式語言

指数 函數程式語言

函數式編程(functional programming)或称函数程序设计,又稱泛函編程,是一種編程典範,它將電腦運算視為數學上的函數計算,並且避免使用程序状态以及易变物件。函數程式語言最重要的基礎是λ演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(引數)和輸出(傳出值)。 比起指令式編程,函數式編程更加強調程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。.

21 关系: APL不可變物件ClojureConcurrent Clean编程范型ErlangF♯HaskellJavaScriptLISPLogoMathematicaMiranda (编程语言)ML语言OCamlR语言ScalaSchemeXSLT指令式編程数学

APL

APL可以指:.

新!!: 函數程式語言和APL · 查看更多 »

不可變物件

在物件導向及函數程式語言中,不可變物件(Immutable object)是一種物件,在被創造之後,它的狀態(成员变量、属性等的值)就不可以被改變。至於狀態可以被改變的物件,則被稱為可變物件(mutable object)。 不可变意味着只读不写,因此不可變物件天然地具備執行緒安全的特性,即是说如无其它特殊限制的话可以在任何线程上自由调用。此外,相較於可變物件,不可變物件在一些场合下也較合理,易於了解,而且提供較高的安全性。 小型的不可變物件可以被有效率的複製,但是較大的不可變物件,如果想要有效率的被複製,就需要更複雜的一致性資料結構(persistent data structure)演算法。因為效能的緣故,有時候會以可變物件來加以取代不可變物件。 典型的例子例如字符串对象:C++ STL 中的 std::basic_string 是可变的,即可以修改一个 std::basic_string 对象所表示的字符串;而.net 中的 System.String 是不可变的,System.Text.StringBuilder 才像 std::basic_string 一样可变。 Category:面向对象的程序设计 Category:函數式編程.

新!!: 函數程式語言和不可變物件 · 查看更多 »

Clojure

Clojure(發音類似"closure")是一套現代的Lisp語言的動態語言版。它是一个函数式多用途的语言。 Clojure可以執行於Java虛擬機,通用語言運行時以及JavaScript引擎之上。與其他Lisp一樣,Clojure認為同像性,同時擁有複雜的巨集。 Clojure最新的稳定版本是1.8,发布于2016年1月19日。第一个稳定版本1.0于2009年5月4日发布。 Clojure是一个在Eclipse公共许可证下发行的自由软件。目前其开发进程是社区主导的,在作者Rich Hickey以一个“终身的仁慈独裁者”的身份监督下进行。.

新!!: 函數程式語言和Clojure · 查看更多 »

Concurrent Clean

Concurrent Clean,簡稱Clean,是純函數式程序设计語言,它和Haskell有很多相似之處。Clean是用C寫成的。 Clean程式很容易跨平台,在大部分情況下,要轉移到另一個平台只需在那裏重新編譯一次即可,不用改動原始碼。.

新!!: 函數程式語言和Concurrent Clean · 查看更多 »

编程范型

编--程范型、编--程范式或程式--設計法(Programming paradigm),(範即模範、典範之意,範式即模式、方法),是一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。如:函數式編程、程序編程、面向对象编程、指令式编程等等為不同的编程范型。 编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。 正如软件工程中不同的群体会提倡不同的「方法学」一样,不同的编程语言也会提倡不同的「编程范型」。一些语言是专门为某个特定的范型设计的(如Smalltalk和Java支持面向对象编程,而Haskell和Scheme则支持函数式编程),同时还有另一些语言支持多种范型(如Ruby、Common Lisp、Python和Oz)。 很多编程范型已经被熟知他们禁止使用哪些技术,同时允许使用哪些。例如,纯粹的函数式编程不允许有副作用;结构化编程不允许使用goto。可能是因为这个原因,新的范型常常被那些习惯于较早的风格的人认为是教条主义或过分严格。然而,这样避免某些技术反而更加证明了关于程序正确性——或仅仅是理解它的行为——的法则,而不用限制程序语言的一般性。 编程范型和编程语言之间的关系可能十分复杂,由于一个编程语言可以支持多种范型。例如,C++设计时,支持过程化编程、面向对象编程以及泛型编程。然而,设计师和程序员们要考虑如何使用这些范型元素来构建一个程序。一个人可以用C++写出一个完全过程化的程序,另一个人也可以用C++写出一个纯粹的面向对象程序,甚至还有人可以写出杂揉了两种范型的程序。.

新!!: 函數程式語言和编程范型 · 查看更多 »

Erlang

Erlang()是一種通用的----,它由喬·阿姆斯特朗(Joe Armstrong)在瑞典電信設備製造商愛立信所轄的電腦科學研究室開發,目的是創造一種可以應付大規模開發活動的--和執行環境。Erlang於1987年釋出正式版本,最早是愛立信擁有的私有軟體,經過十年的發展,於1998年發表開放源碼版本。 Erlang是運作於虛擬機的--,但是現在也包含有烏普薩拉大學高性能Erlang計劃(HiPE)開發的原生程式碼編譯器,自R11B-4版本開始,Erlang也支持--。在編程範型上,Erlang屬於多重典範程式語言,涵蓋函數式、--及--。循序執行的Erlang是一个及早求值, 單次賦值和--的函數式程式語言。.

新!!: 函數程式語言和Erlang · 查看更多 »

F♯

F#是由微软发展的为.NET语言提供运行环境的程序设计语言,是函數程式語言(FP,Functional Programming),函數程式語言最重要的基礎是Lambda Calculus。它是基于OCaml的,而OCaml是基于ML函数程式语言。有時F#和OCaml的程式是可以交互編譯的。 F#已經接近成熟,支援高阶函数、柯里化、惰性求值、Continuations、模式匹配、闭包、列表处理和元编程。这是一个用于显.NET在不同编程语言间互通的程序设计,可以被.NET中的任意其它代碼編譯和調用。 2002年微软開始由Don Syme帶領研發F#,從C#,LINQ和Haskell中獲取了經驗,2005年推出第一個版本,2007年7月31日释出1.9.2.9版。2007年底,微軟宣布F#進入產品化的階段。 F#已被集成在Visual Studio 2010中,版本是2.0,含有对.Net Framework的完全支持。 F#现在在Visual Studio 2015中,版本是4.0。 F#现在在Visual Studio 2017中,版本是4.1。.

新!!: 函數程式語言和F♯ · 查看更多 »

Haskell

Haskell()是一种标准化的,通用的纯函數程式語言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家哈斯凱爾·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是第一類物件”。作为一门函數程式語言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母「λ」(Lambda)作为自己的标志。Haskell具有“证明即程序、命题为类型”的特征, with 2 sections by William Craig, see paragraph 9E。.

新!!: 函數程式語言和Haskell · 查看更多 »

JavaScript

JavaScript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的直譯語言。它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。 虽然JavaScript与Java这门语言不管是在名字上,或是在语法上都有很多相似性,但这两门编程语言从设计之初就有很大的不同,JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似(例如if条件语句、while循环、switch语句、do-while循环等)。 在客户端,JavaScript在传统意义上被实现为一种解释语言,但在最近,它已经可以被即时编译(JIT)执行。随着最新的HTML5和CSS3语言标准的推行它还可用于游戏、桌面和移动应用程序的开发和在服务器端网络环境运行,如Node.js。.

新!!: 函數程式語言和JavaScript · 查看更多 »

LISP

LISP是具有悠久歷史的計算機編程語言家族,有獨特和完全括號的前綴符號表示法。起源於西元1958年,是現今第二悠久而仍廣泛使用的高階編程語言。只有FORTRAN編程語言比它更早一年。LISP編程語族已經演變出許多種方言。現代最著名的通用編程語種是Common Lisp和Scheme。 LISP最初創建時受到阿隆佐·邱奇的lambda演算的影響,用來作為計算機程序實用的數學表達。因為是早期的高階編程語言之一,它很快成為人工智能研究中最受歡迎的編程語言。在計算機科學領域,LISP開創了許多先驅概念,包括:.

新!!: 函數程式語言和LISP · 查看更多 »

Logo

Logo,1937年成为一个英文单词,通常有下列意思:.

新!!: 函數程式語言和Logo · 查看更多 »

Mathematica

#重定向 Wolfram Mathematica.

新!!: 函數程式語言和Mathematica · 查看更多 »

Miranda (编程语言)

Miranda,一種程式語言,採用惰性求值的純粹函數程式語言,由英國學者大衛·特納(David Turner)所設計。採用來自ML语言與Hope語言的概念,他用此來作為他先前所設計的SASL語言與KRC語言的後繼者。稍後發展出的Haskell語言,採用了很多由Miranda所發展出的概念。 這個程式語言由英國的研究軟體公司(Research Software Ltd.)研發,這間公司擁有這個程式語言的商標權。在1985年首次發表以C語言寫成的直譯器,能夠在類UNIX系統上運作。隨後在1987年與1989年發行了更新版。.

新!!: 函數程式語言和Miranda (编程语言) · 查看更多 »

ML语言

ML是一个通用的函數式編程语言,它是由爱丁堡大学的Robin Milner及他人在二十世纪七十年代晚期开发的。它的语法是从ISWIM得到的灵感。作为元语言的ML是为了帮助在LCF定理证明机中寻找证明策略而构想出来的。(之前的元语言是pplambda,它联合了一阶逻辑演算和有类型的多态的λ演算)。它使用了Hindley-Milner类型推论算法来推测大多数值的类型,而不需要四处使用注解。 ML一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。这一点和纯函数式编程语言——例如Haskell——很不一样。 ML特性包括:傳值呼叫(Call by value)的求值策略,一级函数,带有垃圾收集的自动内存管理,参数多态,静态数据类型,类型推论,代数数据类型,模式匹配和异常处理。 不像Haskell,ML使用及早求值,也就是说所有的子表达式总是被求值。导致的一个结果是你不能使用无穷表。然而,惰性求值产生的无穷表可以通过使用匿名函数来模拟。 今天在ML家族中有好几种语言:两种主要的方言是Standard ML和Caml,其他的包括F#-针对Microsoft.NET平台的开放研究项目。ML中的思想影响了众多的语言,例如Haskell,Cyclone和Nemerle。 ML的实力大多被用于语言设计和操作(编译器、分析器、定理证明机),但是它作为通用语言也被用于生化,金融系统,和宗谱数据库,一个P2P的客户/服务器程序等等。.

新!!: 函數程式語言和ML语言 · 查看更多 »

OCaml

OCaml,最早稱為Objective Caml,是Caml编程语言的主要实现,由Xavier Leroy,Jérôme Vouillon,Damien Doligez,Didier Rémy及其他人于1996年创立。OCaml是开放原始码项目。此项目的管理和大部分维护工作交由INRIA。.

新!!: 函數程式語言和OCaml · 查看更多 »

R语言

R语言,一種自由軟體程式語言與操作環境,主要用于统计分析、绘图、数据挖掘。R本來是由來自新西蘭奧克蘭大學的罗斯·伊哈卡和罗伯特·杰特曼開發(也因此稱為R),現在由“R開發核心團隊”負責開發。R基于S语言的一个GNU計劃项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R的語法是來自Scheme。 R的原始碼可自由下載使用,亦有已編譯的執行檔版本可以下載,可在多种平台下运行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。R主要是以命令行操作,同時有人開發了幾種圖形用戶界面。.

新!!: 函數程式語言和R语言 · 查看更多 »

Scala

Scala()是一门多范式的编程语言,设计初衷是要整合面向对象编程和函数式编程的各种特性。.

新!!: 函數程式語言和Scala · 查看更多 »

Scheme

Scheme是一种函数式编程语言,是Lisp的两种主要方言之一(另一种为Common Lisp)。不同于Common Lisp,Scheme遵循極簡主義哲学,以一个小型语言核心作为标准,加上各种强力语言工具(语法糖)来扩展语言本身。 麻省理工學院與其他院校曾采用Scheme教授计算机科学入門課程。著名的入門教材《-zh-hans:计算机程序的构造和解释;zh-hant:電腦程式的構造和解釋-》(SICP)利用Scheme來解釋程序設計 。Scheme的廣泛受眾被視為一個主要優勢,然而不同實現之間的差異成為了它的一個劣勢。 Scheme最早由麻省理工學院的蓋伊·史提爾二世與傑拉德·傑伊·薩斯曼在1970年代發展出來,並由兩人發表的「λ論文集」推廣開來。 Scheme語言與λ演算關係十分密切。小寫字母「λ」是Scheme語言的標誌。 Scheme的哲学是:设计计算机语言不应该进行功能的堆砌,而应该尽可能减少弱点和限制,使剩下的功能显得必要。Scheme是第一個使用靜態作用域的Lisp方言,也是第一个引入“干净宏”和第一类续延的编程语言。.

新!!: 函數程式語言和Scheme · 查看更多 »

XSLT

在计算机科学中,可扩展样式--转换语言(Extensible Stylesheet Language Transformations,缩写XSLT)是一种樣式轉換標記语言,可以將XML資料檔轉換為另外的XML或其它格式,如HTML網頁,純文字。XSLT最末的T字母表示英语中的“转换”(transformation)。它是XSL规范中的一部份,目前最新的建議版本為XSL 3.0。 以XSLT進行格式轉換並不會變動原始的資料文件;而會以現有資料產生新的內容格式。作為輸入的通常是XML資料檔,或者由支援XQuery和XPath的資料模型處理器,其它來源的資料也能被轉換,例如關聯式資料庫表格或地理資訊系統。 XSL规范的另外一部分是XSLF(Formatting Objects,代表格式化物件),又称XSL-FO或XSLFO,目前已逐漸被CSS 3.0所取代。XSLT是一種圖靈完備的語言,它可以指定計算機能執行的任何計算。.

新!!: 函數程式語言和XSLT · 查看更多 »

指令式編程

指令式編程(Imperative programming),是一種描述電腦所需作出的行為的編程典範。幾乎所有電腦的硬體工作都是指令式的;幾乎所有電腦的硬體都是設計來執行機器碼,使用指令式的風格來寫的。較高階的指令式編程語言使用變數和更複雜的語句,但仍依從相同的典範。菜譜和行動清單,雖非電腦程式,但與指令式編程有相似的風格:每步都是指令,有形的世界控制情況。因為指令式編程的基礎觀念,不但概念上比較熟悉,而且較容易具體表現於硬體,所以大部分的編程語言都是指令式的。 大部分的高级语言都支援四種基本的語句:.

新!!: 函數程式語言和指令式編程 · 查看更多 »

数学

数学是利用符号语言研究數量、结构、变化以及空间等概念的一門学科,从某种角度看屬於形式科學的一種。數學透過抽象化和邏輯推理的使用,由計數、計算、量度和對物體形狀及運動的觀察而產生。數學家們拓展這些概念,為了公式化新的猜想以及從選定的公理及定義中建立起嚴謹推導出的定理。 基礎數學的知識與運用總是個人與團體生活中不可或缺的一環。對數學基本概念的完善,早在古埃及、美索不達米亞及古印度內的古代數學文本便可觀見,而在古希臘那裡有更為嚴謹的處理。從那時開始,數學的發展便持續不斷地小幅進展,至16世紀的文藝復興時期,因为新的科學發現和數學革新兩者的交互,致使數學的加速发展,直至今日。数学并成为許多國家及地區的教育範疇中的一部分。 今日,數學使用在不同的領域中,包括科學、工程、醫學和經濟學等。數學對這些領域的應用通常被稱為應用數學,有時亦會激起新的數學發現,並導致全新學科的發展,例如物理学的实质性发展中建立的某些理论激发数学家对于某些问题的不同角度的思考。數學家也研究純數學,就是數學本身的实质性內容,而不以任何實際應用為目標。雖然許多研究以純數學開始,但其过程中也發現許多應用之处。.

新!!: 函數程式語言和数学 · 查看更多 »

重定向到这里:

函数式程序设计函数式程序设计语言函数式编程语言函數式編程函數編程語言泛函編程

传出传入
嘿!我们在Facebook上吧! »