48時間でSchemeを書こう
Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。
このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。
このチュートリアルの対象読者は主に以下の2種類です。
- LispかSchemeを知っていて、Haskellを学びたい人
- プログラミング言語を何も知らないけれども、一定の背景知識を持っていてコンピュータに詳しい人
二番目に該当する人達は多分このチュートリアルを難しいものに感じるでしょう。Structure and Interpretation of Computer ProgramsやThe Little Schemerなどが助けになるだろうと思います。
C、Java、Pythonなどの手続き型またはオブジェクト指向言語のユーザーは気をつけてください。あなたが既にプログラミングについて知っている多くのことを忘れなければなりませんから。Haskellはこれらの言語とは全く違い、プログラミングに対する違った考え方を要求します。このチュートリアルをまっさらな状態で始め、Haskellと命令型言語とを比べようとしないのが最善でしょう。それらの言語に見られるクラス、関数、returnなど多くの概念はHaskellに於ては非常に違った意味を持つからです。
それぞれの章は前の章のために書かれたコードの上に成り立っているので、最初から順番に読んでいくのがよいでしょう。
このチュートリアルはあなたが Haskell コンパイラとして GHCを使っていることを前提にしています。Hugsでも動くかもしれませんが、全くテストされておらず、追加のライブラリが必要になるかもしれません。