PR:この記事にはアフィリエイトリンクが含まれます。
Haskellの本を探すと、文法を学ぶ入門書から、型やモナドを使ったアプリ開発の本まで幅広く見つかります。用語は難しそうでも、値の流れを追うと関数型プログラミングの考え方がつかめます。
紹介する4冊は、型の基礎や演習、プロジェクト制作、実務的な設計など、力を入れる範囲が異なります。読み終えた後に何を学べるかも含めて、それぞれの特徴を見ていきましょう。
本の早見表
| 書名 | 学びの中心 | 特徴 |
|---|---|---|
Haskell入門 関数型プログラミング言語の基礎と実践 | 型・モナド・アプリ開発 | CLI、Web、サーバー連携 |
プログラミングHaskell 第2版 | 型と関数合成 | 章ごとの練習問題 |
Learn Haskell by Example | プロジェクト制作 | 音楽DSL、画像処理 |
Haskell in Depth | 発展的な型と設計 | Web、テスト、並行処理 |
4冊が扱う範囲はそれぞれ違います。関数の組み立て方や失敗の表現を学ぶ本から、アプリ開発まで触れる本までそろっています。
表では各書の中心テーマを短くまとめました。型の基礎を丁寧に学ぶ本もあれば、制作課題を通して練習する本もあります。学んだ先に取り組める内容が見えてきます。
『Haskell入門』の参考価格は税込3,608円、『プログラミングHaskell 第2版』は税込3,520円です。希望小売価格・定価を目安にした金額で、実売価格は時期や販売店によって変わります。
関数型の入口
Haskellの純粋な関数は、入力から出力を返す形で処理を組み立てます。注文の合計を求めるなら、一覧を加工する関数を順につなげます。値の流れを追いやすい書き方です。
関数型プログラミングでは、変数の値を後から変えない不変性が基本です。途中で値が思わぬ形に変化しにくく、関数ごとに動きを確かめられます。手続き型の書き方をそのまま移すと戸惑うかもしれませんね。
遅延評価では、値が必要になった段階で計算が進みます。大きなデータ列を必要な分だけ扱える一方、計算のタイミングを意識しないと処理の重さをつかみにくい面もあります。短い例を動かして挙動を確かめるのが近道です。
型が守る範囲
Haskellの型は、値の種類に加えて、関数が受け取る値と返す値も示します。たとえば Int -> Int は整数を受け取り、整数を返す関数です。型から用途を推測しやすくなります。
代数的データ型を使えば、状態や選択肢をプログラムで表せます。注文の状態が未発送・発送済み・取消済みなら、その三つを型として定義します。存在しない状態を扱うコードを書きにくくできるわけです。
型クラスは、異なる型に共通の操作を持たせる仕組みです。数値型の Num と等しさを比べる Eq が代表例。型制約を読むと、関数が値にどんな性質を求めているか分かります。
エラーが出たときは注釈を足すだけでなく、入力と出力の型を見直すのも大切です。コンパイラーが示す不一致を設計を直す手がかりにでき、型検査が実装の案内役になります。
モナドの実感
モナドは、計算を順につなぎながら、失敗や状態などの文脈を受け渡す抽象化です。初めから定義を暗記する必要はありません。値がない場合の Maybe と、エラーを返す Either を比べると仕組みをつかみやすいでしょう。
設定ファイルを読み、値を検証して接続先を作る間には失敗の可能性があります。Eitherならエラーを保って後続の処理へ進めるため、各段階に失敗時の分岐を書く手間を抑えられます。
Readerは複数の関数で設定値を共有するときに使います。Stateは状態値を受け渡す計算を扱う型です。モナド変換子を使えば、エラーと設定など複数の文脈を重ねられます。
リストもモナドの例です。候補を組み合わせ、条件に合う結果を残す処理を簡潔に書けます。do記法は順番に処理するように読めますが、各行は計算の連鎖へ変換されています。
入門と開発
『Haskell入門 関数型プログラミング言語の基礎と実践』は、本間雅洋・類地孝介・逢坂時響による2017年刊の入門書です。型システム、代数的データ型、型クラス、型制約を学び、基礎からアプリケーション開発へ進みます。
モナドでは、EitherやReader、ST、リストに加えて、モナド変換子も扱います。失敗の伝播や共有設定、局所的な状態を学びながら、モナドの働きを複数の角度から理解できます。
コマンドラインツールやWebアプリ、サーバーとクライアントの連携も取り上げます。HUnitによるテストに加え、attoparsec、aeson、lens、pipesにも触れます。入門者が基礎から開発へ進む際に役立つ一冊です。
演習で固める
『プログラミングHaskell 第2版』はGraham Hutton著、山本和彦訳の2019年刊で、328ページです。各章に練習問題があり、読み進めながら自分で理解を確かめられます。手を動かして学べる構成です。
型と型クラスを土台に、Applicative、Monad、Foldable、Traversableへと範囲を広げます。例題や課題を通して関数の組み合わせを学べるので、抽象的な概念を順序立てて理解したい人に合うでしょう。
モナドパーサーのほか、プログラムの論証やコンパイラーの算出も扱います。関数型の原理や計算の仕組みにじっくり取り組みたい人におすすめです。章ごとの練習問題に時間をかけられる人にも適しています。
例から作る
『Learn Haskell by Example』はPhilipp Hagenlocher著、Manning Publicationsから2024年10月に刊行された456ページの本です。課題やプロジェクトを通じてHaskellを練習する構成になっています。
遅延評価、不変データ構造、モナド、関数合成を学びながら、音楽用DSLや画像処理ライブラリを作ります。ひとつの題材を通して複数の概念の働きを追えるため、学んだ知識をコードに移したい人に向いています。
Print版は白黒印刷で、電子書籍が付属します。成果物を作りながら関数型の考え方を試せるのが特徴です。手を動かして学ぶスタイルが合う人には、この本がおすすめです。
発展へ進む
『Haskell in Depth』はVitaly Bragilevsky著、Simon Peyton Jones序文の2021年刊で、664ページです。基礎を知っている開発者を対象に、高度な型や型クラスを設計に活かす方法を扱います。
Maybe、Reader、Writer、Stateとモナド変換子を実用面から解説します。型で安全なインターフェースを作り、エラー処理やアプリケーションの構成につなげたい人にとって、入門後の発展書として適した一冊です。
CabalやStack、テスト、Webサービス、ネットワークアプリに加えて、並行・並列処理も扱います。開発に関わるテーマが幅広い一方、基礎を知る読者向けの内容です。初めて読む一冊には情報量が多めでしょう。
結論
練習問題で型と関数の基礎を固めるなら『プログラミングHaskell 第2版』、CLIやWeb開発まで触れるなら『Haskell入門』がおすすめです。初めての一冊には、この二つが有力です。
制作を通して知識を身につけたい人には『Learn Haskell by Example』、基礎を終えて高度な型や実務的な設計へ進む人には『Haskell in Depth』をすすめます。経験と取り組みたい題材に合わせて選ぶとよいでしょう。
型でデータを表し、関数を合成して、小さく動かして確かめる。この流れがモナドへの理解も支えます。自分の学び方に合う本を一冊選び、例題を動かしながら読み進めてください。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





