注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合ML程序設(shè)計(jì)教程(原書第2版)

ML程序設(shè)計(jì)教程(原書第2版)

ML程序設(shè)計(jì)教程(原書第2版)

定 價(jià):¥45.00

作 者: (英)Lawrence C.Paulson著;柯韋譯;柯韋譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 計(jì)算機(jī)科學(xué)叢書
標(biāo) 簽: 暫缺

ISBN: 9787111161219 出版時(shí)間: 2005-05-01 包裝: 平裝
開本: 26cm 頁(yè)數(shù): 369 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書是關(guān)于ML程序設(shè)計(jì)的經(jīng)典教材,詳細(xì)介紹如何使用ML語(yǔ)言進(jìn)行程序設(shè)計(jì),并講解函數(shù)式程序設(shè)計(jì)的基本原理。書中含有大量例子,涵蓋了排序、矩陣運(yùn)算、多項(xiàng)式運(yùn)算等方面。大型的例子包括一個(gè)一般性的自頂向下語(yǔ)法分析器、一個(gè)一演算歸約程序和一個(gè)定理證明機(jī)。書中也講述了關(guān)于數(shù)組、隊(duì)列、優(yōu)生隊(duì)列等高效的函數(shù)式實(shí)現(xiàn),并且有一章專門討論函數(shù)式程序的形式論證。本書詳細(xì)講解如何使用ML語(yǔ)言進(jìn)行程序設(shè)計(jì),并介紹函數(shù)式程序設(shè)計(jì)的基本原理。書中特別講述了為ML的修訂版所設(shè)計(jì)的新標(biāo)準(zhǔn)庫(kù)的主要特性,并且給出大量例子,涵蓋排序、矩陣運(yùn)算、多項(xiàng)式運(yùn)算等方面。大型的例子包括一個(gè)一般性的自頂向下語(yǔ)法分析器、一個(gè)l-演算歸約程序和一個(gè)定理證明機(jī)。書中也講述了關(guān)于數(shù)組、隊(duì)列、優(yōu)先隊(duì)列等高效的函數(shù)式實(shí)現(xiàn),并且有一章專門討論函數(shù)式程序的形式論證。本書可作為高等院校計(jì)算機(jī)專業(yè)相關(guān)課程的教材,也適合廣大程序設(shè)計(jì)人員參考。本書前言前言:本書源于對(duì)StandardML和函數(shù)式程序設(shè)計(jì)的講稿。它仍可以作為函數(shù)式程序設(shè)計(jì)的課本—一本面向?qū)嵱?,而不是?biāo)準(zhǔn)的、理想化的書—然而,它主要是一本有效使用ML的指南。它甚至討論了ML的命令式特性。有些內(nèi)容需要離散數(shù)學(xué)的知識(shí),例如初等邏輯和集合論。讀者會(huì)發(fā)現(xiàn)以往的程序設(shè)計(jì)經(jīng)驗(yàn)是有用的,但不是必需的。本書是一本程序設(shè)計(jì)手冊(cè),而不是參考手冊(cè)。它覆蓋了ML的主要方面,但并不盡述所有的細(xì)節(jié)。它在理論原理上花費(fèi)了一些篇幅,但主要還是關(guān)心高效的算法和實(shí)際的程序設(shè)計(jì)。本書的組織反映了我的教學(xué)經(jīng)驗(yàn)。高階函數(shù)出現(xiàn)得較晚,在第5章講述。慣常的做法是在一開始就介紹一些不甚自然的例子,這樣做只能使學(xué)生們感到困惑。高階函數(shù)的概念是不容易理解的,需要充分的預(yù)備知識(shí)。所以,本書從基本類型、表和樹開始講述。當(dāng)講到高階函數(shù)時(shí),很多相關(guān)的例子已經(jīng)是現(xiàn)成的了。練習(xí)的難度相差很大。它們不是用來評(píng)測(cè)學(xué)生的,而是為了提供實(shí)踐機(jī)會(huì),拓展內(nèi)容和激發(fā)討論的。本書一覽。大多數(shù)章節(jié)都專注于ML的各個(gè)方面。第1章介紹了函數(shù)式程序設(shè)計(jì)的背景思想,以及ML的歷史概況。第2~5章涵蓋了ML的函數(shù)式部分,包括對(duì)模塊的簡(jiǎn)介。講述了基本類型、表、樹和高階函數(shù)。對(duì)函數(shù)式程序設(shè)計(jì)的更廣泛的原理也有所討論。第6章給出了論證函數(shù)式程序的形式方法。看上去似乎偏離了程序設(shè)計(jì)的主題,然而錯(cuò)誤的程序是沒用的。易于形式論證是函數(shù)式程序設(shè)計(jì)的一大好處。第7章詳細(xì)講述了模塊,包括函子(帶參數(shù)的模塊)。第8章講述了ML的命令式特性:引用、數(shù)組和輸入輸出。本書的其余部分由較大的例子構(gòu)成。第9章給出了函數(shù)式的語(yǔ)法分析器和一個(gè)l-演算解釋器。第10章給出了一個(gè)定理證明機(jī),這是ML的傳統(tǒng)應(yīng)用。書中的例子非常豐富。其中一些只是為了說明ML的某個(gè)方面,但大多數(shù)本身就有一定用途—排序、函數(shù)式數(shù)組、優(yōu)先隊(duì)列、搜索算法、美化打印。請(qǐng)注意:雖然我測(cè)試過這些程序,但是它們?nèi)圆幻夂绣e(cuò)誤。信息和警告塊。技術(shù)性的旁白、庫(kù)函數(shù)的敘述以及為進(jìn)一步學(xué)習(xí)而給出的筆記都會(huì)不時(shí)地出現(xiàn)。它們被加以如下圖標(biāo)以便有些讀者可以跳過:亨利王的要求。他們拿不出什么理由可以反對(duì)陛下向法蘭西提出王位的要求,只除了這一點(diǎn),那個(gè)在法拉蒙時(shí)代制定的一條法律,InterramSalicammulieresnesuccedant,‘在撒利族的土地上婦女沒有繼承權(quán)’:而法國(guó)人就把這‘撒利族的土地’曲解為法蘭西的土地,并且把法拉蒙認(rèn)做是這條法律的創(chuàng)制人和婦權(quán)的剝奪者。可是他們的歷史學(xué)家卻忠實(shí)地宣稱撒利區(qū)是在日耳曼的土地上……ML并不完美。某些缺陷會(huì)使簡(jiǎn)單的編碼錯(cuò)誤浪費(fèi)掉程序員幾個(gè)小時(shí)的時(shí)間。而且,新的標(biāo)準(zhǔn)庫(kù)使得新舊編譯器不兼容。因此,本書中有一些這樣的警告圖標(biāo):小心葛羅斯特公爵。呵,勃金漢!小心那個(gè)狗東西:要知道,搖尾的狗會(huì)咬人;咬了人,它的牙毒還會(huì)叫你痛極而死;莫同他來往,千萬(wàn)留意;罪惡、死亡和地獄都看中了他,地下的大小役吏都在供他使喚。我要趕緊補(bǔ)充一點(diǎn),在ML里不會(huì)產(chǎn)生這么可怕的后果。程序里的錯(cuò)誤是不能沖垮ML系統(tǒng)本身的。另一方面,程序員必須牢記,即使是正確的程序也可能給外部世界帶來傷害。如何得到StandardML編譯器。由于StandardML剛出現(xiàn)不久,很多學(xué)院沒有編譯器。下面列出了現(xiàn)有的一些StandardML編譯器,并附有聯(lián)系地址。書中的例子是在MoscowML、Poly/ML和StandardMLofNewJersey下開發(fā)的。我尚未嘗試其他的編譯器。要得到MLWorks,請(qǐng)聯(lián)系HarlequinLimited,BarringtonHall,Barrington,Cambridge,CB25RG,England。他們的電子郵件地址是web@harlequin.com。要得到MoscowML,請(qǐng)聯(lián)系PeterSestoft,MathematicalSection,RoyalVeterinaryandAgriculturalUniversity,Thorvaldsensvej40,DK-1871FrederiksbergC,Denmark。或從互聯(lián)網(wǎng)上得到該系統(tǒng):http://www.dina.kvl.dk/~sestoft/mosml.html要得到Poly/ML,請(qǐng)聯(lián)系A(chǔ)bstractHardwareLtd,1BrunelSciencePark,KingstonLane,Uxbridge,Middlesex,UB83PQ,England。他們的電子郵件地址是lambda@ahl.co.uk?;驈幕ヂ?lián)網(wǎng)上得到該系統(tǒng):http://www.polyml.org/要得到PoplogStandardML,請(qǐng)聯(lián)系IntegralSolutionsLtd,BerkHouse,BasingView,Basingstoke,HampshireRG214RG,England。他們的電子郵件地址是isl@isl.co.uk。要得到StandardMLofNewJersey,請(qǐng)聯(lián)系A(chǔ)ndrewAppel,ComputerScienceDepartment,PrincetonUniversity,PrincetonNJ08544-2087,USA。更好的是可以從互聯(lián)網(wǎng)上得到文件:http://www.cs.princeton.edu/~appel/smlnj/http://www.smlnj.org/書中的程序和一些練習(xí)答案可以通過電子郵件得到,我的電子郵件地址是lcp@cl.cam.ac.uk。如果可能,請(qǐng)使用互聯(lián)網(wǎng),我的主頁(yè)在http://www.cl.cam.ac.uk/users/lcp/致謝。編輯,DavidTranah,在寫作的各個(gè)階段提供了幫助,并建議了書名。GrahamBirtwistle、GlennBruns和DavidWolfram仔細(xì)閱讀了文本。DaveBerry、SimonFinn、MikeFourman、KentKarlsson、RobinMilner、RichardO誎eefe、KeithvanRijsbergen、NickRothwell、MadsTofte、DavidN.Turner和Harlequin的工作人員也對(duì)文本提出了意見。AndrewAppel、GavinBierman、PhilBrabbin、RichardBrooksby、GuyCousineau、LalGeorge、MikeGordon、MartinHansen、DarrellKindred、SilvioMeira、AndrewMorris、KhalidMughal、TobiasNipkow、KurtOlender、AllenStoughton、ReubenThomas、RayToal和HelenWilson發(fā)現(xiàn)了前幾次印刷中的錯(cuò)誤。PieteBrooks、JohnCarroll和GrahamTitmus在計(jì)算機(jī)使用方面給予了幫助。我還要感謝DaveMatthews開發(fā)了Poly/ML,這是多年以來唯一高效的StandardML的編譯器。在眾多的參考文獻(xiàn)中,Abelson和Sussman(1985)、Bird和Wadler(1988)以及Burge(1975)的著作特別有幫助。Reade(1989)的書中包含了在ML中實(shí)現(xiàn)惰性表的有用思想。TheScienceandEngineeringResearchCouncil在過去20多年來給予了LCF和ML大量的研究資助。本書的大部分寫作工作都是我從劍橋大學(xué)休假的過程中完成的。我感謝計(jì)算機(jī)實(shí)驗(yàn)室(ComputerLaboratory)和卡萊爾學(xué)院(ClareCollege)給予休假,以及愛丁堡大學(xué)對(duì)我六個(gè)月的招待。最后,我要感謝Sue,感謝她所給我的一切幫助,以及天天耐心傾聽我關(guān)于每一章進(jìn)展的報(bào)道。

作者簡(jiǎn)介

  Lawrence C.Paulson,于1981年在美國(guó)斯坦福大學(xué)獲得計(jì)算機(jī)科學(xué)博士學(xué)位,現(xiàn)為英國(guó)劍橋大學(xué)計(jì)算邏輯學(xué)教授。Paulson博士從事有關(guān)ML語(yǔ)言的教學(xué)和工作多年,擁有扎實(shí)的背景和豐富的經(jīng)驗(yàn),并曾經(jīng)參與Standard ML的設(shè)計(jì)。Paulson博士開發(fā)和維護(hù)了lsabelle自動(dòng)定理證明系統(tǒng),他近期正在進(jìn)行關(guān)于自動(dòng)定理證明和密碼協(xié)議驗(yàn)證方面的研究。

圖書目錄

第1章Standard ML
函數(shù)式程序設(shè)計(jì) 
1.1表達(dá)式和命令
1.2過程式程序設(shè)計(jì)語(yǔ)言中的表達(dá)式·
1.3存儲(chǔ)管理 
1.4函數(shù)式語(yǔ)言的元素 
1.5函數(shù)式程序設(shè)計(jì)的效率 Standard ML概述 
1.6 Standard ML的演化 
1.7 ML的自動(dòng)定理證明傳統(tǒng)
1.8新標(biāo)準(zhǔn)庫(kù) 
1.9 ML和工作中的程序員 
第2章名字、函數(shù)和類型 
本章提要 
值的聲明 
2.1命名常量 
2.2聲明函數(shù) 
2.3 Standard ML中的標(biāo)識(shí)符
數(shù)、字符串和真值 
2.4算術(shù)運(yùn)算 
2.5字符串和字符 
2.6真值和條件表達(dá)式
序偶、元組和記錄 
2.7向量:序偶的例子 
2.8多參數(shù)和多結(jié)果的函數(shù)
2.9記錄 
2.10中綴操作符表達(dá)式的求值 
2.11 ML中的求值:傳值調(diào)用 
2.12傳值調(diào)用下的遞歸函數(shù) 
2.13傳需調(diào)用或惰性求值
書寫遞歸函數(shù) 
2.14整數(shù)次冪 
2.15斐波那契數(shù)列 
2.16整數(shù)平方根 
局部聲明 
2.17例子:實(shí)數(shù)平方根 
2.18使用local來隱藏聲明 
2.19聯(lián)立聲明 
模塊系統(tǒng)初步 
2.20復(fù)數(shù) 
2.21結(jié)構(gòu) 
2.22簽名 
多態(tài)類型檢測(cè) 
2.23類型推導(dǎo) 
2.24多態(tài)函數(shù)聲明 
要點(diǎn)小結(jié) 
第3章表 
本章提要 
表的簡(jiǎn)介 
3.1表的構(gòu)造 
3.2表的操作 
基本的表函數(shù) 
3.3表的測(cè)試和分解 
3.4與數(shù)量有關(guān)的表處理 
3.5追加和翻轉(zhuǎn) 
3.6表的表,序偶的表 
表的應(yīng)用 
3.7找零錢 
3.8 進(jìn)制算術(shù) 
3.9矩陣的轉(zhuǎn)置 
3.10矩陣乘法…
3.11高斯消元法
3.12分解一個(gè)數(shù)為兩個(gè)平方數(shù)之和一
3.13求后繼排列的問題 
多態(tài)函數(shù)中的相等測(cè)試 
3.14相等類型 
3.15多態(tài)集合操作 
3.16關(guān)聯(lián)表 
3.17圖的算法 
排序:案例研究 
3.18隨機(jī)數(shù) 
3.19插入排序  
3.20快速排序 
3.21合并排序 
多項(xiàng)式算術(shù) 
3.22表示抽象數(shù)據(jù) 
3.23多項(xiàng)式的表示 
3.24多項(xiàng)式加法和乘法 
3.25最大公因式 
要點(diǎn)小結(jié) 
第4章樹和具體數(shù)據(jù) 
本章提要 
數(shù)據(jù)類型聲明 
4.1國(guó)王和他的臣民 
4.2枚舉類型 
4.3多態(tài)數(shù)據(jù)類型 
4.4通過val、as、case進(jìn)行模式匹配
異常 
4.5異常初步 
4.6聲明異?!?br />4.7拋出異?!?br />4.8處理異常 
4.9對(duì)異常的異議 
樹 
4.10二叉樹類型 
4.11枚舉樹的內(nèi)容 
4.12由表建立樹 
4.13為二叉樹設(shè)計(jì)的結(jié)構(gòu)
基于樹的數(shù)據(jù)結(jié)構(gòu) 
4.14字典 
4.15函數(shù)式數(shù)組和彈性數(shù)組 
4.16優(yōu)先隊(duì)列  
重言式檢測(cè)器 
4.17命題邏輯 
4.18否定范式 
4.19合取范式 
要點(diǎn)小結(jié) 
第5章函數(shù)和無窮數(shù)據(jù) 
本章提要 
作為值的函數(shù) 
5.1使用fn記法的匿名函數(shù) 
5.2柯里函數(shù) 
5.3數(shù)據(jù)結(jié)構(gòu)中的函數(shù) 
5.4作為參數(shù)和結(jié)果的函數(shù) 
通用算子 
5.5切片 
5.6組合子
5.7表算子map(映射)和fter(過濾)
5.8表算子takewhile和dropwhile 
5.9表算子朗船(存在)和趔(全稱) 
5.10表算子foldl(左折疊)和foldr
(右折疊) 
5.11更多遞歸算子的例子 
序列,或無窮表 
5.12序列類型 
5.13基本的序列處理 
5.14基本的序列應(yīng)用 
5.15數(shù)值計(jì)算 
5.16交替和序列的序列 
搜索策略和無窮表 
5.17用ML實(shí)現(xiàn)的搜索策略 
5.18生成回文 
5.19瓜皇后問題 
5.20迭代深化 
要點(diǎn)小結(jié) 
第6章函數(shù)式程序的論證 
本章提要 
一些數(shù)學(xué)證明的原理 
6.1 ML程序和數(shù)學(xué) 
6.2數(shù)學(xué)歸納法和完全歸納法 
6.3程序驗(yàn)證的簡(jiǎn)單例子 
結(jié)構(gòu)歸納法 
6.4關(guān)于表的結(jié)構(gòu)歸納法 
6.5關(guān)于樹的結(jié)構(gòu)歸納法 
6.6函數(shù)值和算子 
一般性歸納原理 
6.7計(jì)算范式 
6.8良基歸納和遞歸 
6.9遞歸程序模式 
描述和驗(yàn)證 
6.10有序謂詞 
6.11通過多重集合表示重新排列
6.12驗(yàn)證的意義 
要點(diǎn)小結(jié)  
第7章抽象類型和函子 
本章提要 
隊(duì)列的三種表示方法 
7.1將隊(duì)列表示為表 
7.2將隊(duì)列表示為新的數(shù)據(jù)類型 
7.3將隊(duì)列表示為表的序偶 
簽名和抽象 
7.4隊(duì)列應(yīng)具有的簽名 
7.5簽名約束 
7.6抽象類型(abstype)聲明 
7.7從結(jié)構(gòu)導(dǎo)出的簽名 
函子 
7.8測(cè)試多個(gè)隊(duì)列結(jié)構(gòu) 
7.9泛型矩陣運(yùn)算 
7.10泛型的字典和優(yōu)先隊(duì)列 
利用模塊建立大型系統(tǒng) 
7.1l多參數(shù)函子 
7.12共享約束 
7.13全函子式程序設(shè)計(jì) 
7.14 open聲明 
7.15簽名和子結(jié)構(gòu) 
模塊參考指南 
7.16簽名和結(jié)構(gòu)的語(yǔ)法 
7.17模塊聲明的語(yǔ)法 
要點(diǎn)小結(jié) 
第8章ML中的命令式程序設(shè)計(jì) 
本章提要 
引用類型  
8.1引用及其操作 
8.2控制結(jié)構(gòu) 
8.3多態(tài)引用 
數(shù)據(jù)結(jié)構(gòu)中的引用 
8.4序列,或惰性表 
8.5環(huán)形緩沖區(qū) 
8.6可變更的數(shù)組和函數(shù)式的數(shù)組·
輸入和輸出 
8.7字符串處理 
8.8文本輸入輸出 
8.9文本處理的例子 
8.10美化打印程序 
要點(diǎn)小結(jié) 
第9章書寫λ-演算的解釋器 
本章提要 
函數(shù)式語(yǔ)法分析器 
9.1掃描或詞法分析 
9.2自頂向下的語(yǔ)法分析套件 
9.3語(yǔ)法分析器的ML代碼 
9.4例子:分析和顯示類型 
λ-演算簡(jiǎn)介 
9.5 k-項(xiàng)和λ-歸約 
9.6在替換中防止變量的捕獲 
在ML中表示入一項(xiàng) 
9.7基本操作 
9.8 k-項(xiàng)的語(yǔ)法分析 
9.9顯示λ-項(xiàng) 
作為程序設(shè)計(jì)語(yǔ)言的λ-演算 
9.10 k-演算中的數(shù)據(jù)結(jié)構(gòu) 
9.11 k-演算中的遞歸定義 
9.12 k-項(xiàng)的求值 
9.13演示求值程序 
要點(diǎn)小結(jié) 
第10章策略定理證明機(jī) 
本章提要 
一階邏輯的相繼式演算 
10.1命題邏輯的相繼式演算 
10.2證明相繼式演算中的定理
10.3量詞的相繼式規(guī)則 
10.4帶量詞的定理證明 
在ML中處理項(xiàng)和公式 
10.5表示項(xiàng)和公式 
10.6分析和顯示公式 
10.7合 
策略和證明狀態(tài) 
10.8證明狀態(tài) 
10.9 ML簽名 
10.10用于基本相繼式的策略 
10.11命題策略 
10.12量詞策略 
搜索證明 
10.13變換證明狀態(tài)的命令 
10.14兩個(gè)使用策略的證明實(shí)例 
10.15策略算子 
10.16一階邏輯的自動(dòng)策略 
要點(diǎn)小結(jié) 
項(xiàng)目建議 
參考文獻(xiàn) 
Standard ML語(yǔ)法圖 
語(yǔ)法圖中英詞匯對(duì)照表 
索引  
預(yù)定義標(biāo)識(shí)符

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)