第一图书网

ML程序设计教程

保罗森 机械工业
出版时间:

2005-5  

出版社:

机械工业  

作者:

保罗森  

页数:

366  

译者:

柯韦  

Tag标签:

无  

内容概要

  本书详细讲解如何使用ML语言进行程序设计,并介绍函数式程序设计的基本原理。书中特别讲述了为ML的修订版所设计的新标准库的主要特性,并且给出大量例子,涵盖排序、矩阵运算、多项式运算等方面。大型的例子包括一个一般性的自顶向下语法分析器、一个l-演算归约程序和一个定理证明机。书中也讲述了关于数组、队列、优先队列等高效的函数式实现,并且有一章专门讨论函数式程序的形式论证。  本书可作为高等院校计算机专业相关课程的教材,也适合广大程序设计人员参考。

作者简介

作者:(英国)保罗森 译者:柯韦Lawrence C.Paulson,于1981年在美国斯坦福大学获得计算机科学博士学位,现为英国剑桥大学计算逻辑学教授。Paulson博士从事有关ML语言的教学和工作多年,拥有扎实的背景和丰富的经验,并曾经参与Standard ML的设计。Paulson博士开发和维护了lsabelle自动定理证明系统,他近期正在进行关于自动定理证明和密码协议验证方面的研究。

书籍目录

第1章 Standard ML 函数式程序设计 Standard ML概述 第2章 名字、函数和类型 本章提要 值的声明 数、字符串和真值 序偶、元组和记录 表达式的求值 书写递归函数 局部声明 模块系统初步 多态类型检测 要点小结 第3章 表 本章提要 表的简介 基本的表函数 表的应用 多态函数中的相等测试 排序:案例研究 多项式算术 要点小结 第4章 树和具体数据 本章提要 数据类型声明 异常 树 基于树的数据结构 重言式检测器 要点小结 第5章 函数和无数据 本章提要 作为值的函数 通用算子 序列,或无穷表 搜索策略和无穷表 要点小结 第6章 函数式程序的论证 本章提要 一些数学证明的原理 结构归纳法 一般性归纳原理 描述和验证 要点小结 第7章 抽象类型和函子 本章提要 队列的三种表示方法 签名和抽象 函子 利用模块建立大型系统 模块参考指南 要点小结 第8章 ML中的命令式程序设计 本章提要 引用类型 数据结构中的引 输入和输出 要点小结 第9章 书写l-演算的解释器 本章提要 函数式语法分析器 l-演算简介 在ML中表示l-项 作为程序设计语言的l-演算 要点小结 第10章 策略定理证明机 本章提要 一阶逻辑的相继式演算 在ML中处理项和公式 策略和证明状态 搜索证明 要点小结 项目建议 参考文献 Standard ML语法图 语法图中英词汇对照表 索引 预定义标识符

媒体关注与评论

书评本书是关于ML程序设计的经典教材,详细介绍如何使用 ML语言进行程序设计,并讲解函数式程序设计的基本原理。 书中含有大量例子,涵盖了排序、矩阵运算、多项式运算等方面。大型的例子包括一个一般性的自顶向下语法分析器、一个一演算归约程序和一个定理证明机。书中也讲述了关于数组、队列、优生队列等高效的函数式实现,并且有一章专门讨论函数式程序的形式论证。本书的代码均可以从作者网站(http://www.cl.cam.ac.uk/users/lcp/)得到。


编辑推荐

  本书是关于ML程序设计的经典教材,详细介绍如何使用 ML语言进行程序设计,并讲解函数式程序设计的基本原理。  书中含有大量例子,涵盖了排序、矩阵运算、多项式运算等方面。大型的例子包括一个一般性的自顶向下语法分析器、一个一演算归约程序和一个定理证明机。书中也讲述了关于数组、队列、优生队列等高效的函数式实现,并且有一章专门讨论函数式程序的形式论证。本书的代码均可以从作者网站(http://www.cl.cam.ac.uk/users/lcp/)得到。  本书详细讲解如何使用ML语言进行程序设计,并介绍函数式程序设计的基本原理。书中特别讲述了为ML的修订版所设计的新标准库的主要特性,并且给出大量例子,涵盖排序、矩阵运算、多项式运算等方面。大型的例子包括一个一般性的自顶向下语法分析器、一个l-演算归约程序和一个定理证明机。书中也讲述了关于数组、队列、优先队列等高效的函数式实现,并且有一章专门讨论函数式程序的形式论证。  本书可作为高等院校计算机专业相关课程的教材,也适合广大程序设计人员参考。

图书封面

图书标签Tags

广告

下载页面


ML程序设计教程 PDF格式下载



这是国内少有的专门讲FPL的书籍。尽管现在FP在工业、商业上用得不多,而ML用得更少,但是FPL确实给编程提供了一些非常好的理念和思路。这本书本身也写得不错,翻译也还行。


  这本书适合没有接触过functional programming的同学,也适合没有学过编程的同学。作者显然不满足于写一个语言教程,而是着重于灌输fp知识。
  
  所以在我看来这本书的废话稍微多了些。好几次我迅速的向后跳,但有意思的是每次我都被迫backtracing。因为他经常引用之前的例子和作业。后来我终于明白,要么就抛开这本书,要么老实的把每个例子每个作业都做了。现在我开始从头做作业了。做SML的作业全得靠纸笔。计算机只能帮你验证最后结果。很无奈但也挺有趣。
  
  要学SML不一定要读这本书。Robert Harper那本不错,而且是免费的。但这本书有自己独特的味道,仔细读一遍还是挺有意思的。


  如果以前没有接触过FP,比如彻底的C/汇编程序员,看这本书能慢慢建立一些不同的编程模式;
  如果已经对haskell或者其他的FPL有一些了解,看这本书可能会嫌啰嗦了,可以去看看<<Programming in Standard ML>>,内容不算很完整,不过要点都到了。


  建议先看SICP,再看这本书,首先LISP语法比较简单,其次这本书会经常拿ML跟LISP做对比。
  SICP在大的方向上比较清晰,章节安排上更注重思想的延伸;而这本书的确如书名一样,ML的教程,从简单的类型,表,树到匿名函数无穷表,抽象类型,章节安排完全是学习语言的顺序。这样造成不同深度的主题安排的比较散乱,像刚刚开始就讲解传值调用,传需调用,惰性求值,动态类型检测的相关内容。
  还有一些细节问题,这本书要比SICP更深入一些。比方说第7章详细讨论了队列的实现,最终给出了一个进队出队都是O(1)的实现方式,虽然很简单,但SICP也应该说明一下。以及第九章实现了一个解释器,可以跟SICP相互对照。


  ML意味着meta language, 本书是学习ML排名第一的课本.
  
  英文标题信息是这样的:
  PAULSON, LAWRENCE C. (Univ. of Cambridge, Cambridge, UK)
  ML for the working programmer (2nd ed.).
  Cambridge University Press, New York, NY, 1996,
  478 pp., $32.95, ISBN 0-521-56543-X.
  
  这里要强调1996的是,现在流行的ML的编译器,都是按ML '97标准的.但我没有看出这本书有什么不合适的地方. 这个问题我也想请专家指教. 中文版写的原版的出版日期是2001,这是我比较有疑问的.
  
  还有,这本书称为working,也是很有意思的. 因为,很多人都有疑问,函数式程序设计语言,有可以working的吗?作者显然是要写一本可以working的书. 我想,这是本书最大的特点. 这个特点带来了两个后果,一好一坏.
  
  我们先谈坏的一方面.命令式程序设计语言及其相关书籍看过不少,LISP也简单看过,但还是不得不说,ML是我看起来觉得最难的书.这应该是作者要写working的ML付出的代价. ML虽然也working,但有其working的领域,主要还是定理证明机,就像最初设计ML的动机所指示的. 因为,这本书有很多章节与此有关,而这并不是一个大多数读者熟悉的领域,所以,大多数读者应该与我一样,会觉得这本书可能是很难读的.
  
  好的方面,如果你读完了这本书,并且按要求完成了练习,不仅学会了ML语言,而且也学会了一个ML working的领域,定理证明机.
  
  我学这本书是读到第4章最后重言式检测器时,才找到感觉的.
  关于重言式检测的手工做法,我有过讨论:
  http://www.douban.com/group/topic/1192440/
  我没有动手去写一个计算机程序,是因为这觉得这有一点难. 而在这本书有一个例子,50行以下的代码. 也许一个更完善的一点的程序还需要能读入一个重言式,这大概要增加一两百行代码. 正是这不到50行的代码给了我定理证明的感觉,ML working的感觉.
  
  本书共9章,第6章是数学,第8和9章是例子,而要读完第4章才能找到点感觉,可以说明,这本书真的不很容易读.
  
  虽然也有人用ML写web应用,或者别的什么应用,但我们学ML真的是为了要写一个ERP或CRM或一个操作系统吗?如果不是想了解一些逻辑或证明的东西,我们会学ML吗? 所以,综合考虑, 这本书的确是学习ML的第一本教材.
  
  我还没学好ML,所以这个书评也写得特别胆小委琐,非常惭愧.


难道你专业不是CS的?...学语言而一个程序也不写是很离奇的(差不多和学英语只是看牛津语法然后不肯造个英文句子一样),是因为没有编程经验?SML的编译器并不难找到...


在学ML,感觉这本书翻译的比较烂。。。有机会一定借原版看看


对不起,我很邪恶,我以为是Make Love...


楼上,其实作者也说他因为书名受到不少困扰……


ML在程序验证方面的应用还是很有用的
据说,仅仅是据说,国外的一些公司已经开始用ML类的语言写验证程序了


相关图书