48時間でSchemeを書こう

出典: フリー教科書『ウィキブックス(Wikibooks)』
移動: 案内検索

Web上の殆どのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。

このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。

このチュートリアルの対象読者は主に以下の2種類です。

  1. LispかSchemeを知っていて、Haskellを学びたい人
  2. プログラミング言語を何も知らないけれども、一定の背景知識を持っていてコンピュータに詳しい人

二番目に該当する人達は多分このチュートリアルを難しいものに感じるでしょう。Structure and Interpretation of Computer ProgramsThe Little Schemerなどが助けになるだろうと思います。

C、Java、Pythonなどの手続き型またはオブジェクト指向言語のユーザーは気をつけてください。あなたが既にプログラミングについて知っている多くのことを忘れなければなりませんから。Haskellはこれらの言語とは全く違い、プログラミングに対する違った考え方を要求します。このチュートリアルをまっさらな状態で始め、Haskellと命令型言語とを比べようとしないのが最善でしょう。それらの言語に見られるクラス、関数、returnなど多くの概念はHaskellに於ては非常に違った意味を持つからです。

それぞれの章は前の章のために書かれたコードの上に成り立っているので、最初から順番に読んでいくのがよいでしょう。

このチュートリアルはあなたが Haskell コンパイラとして GHCを使っていることを前提にしています。Hugsでも動くかもしれませんが、全くテストされておらず、追加のライブラリが必要になるかもしれません。

ソースコードはこちら: listings

目次[編集]

  1. 最初の一歩
  2. 構文解析
  3. 評価: 第一部
  4. エラー処理と例外
  5. 評価: 第二部
  6. REPLの作成: 基本的なI/O
  7. 変数と代入: Haskellにおける動的状態
  8. Scheme関数の定義: クロージャと環境
  9. IOプリミティブの作成: ファイルI/O
  10. 標準ライブラリに向けて: FoldとUnfold
  11. Conclusion & Further Resources
  12. 練習問題の解答