《Haskell函数式编程基础(原书第3版)》:
第1章 函数式程序设计简介
本章首先概括介绍什么是函数式程序设计或者函数程序设计,以及函数式程序设计与其他方式程序设计的不同,同时介绍函数式程序设计语言Haskell。本章的目的有三个:
介绍函数式程序设计的主要思想,并解释函数和类型的概念。然后介绍如何求表达式的值以及如何书写求值的过程。一旦读者理解如何使用函数后,再介绍如何自定义一个函数。为了理解函数的功能,本章将介绍如何测试函数,以及如何使用数学证明来说明一个函数具有某种特定的性质。
以图形为例来解释以上的概念。这样做不仅是因为它可以展示Haskell在实践中的应用特点,而且也因为它是领域专用语言(DSL)的一个例子,而Haskell便是特别适用于领域专用语言的程序设计语言。
最后,对照其他程序设计方式,如面向对象的程序设计,本章将介绍函数式程序设计中更具表现力且与众不同的思想。读者由此可以看出,为什么在财经、Web2.0和多核高效程序设计等领域的许多程序开发人员选择了函数式程序语言。我们还将解释,为什么无论你在什么领域工作,函数式程序语言的思想都能让你成为一个更好的程序员。
本章将指明有关内容在后续哪些章节中有详细解释和例子说明。尽管本书是为Haskell函数式程序设计编写的教材,但是如第21章所讨论的一样,本书讨论的许多内容具有普遍意义,同样适用于其他函数程序语言。
1.1计算机与建模
过去的60年来,计算机已经由庞大、昂贵、稀少、低速及不可靠的机器过渡为小型、廉价、普及、快速和相对可靠的机器。第一代计算机是“孤立”(stand-alone)的机器,而现代计算机都连接到全球互联网络上。现代计算机不仅已经嵌入汽车和洗衣机等家用电器里,而且还成为诸如智能手机和其他个人设备的核心。如果你对计算机的重要性有所怀疑,那么设想一下如果所有的计算机都停止工作将产生的影响:那便是一夜之间整个世界将陷入一片混乱。
尽管如此,现在这个时期计算的基本目的即处理符号信息并没有多大的变化。这些信息可以是简单的情况,如超市的购物清单,或者更复杂的情况,如关于欧洲的气象系统。给定这些信息,信息处理的任务可能是计算超市购物的总支出,或者是对英格兰南部做出24小时的气象预报。
这些任务如何得以完成呢?我们需要描述信息是如何处理的。对这个过程的描述称为一个程序(program),它是用一种程序设计语言(programminglanguage)编写的。这种程序设计语言是一种计算机指令的人工形式化语言。换言之,这种语言用于编写控制计算机硬件(hardware)运行的软件(software)。
一方面,虽然计算机的体积已经由大如房屋变为小如手掌,但是其由集成电路构成的处理单元和内存组成结构以及基本工作原理基本没有变化。另一方面,计算机的编程方式却已经发生了巨大的变化。最初的程序是用直接控制计算机硬件的指令编写的,而现代程序设计语言致力于程序员思考和解决问题的“高”层次,而不是机器解决问题的“低”层次(机器层)。
程序设计语言由一个实现(implementation)来完成它在计算机上的工作,这个实现本身也是一个程序,其任务是运行由高阶语言编写的程序。本书的目的是讲授如何编写函数式程序,而非实现的细节,有关实现参见(PeytonJones1987;PeytonJones和Lester1992)。
……
展开