Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。
このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能する[http://www.schemers.org/Documents/Standards/R5RS/HTML R5RS Scheme]のかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。
このチュートリアルの対象読者は主に以下の2種類です。
二番目に該当する人達は多分このチュートリアルを難しいものに感じるでしょう。[http://mitpress.mit.edu/sicp/full-text/book/book.html Structure and Interpretation of Computer Programs]や[http://www.ccs.neu.edu/home/matthias/BTLS/ The Little Schemer]などが助けになるだろうと思います。
C、Java、Pythonなどの手続き型またはオブジェクト指向言語のユーザーは気をつけてください。あなたが既にプログラミングについて知っている多くのことを忘れなければなりませんから。Haskellはこれらの言語とは''全く''違い、プログラミングに対する違った考え方を要求します。このチュートリアルをまっさらな状態で始め、Haskellと命令型言語とを比べようとしないのが最善でしょう。それらの言語に見られるクラス、関数、returnなど多くの概念はHaskellに於ては非常に違った意味を持つからです。
それぞれの章は前の章のために書かれたコードの上に成り立っているので、最初から順番に読んでいくのがよいでしょう。
このチュートリアルはあなたが Haskell コンパイラとして [http://www.haskell.org/ghc/ GHC]を使っていることを前提にしています。[http://www.haskell.org/hugs/ Hugs]でも動くかもしれませんが、全くテストされておらず、追加のライブラリが必要になるかもしれません。
ソースコードはこちら: [http://jonathan.tang.name/files/scheme_in_48/code/ listings](←リンク切れ) [http://web.archive.org/web/20131102065651/http://jonathan.tang.name/files/scheme_in_48/code/ Webアーカイブ]