Haskell函数式编程入门
张淞
写给我亲爱的父母与曾经的自己。 前言
高级计算机语言的诞生大约是在20世纪50年代。虽然那时电子计算机的发展才刚刚起步,但计算机语言的设计却逐渐分成了两个阵营。
第一个阵营的设计直接基于计算机硬件的基本结构。这些语言的理念主要是让它们对计算机的内存、磁盘以及其他硬件的存储状态进行直接的操作,如 Pascal、C 语言等。它们常常被称为命令式(imperative)、顺序式(sequential)或者过程式(procedural)编程语言。在语句执行过程中,各个语句的先后顺序十分重要。
而另外一个阵营是希望计算机语言的设计直接从数学函数的角度出发,将计算过程抽象成函数运算,这种编程方式是对程序的一种更高层次的抽象。虽然起初在运行效率上并不是很高,但表达起来十分简洁,并且设计者也在努力,逐步使这类程序编译后更适应计算机的底层硬件以获得更高的运行效率,这一类语言就是函数式编程语言。
在顺序式计算机语言的发展进程中,它们的流行程度大致可以分成两种极端情况:一部分是像 C、C++、Java、C#这样的语言,一举成名,成为现在计算机编程语言的主流;另外是一些“冷门”的语言,可能是一些失败的实验探索性语言,也可能是一些未被很好地商业化的语言。但是,函数式编程语言在顺序式编程语言取得发展并广泛应用或者消失的几十年当中,被应用的程度却一直处于不温不火的状态,虽然没有取得广泛的商业化应用,但是有关的研究和发展从未间断。而软件行业发展到今天,由于顺序式编程语言在解决一些特定问题时会引起程序复杂度倍增和可靠程度降低等问题,人们的视角渐渐投向了函数式编程语言,这使得函数式编程语言在逐步兴起。
函数式编程语言的诞生可以追溯到20世纪50年代的Lisp。那时的计算机处理器不是很强大,函数式编程语言程序的效率要差一些,所以在当时一直没有变成主流。而如今的处理器速度的提升以及编译器的优化,使得函数式编…