Can you summarize the following document?
        
  

  純函數語言程式設計語言通常不允許直接使用程式狀態以及易變物件

  函數語言程式設計長期以來在學術界流行,但幾乎沒有工業應用。然而,最近幾種函數語言程式設計語言已經在商業或工業系統中使用。例如,Erlang程式語言由瑞典公司Ericsson在20世紀80年代後期開發,最初用於實現容錯電信系統。此後,它已在Nortel,Facebook,ÉlectricitédeFrance和WhatsApp等公司作為建立一系列應用程式的語言。Lisp的Scheme分支被用作早期Apple Macintosh計算機上的幾個應用程式的基礎,並且最近已應用於諸如訓練模擬軟體和望遠鏡控制等方向。OCaml於20世紀90年代中期推出,已經在金融分析,驅動程式驗證,工業機器人程式設計和嵌入式軟體靜態分析等領域得到了商業應用。Haskell雖然最初是作為一種研究語言,也已被一系列公司應用於航空航天系統,硬體設計和網路程式設計等領域。  其他在工業中使用的函數語言程式設計語言包括Scala、F#(兩者都是功能性面對物件程式設計的混合,支援純函式和指令式程式設計)、Wolfram語言、Lisp、Standard ML和Clojure。

  教育方面,函數語言程式設計一直受到了很大的重視,很多學校使用函數語言程式設計來教授演算法和幾何的相關概念。

  函數語言程式設計的理論基礎是Lambda演算,其本身是一種數學的抽象但不是程式語言。另一個組合邏輯是比它更加古老和基礎的數學根基。兩者都是為了更好的表達數學基礎才被開發的。  早期的函式式語言例如Lisp,是由 John McCarthy在麻省理工學院,於20世紀50年代後期開發的,執行在大型IBM機(IBM 700/7000系列)上。Lisp最早引入了函式式的很多特性,最開始的lisp是多正規化語言,並且隨著新的正規化的發展,越來越多的程式設計風格得到了支援。後來分支出來的語言,例如Scheme,Clojure,Dylan和Julia等分支,試圖簡化Lisp,使它圍繞一個功能核心,而Common Lisp旨在保留lisp的原始正規化特徵。  而發明於1956年的IPL語言,一般被認為是第一個基於計算機的函數語言程式設計語言。 它是一種用於操縱符號列表的彙編式語言。它有一個生成器的概念,相當於一個接受函式作為引數的函式,並且,由於它是彙編級語言,程式碼可以是資料,因此IPL可以被視為具有更高階函式。但是,它在很大程度上依賴於改變列表的結構和類似的命令性程式設計的功能。也就是說,並不是完全的現在所謂的函數語言程式設計。  Kenneth E. Iverson在20世紀60年代早期開發了APL,在他1962年出版的《A Programming Language》一書中有介紹。 APL給John Backus的FP提供了巨大的影響。 在20世紀90年代早期,Iverson和Roger Hui創造了J語言。 在20世紀90年代中期,以前曾與Iverson合作過的Arthur Whitney建立了K語言,後者在金融行業中與其衍生出來的Q語言一起被商業化使用。  John Backus在他1977年的圖靈獎頒獎演講《可以從馮·諾依曼式的程式設計風格中解放出來的程式設計和功能風格及其程式代數》中,展示了他提出的FP。他將函數語言程式設計定義為通過“組合形式”以分層方式構建,允許“程式代數”; 在現代語言中,這意味著功能性程式遵循組合性原則 。Backus的論文推廣了函數語言程式設計的研究,雖然它強調的是函式級程式設計而不是現在所說的lambda演算風格。  1973年ML語言由愛丁堡大學的 Robin Milner發明。同年,David Turner在聖安德魯斯大學開發SASL語言。在20世紀70年代的愛丁堡,Burstall和Darlington開發了NPL語言。 NPL基於,並在他們的程式轉換工作中首次引入。 然後Burstall,MacQueen和Sannella將ML的多型型別檢查結合起來,產生了Hope語言。ML最終發展成幾種語言,其中最常見的是OCaml和Standard ML。 同時,如有影響力的Lambda paper和經典的1985年教科書《Structure and Interpretation of Computer Programs》中所描述的,Scheme的發展,Lisp的功能子集和不完全的函式式語言分支,將函數語言程式設計的影響力提升到更廣泛的範圍,讓更多的程式語言社群接觸到它們。  在20世紀80年代, Per Martin-Löf開發了直覺型別論(也稱為構造型別論),它將函數語言程式設計與表現為型別依賴的數學證明聯絡起來。這導致了的新方法的產生,並影響了後續的函數語言程式設計語言的發展。 David Turner開發的惰性求值函式式語言Miranda最初出現在1985年,對後來的Haskell有很強的影響。 由於Miranda是非公開的語言,所以Haskell社群於1987年開始達成共識,以形成函數語言程式設計研究的開放標準,對標準的實現自1990年以來一直在進行中。  最近,它在基於CSG幾何框架構建的OpenSCAD語言的引數CAD中得到了應用,雖然它無法區分左值和右值,導致了不熟悉函數語言程式設計的使用者混淆。 函數語言程式設計更加現代一些的例子包括Clean、Clojure、Erlang、Haskell、Miranda、Scheme等。

  函數語言程式設計常被認為嚴重耗費CPU和記憶體資源 。主因有二:
函數語言程式設計(英語:functional programming)或稱函式程式設計、泛函程式設計,是一種程式設計正規化,它將電腦運算視為函式運算,並且避免使用程式狀態以及易變物件。其中,λ演算(lambda calculus)為該語言最重要的基礎。而且,λ演算的函式可以接受函式當作輸入(引數)和輸出(傳出值)。