




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、函數(shù)式程序設(shè)計(jì)語言函數(shù)式程序設(shè)計(jì)語言1、概論 面向過程程序設(shè)計(jì) 面向?qū)ο蟪绦蛟O(shè)計(jì) 函數(shù)式程序設(shè)計(jì)2、什么是函數(shù)式程序設(shè)計(jì)In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. From wikipedia函數(shù)式程序設(shè)計(jì)是一種程序設(shè)計(jì)模型,它將計(jì)算機(jī)運(yùn)算看作是數(shù)學(xué)中函數(shù)的計(jì)算,并且避免了狀態(tài)狀態(tài)以及變量變量的概
2、念。3、變量的不變性如果有多個(gè)進(jìn)程在同時(shí)跑這一個(gè)程序,那么程序應(yīng)該先desposit 還是先 despositTwice?無論多少個(gè)進(jìn)程在跑,因?yàn)槲覀儽旧頉]有賦值操作,所以都不會影響到我們的最終結(jié)果。采用這樣的方式?jīng)]有辦法保持狀態(tài),這也就是我們在之前概念中看到的無狀態(tài)性。程序設(shè)計(jì)能從馮諾依曼式的設(shè)計(jì)風(fēng)格中解放出來嗎?函數(shù)式程序設(shè)計(jì)及其程序代數(shù)John Backus于1977年接受ACM圖靈獎時(shí)的講演稿4、馮諾依曼和函數(shù)式程序的比較 求內(nèi)積的馮諾依曼程序該程序值得注意的幾個(gè)性質(zhì):1) 程序中的語句以某種復(fù)雜的規(guī)則作用在不可見的“狀態(tài)”上。2) 程序不是層次性的,除了賦值語句的右部外。3) 程序是
3、動態(tài)和重復(fù)的。4) 程序是通過對變量i的修改和賦值語句的重復(fù)而逐字計(jì)算的。5) 部分?jǐn)?shù)據(jù)(如n)是局部于程序的,因而缺少通用性。6) 程序命名了其中的量, 因而只對名為a 和b 的向量有效。7) 程序的“內(nèi)務(wù)” 操作是用分散在幾處的符號來表示的。 求內(nèi)積的函數(shù)式程序Def Innerproduct (Insert +)(Apply To All )Transpose或簡寫為Def IP ( / + )( )Trans將已知函數(shù)組合成新函數(shù)的函數(shù)型。fg 是先作用g再作用f所得的函數(shù)。f是把f作用到每個(gè)分量上的函數(shù)。f : x 表示把f作用到對象x上所得的結(jié)果Def IP ( / + )( )T
4、ransIP: , =(IP的定義) = ( / + ) ( )Trans: , ( 的作用) = ( / + ) :( ( ) : ( Trans: , ) )(Trans的作用) = ( / + ) :( ( ) : , , )( 的作用) = ( / + ) : : , : , : ( 的作用) = ( / + ): ( / 的作用) = +: 6, +: ( + 的作用) = +: ( + 的作用) = 28Def IP ( / + )( )Trans和馮諾依曼程序的比較:1) 該程序只作用在單個(gè)變元上, 沒有隱含的狀態(tài)及狀態(tài)轉(zhuǎn)換規(guī)則。2) 該程序具有層次性, 它由三個(gè)較簡單的函數(shù)(
5、+ , , Trans ) 和三個(gè)函數(shù)型fg,f和/f構(gòu)成。3) 該程序是靜態(tài)和非重復(fù)的, 無需考慮其執(zhí)行情況。4) 該程序作用在整個(gè)概念單位上, 而不是作用在單個(gè)的字上, 它可分為三步, 但沒有一步是重復(fù)的。5) 該程序本身不涉及任何數(shù)據(jù), 它是完全通用的, 對任何相容向量對都有效。6) 該程序?qū)λ饔玫淖冊幻? 因而無需過程說明或復(fù)雜的代入規(guī)則就能作用到任一向量對上去。7) 該程序中所用到的“內(nèi)務(wù)” 函數(shù)及函數(shù)型在其它許多程序中也是通用的。5、FP系統(tǒng) “程序”只是沒有變量的函數(shù)。 FP系統(tǒng)是建立在使用一固定的函數(shù)型集合的基礎(chǔ)上的。這些函數(shù)型再加上一些簡單的定義,是由已知函數(shù)構(gòu)造新函數(shù)
6、的唯一手段。它們不涉及到變量和代入規(guī)則的使用,而是與程序相伴的代數(shù)的運(yùn)算。 FP系統(tǒng)的所有函數(shù)都是同一類型的, 即從對象到對象的單一映射。1 ) 對象集合O;2 ) 把對象映射成對象的函數(shù)f的集合F ;3 ) 一個(gè)運(yùn)算, 即作用;4 ) 函數(shù)型的集合F , 函數(shù)型的作用是將F中的已知函數(shù)或?qū)ο蠼M合成新的函數(shù);5 ) 定義集臺D , 它用來足義F 中的某些函數(shù), 并且對每個(gè)函數(shù)指定一個(gè)名;底元6、FP系統(tǒng)的組成7、函數(shù)式程序的性質(zhì) 函數(shù)式程序?qū)ζ渥饔脤ο蠡蛑虚g結(jié)果不命名, 它不含變量, 沒有循環(huán), 沒有控制語句, 也沒有過程說明; 它不需要初啟指令,不是逐字式性質(zhì)的程序; 它是從簡單到復(fù)雜逐層構(gòu)
7、造的; 程序中所用的是普遍適用的內(nèi)務(wù)操作型和運(yùn)算符; 該程序是完全通用的, 當(dāng)作用對象不滿足要求時(shí), 一律得到結(jié)果; 它沒有限制不必要的求值次序 ; 利用代數(shù)法則能把該程序變?yōu)楦坝行А薄⒏鬃x的程序(即遞歸定義的程序)。8、作為程序設(shè)計(jì)語言的FP系統(tǒng) 函數(shù)f是一個(gè)程序, 對象x是存貯單元的內(nèi)容, f : x 是對存貯單元的內(nèi)容x作用f后所得到的存貯單元的內(nèi)容, 定義集合是程序庫, 系統(tǒng)提供的原始函數(shù)和函數(shù)型是某種特定的程序設(shè)計(jì)語言中的基本語句。 一旦選定了原始函數(shù)和函數(shù)型, FP系統(tǒng)的基本結(jié)構(gòu)部分便為許多類型的語言提供了各種程序設(shè)計(jì)風(fēng)格和設(shè)計(jì)能力。9、 函數(shù)式程序設(shè)計(jì)的數(shù)學(xué)本質(zhì) 一切問題,歸
8、根結(jié)底到最后都是數(shù)學(xué)問題。 對于數(shù)學(xué)函數(shù)f(x) = y,無論在什么場景下,都會得到同樣的結(jié)果,這個(gè)我們稱之為函數(shù)的確定性。 對于賦值模型,同一個(gè)函數(shù),同一個(gè)參數(shù),會在不同的場景下計(jì)算出不同的結(jié)果。這正是賦值模型與數(shù)學(xué)模型的不兼容之處。 而函數(shù)式程序設(shè)計(jì)取消了賦值模型,則使數(shù)學(xué)模型與編程模型完美地達(dá)成了統(tǒng)一。10、狀態(tài)到底怎么辦? 函數(shù)式編程是無狀態(tài)的,可是在現(xiàn)實(shí)情況中,狀態(tài)不可能一直保持不變,而狀態(tài)必然需要改變、傳遞。所以在函數(shù)式程序設(shè)計(jì)中將其保存在函數(shù)的參數(shù)中,作為函數(shù)的附屬品來傳遞。例:求例:求x的的n次方次方命令式程序設(shè)計(jì)命令式程序設(shè)計(jì)函數(shù)式程序設(shè)計(jì)函數(shù)式程序設(shè)計(jì)遞歸!11、相關(guān)的重要
9、概念 StackOverflow與尾遞歸 惰性求值與并行 Lambda演算 高階函數(shù)與函數(shù)抽象性 Erlang、Haskell、Miranda、Lisp.12、函數(shù)式程序設(shè)計(jì)語言介紹 Lisp語言:最早的函數(shù)式語言McCarthy在1960年創(chuàng)立。其初始動機(jī)是為考慮匿名函數(shù)的表示, 開發(fā)一個(gè)用于Al的代數(shù)表處理語言。應(yīng)該說在L isp開發(fā)早期演算的影響甚微, 但由于Lisp本身有很好的數(shù)學(xué)優(yōu)美性, 它對函數(shù)語言的發(fā)展產(chǎn)生了重大影響。Lisp至今仍是最流行的函數(shù)語言, 主要用于智能系統(tǒng)的編程出于效率的考慮, 它現(xiàn)已變成一種不純的、有副作用的函數(shù)語言。12、函數(shù)式程序設(shè)計(jì)語言介紹 FP語言:開創(chuàng)純
10、函數(shù)語言研究之先河FP 語言用固定的泛函數(shù)結(jié)構(gòu)和一些簡單定義作為從現(xiàn)存函數(shù)構(gòu)造新函數(shù)的唯一工具, 沒有使用變量和替換規(guī)則, 程序的構(gòu)造可視為程序代數(shù)操作。FP語言擺脫了以演算為基礎(chǔ)的函數(shù)語言中存在的實(shí)現(xiàn)和表達(dá)能力方面的問題。在FP中, 函數(shù)是無類型的, 這極大簡化了語法和語義, 然而, 由于任意函數(shù)可互相組合, 所以某些總產(chǎn)生的函數(shù)也可被構(gòu)造, 這樣當(dāng)構(gòu)造函數(shù)時(shí), 程序員必須仔細(xì)檢查所用的構(gòu)造函數(shù), 加重了編程負(fù)擔(dān)。FP沒有高階能力, 從而也給表達(dá)能力帶來了一些影響。12、函數(shù)式程序設(shè)計(jì)語言介紹 Miranda語言:商用純函數(shù)語言Miranda程序是定義、函數(shù)和其他數(shù)據(jù)目標(biāo)的集合, 寫成遞歸方程的形式。它無需類型說明, 類型推理由編譯器完成。其用戶定義類型的引入主要通過說明一個(gè)自由代數(shù)實(shí)現(xiàn), 這個(gè)自由代數(shù)還可附有一組規(guī)則。很多在其他語言中必須表示成抽象類型的數(shù)據(jù)類型可在Miranda中用代數(shù)數(shù)據(jù)類型和相關(guān)規(guī)則來表示。盡管如此,它還是提供了抽象類型機(jī)制, 通過顯式的Abstype說明來實(shí)現(xiàn)。12、函數(shù)式程序設(shè)計(jì)語言介紹 Haskell語言:通用的純函數(shù)語言Yale大學(xué)的Hudak等從統(tǒng)一函數(shù)語言的目的出發(fā), 設(shè)計(jì)了Haskell語言, 它幾乎包括了現(xiàn)今函數(shù)語言的所有優(yōu)點(diǎn), 當(dāng)然, 它能否取代現(xiàn)行語言還有特時(shí)間來證明。 其他函數(shù)式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通運(yùn)輸與物流行業(yè)物流行業(yè)競爭力報(bào)告:物流行業(yè)競爭力提升策略與市場表現(xiàn)
- RNAP-σ-interaction-inhibitor-1-生命科學(xué)試劑-MCE
- 退役人管理局禮儀
- 保養(yǎng)品介紹課件模板
- 護(hù)理敏感質(zhì)量指標(biāo)監(jiān)測
- 初中信息技術(shù)課件大師
- 初中體育健康課程課件
- 便秘課件培訓(xùn)
- 家庭教育特點(diǎn)講解
- 2025年按揭貸款二手房交易合同樣本
- 城市軌道交通機(jī)電技術(shù)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育??疲?025修訂
- 《智能機(jī)器人技術(shù)與應(yīng)用》高職人工智能工業(yè)機(jī)器人專業(yè)全套教學(xué)課件
- 2025年江西省中考數(shù)學(xué)試卷真題(含標(biāo)準(zhǔn)答案)
- 2025年中國郵政集團(tuán)有限公司上海市分公司招聘筆試備考試題含答案詳解
- 2025年物聯(lián)網(wǎng)技術(shù)在智能養(yǎng)老中的老人健康監(jiān)測與生活服務(wù)保障報(bào)告
- 2025年7月浙江省普通高中學(xué)業(yè)水平考試化學(xué)試題(原卷版)
- DZ/T 0217-2005石油天然氣儲量計(jì)算規(guī)范
- 陜西省西工大附中第二次2025屆數(shù)學(xué)八下期末考試試題含解析
- 2025年中央八項(xiàng)規(guī)定精神學(xué)習(xí)教育應(yīng)知應(yīng)會考試題庫(含答案)
- 教師暑期安全協(xié)議書
- 項(xiàng)目經(jīng)理試用期的工作總結(jié)
評論
0/150
提交評論