用 48 小時編寫一個 Scheme 直譯器/概述
外觀
大多數網上關於 Haskell 的教程使用類似於語言參考手冊的教學風格。它們會展示你語言的語法,一些語言結構,然後讓你在互動式提示符下建立一些簡單的函式。關於如何編寫功能齊全、實用的程式的“難點”被留到最後,或者完全省略。
本教程採用了一種不同的方法。你會從使用和解析命令列開始,然後逐步編寫一個功能齊全的 Scheme 直譯器,實現 R5RS Scheme 的一個相當不錯的子集。在此過程中,你將學習 Haskell 的 I/O、可變狀態、動態型別、錯誤處理和解析功能。當你完成時,你應該對 Haskell 和 Scheme 都相當熟悉。
本教程的目標是兩個主要受眾
第二組可能會發現這很有挑戰性,因為本教程為了專注於 Haskell,省略了 Scheme 和一般程式設計中的幾個概念。一本好的教科書,比如 計算機程式的結構與解釋 或 小 Schemer 應該非常有用。
使用像 C、Java 或 Python 這樣的過程式或面向物件的語言的使用者應該注意:你將不得不忘記你所知道的關於程式設計的大部分知識。Haskell 與這些語言完全不同,需要一種不同的思考程式設計的方式。最好以一張白紙開始學習本教程;儘量不要將 Haskell 與命令式語言進行比較,因為許多概念(包括類、函式和 return)在 Haskell 中有完全不同的含義。
由於每節課都建立在之前課程中編寫的程式碼之上,因此一般來說,最好按順序學習。
本教程假定你將使用 GHC 作為你的 Haskell 編譯器。程式碼可能適用於 Hugs 或其他編譯器,但尚未正式測試過,可能需要下載額外的庫。
本教程中使用的原始碼檔案的早期、非維基編輯版本可在 原始網站 上找到。