跳至內容

用 48 小時寫一個 Scheme 語言/概述

來自華夏公益教科書,為開放世界提供開放書籍

大多數網上關於 Haskell 的教程採用類似語言參考手冊的教學方式。它們向你展示語言的語法,一些語言結構,然後讓你在互動式提示符下建立一些簡單的函式。如何編寫功能齊全、有用的程式的“難點”留到最後,或者乾脆省略了。

本教程採用不同的方法。你將從使用和解析命令列開始,然後逐步編寫一個功能齊全的 Scheme 直譯器,它實現了 R5RS Scheme 的一個相當完整的子集。在此過程中,你將學習 Haskell 的 I/O、可變狀態、動態型別、錯誤處理和解析特性。當你完成本教程時,你應該能夠相當熟練地使用 Haskell 和 Scheme。

本教程針對兩類主要受眾

  • 已經瞭解 LispScheme 的人,想要學習 Haskell
  • 不瞭解任何程式語言,但擁有紮實的定量背景,並熟悉計算機的人

第二組可能會發現本教程很有挑戰性,因為本教程為了專注於 Haskell,省略了 Scheme 和通用程式設計中的若干概念。一本好的教科書,比如 計算機程式的結構和解釋小 Scheme 語言 應該非常有用。

使用過過程式或面嚮物件語言的人,如 CJavaPython,請注意:你必須忘記你已經瞭解的大多數關於程式設計的知識。Haskell 完全不同於這些語言,需要一種不同的程式設計思維方式。最好以一張白紙進入本教程;儘量不要將 Haskell 與命令式語言進行比較,因為許多概念(包括類、函式和 return)在 Haskell 中具有截然不同的含義。

由於每節課都建立在之前課程中編寫的程式碼基礎上,因此通常最好按照順序學習。

本教程假設你將使用 GHC 作為你的 Haskell 編譯器。該程式碼可能適用於 Hugs 或其他編譯器,但尚未正式測試,可能需要下載額外的庫。

本教程中使用的原始碼檔案的一個先前版本(未經維基編輯)可在 原始網站 上找到。

華夏公益教科書