函數程式語言

维基百科,自由的百科全书
跳转至: 导航搜索

函數式編程英语Functional programming)或者函数程序设计,又稱泛函編程,是一種編程典範,它將電腦運算視為數學上的函數計算,並且避免使用程序状态以及易变物件。函數程式語言最重要的基礎是λ演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(引數)和輸出(傳出值)。

指令式編程相比,函數式編程強調程序的执行结果比执行过程更重要,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

函數式編程語言[编辑]

函數式編程經常使用遞歸

函數式的程式沒有變數副作用。因為函數式程式設計語言沒有變數,函數沒有副作用,編寫出的程式可以利用記憶化公共子表達式消除並行計算在運行時和編譯時得到大量優化。輸入引數輸出傳值

典型的函數式編程語言[编辑]

純函數式編程語言[编辑]

非純函數式編程語言[编辑]

其他函數式編程語言[编辑]

歷史[编辑]

函數式編程中最古老的例子莫過於1958年被創造出來的LISP了,透過LISP,可以用精簡的人力。較現代的例子包括schemeHaskellCleanErlangMiranda等。雖然λ演算並非設計來於計算機上執行,但可視為第一個函數式編程語言。1980年代末期,Haskell發佈,企圖集合很多函數式編程研究裏的想法。

速度和空間上的顧慮[编辑]

函數式編程常被認為嚴重耗費在CPU和記憶體資源。主因有二:

  • 早期的函數式編程語言實現時並無考慮過效率問題。
  • 有些非函數式編程語言為求提昇速度,不提供自動邊界檢查或自動垃圾回收等功能。

惰性求值亦為語言如Haskell增加了額外的管理工作。

外部鏈結[编辑]