原文。
https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
概論
大部分網(wǎng)路上的Haskell教程會使用一種與語言參考手冊類似的方式來進行教學。他們會告訴你語法和一些語言結(jié)構(gòu),然后讓你在交互式命令行里寫一些簡單的函數(shù)。而如何用函數(shù)式的方式來寫一個有用的程序的問題卻被留在了最后面或是直接被忽略了。
而我們會用一種完全不同的方式。你會從使用和解析命令行參數(shù)開始,然后寫一個能夠?qū)崿F(xiàn)R5RS Scheme標準的像模像樣的子集的Scheme解釋器。你將會學習到Haskell的I/O,可變狀態(tài),動態(tài)類型,錯誤處理以及其他相關(guān)的解析功能。而當你完成這個教程的時候,你就會對Haskell和Scheme相當熟悉了。
這個教程主要面向兩大讀者群:
- 已經(jīng)掌握Lisp或Scheme并且想要學習Haskell的人
- 雖然不懂任何編程語言,但是有大量背景知識并且對計算機非常熟悉的人
第二種讀者會發(fā)現(xiàn)這個任務(wù)有些困難,因為在這里省略了很多Scheme以及其他通用的編程概念從而把教程的重點放在Haskell上面。SICP或者The Little Schemer之類的書會對你很有幫助。
而那些使用像C,Java或者Python這樣的基于過程或面向?qū)ο笳Z言的用戶需要注意了:你需要忘掉大部分你已經(jīng)熟悉的編程知識。Haskell與上述的語言完全不同,并且要求你用一種完全不一樣的方式來進行思考。最好以白板的狀態(tài)來開始這個教程并且不要嘗試將Haskell與命令式語言進行比較,因為很多你以為你熟悉的概念(classes,functions,return)在Haskell里有完全不同的含義。
由于每一課都建立在之前代碼的基礎(chǔ)上,所以你最好按順序來學習課程。
這個教程假定你用ghc作為你的Haskell編譯器。代碼在Hugs或者其他編譯器里或許也能運行但并沒有被完全測試過,也許你還需要下載一些額外的庫來支持他們。
目錄
- First Steps: Compiling and running
- Parsing
- Evaluation, Part 1
- Error Checking and Exceptions
- Evaluation, Part 2
- Building a REPL: Basic I/O
- Adding Variables and Assignment: Mutable State in Haskell
- Defining Scheme Functions: Closures and Environments
- Creating IO Primitives: File I/O
- Towards a Standard Library: Fold and Unfold
- Conclusion & Further Resources
- Answers to Exercises