用 48 小时编写一个 Scheme 解释器/概述
外观
大多数网上关于 Haskell 的教程使用类似于语言参考手册的教学风格。它们会展示你语言的语法,一些语言结构,然后让你在交互式提示符下创建一些简单的函数。关于如何编写功能齐全、实用的程序的“难点”被留到最后,或者完全省略。
本教程采用了一种不同的方法。你会从使用和解析命令行开始,然后逐步编写一个功能齐全的 Scheme 解释器,实现 R5RS Scheme 的一个相当不错的子集。在此过程中,你将学习 Haskell 的 I/O、可变状态、动态类型、错误处理和解析功能。当你完成时,你应该对 Haskell 和 Scheme 都相当熟悉。
本教程的目标是两个主要受众
第二组可能会发现这很有挑战性,因为本教程为了专注于 Haskell,省略了 Scheme 和一般编程中的几个概念。一本好的教科书,比如 计算机程序的结构与解释 或 小 Schemer 应该非常有用。
使用像 C、Java 或 Python 这样的过程式或面向对象的语言的用户应该注意:你将不得不忘记你所知道的关于编程的大部分知识。Haskell 与这些语言完全不同,需要一种不同的思考编程的方式。最好以一张白纸开始学习本教程;尽量不要将 Haskell 与命令式语言进行比较,因为许多概念(包括类、函数和 return
)在 Haskell 中有完全不同的含义。
由于每节课都建立在之前课程中编写的代码之上,因此一般来说,最好按顺序学习。
本教程假定你将使用 GHC 作为你的 Haskell 编译器。代码可能适用于 Hugs 或其他编译器,但尚未正式测试过,可能需要下载额外的库。
本教程中使用的源代码文件的早期、非维基编辑版本可在 原始网站 上找到。