Haskellによる関数プログラミングの思考法

image

関数プログラミングの考え方・思考法を学ぶ!
関数プログラミングが最高の技法である理由は、関数プログラムを数学的に考察できる点にある。本書を読むことで、関数プログラミングの本質を身に着け、Haskellの真の能力を理解できるだろう。

Richard Bird 著
山下伸夫 訳
定価:3,024円(本体2,800円)
発売日:2017年2月28日
形態:B5変型版(336ページ)
ISBN:978-4-04-893053-6

Amazonで購入する

サポート/追加情報

◆関数プログラミングの思考法を伝える教科書!
本書では、「関数と関数適用を使ってプログラムを構成する」「数学で用いる
単純な記法で問題を簡潔明快に記述する」「単純な数学を基盤とし等式論証を用いてプログラムの性質に関して証明やプログラム運算する(意味を変えることなくプログラムを変換する)」ことで、意図どおり正しく合理的な時間で動作するプログラムを手早く書くというプログラマ共通の課題に挑むことで、関数プログラミングの基本的な考え方を学んでいく。

◆著者/訳者紹介

■Richard Bird(リチャード・バード)
オックスフォード大学名誉教授、同大学リンカーンカレッジフェロー
関心分野:プログラミングの代数、仕様からのアルゴリズム運算、関数プログラミング、アルゴリズムデザイン

■山下伸夫(やました のぶお)
聖徳大学准教授、株式会社タイムインターメディア顧問
関心分野:関数プログラミング言語設計、Haskellによる関数プログラミング、Haskellを通じてプログラミングの楽しさをどう伝えるか

◆目次
訳者序文
まえがき

第1章 関数プログラミングとは何か
1.1 関数と型
1.2 関数合成
1.3 例題:頻出単語
1.4 例題:数を言葉に変換する
1.5 Haskell Platform
1.6 練習問題
1.7 練習問題の解答
1.8 章末ノート

第2章 式,型,値
2.1 GHCi を使ったセッション
2.2 名前と演算子
2.3 評価
2.4 型と型クラス
2.5 値の表示
2.6 モジュール
2.7 Haskellのレイアウト
2.8 練習問題
2.9 練習問題の解答
2.10 章末ノート

第3章 数値
3.1 型クラスNum
3.2 その他の数値型クラス
3.3 床値の計算
3.4 自然数
3.5 練習問題
3.6 練習問題の解答
3.7 章末ノート

第4章 リスト
4.1 リスト記法
4.2 列挙
4.3 リスト内包表記
4.4 基本演算
4.5 連接
4.6 concat,map,filter
4.7 zip とzipWith
4.8 頻出単語(完成編)
4.9 練習問題
4.10 練習問題の解答
4.11 章末ノート

第5章 単純な数独ソルバー
5.1 仕様
5.2 法則を使ったプログラムの構成
5.3 選択肢行列の枝刈り
5.4 単一マス目拡張
5.5 練習問題
5.6 練習問題の解答
5.7 章末ノート

第6章 証明
6.1 自然数上の帰納法
6.2 リスト上の帰納法
6.3 foldr 関数
6.4 foldl 関数
6.5 scanl 関数
6.6 最大切片和
6.7 練習問題
6.8 練習問題の解答
6.9 章末ノート

第7章 効率
7.1 遅延評価
7.2 空間計算量の制御
7.3 時間計算量の制御
7.4 時間計算量の分析
7.5 蓄積引数
7.6 タプリング法
7.7 ソート
7.8 練習問題
7.9 練習問題の解答
7.10 章末ノート

第8章 プリティプリント
8.1 利用状況の想定
8.2 ドキュメント
8.3 直接実装
8.4 例
8.5 最良のレイアウト
8.6 項表現
8.7 練習問題
8.8 練習問題の解答
8.9 章末ノート

第9章 無限リスト
9.1 復習
9.2 循環リスト
9.3 極限としての無限リスト
9.4 じゃんけん
9.5 ストリームを基本とする対話
9.6 2 重連結リスト
9.7 練習問題
9.8 練習問題の解答
9.9 章末ノート

第10章 命令的関数プログラミング
10.1 IO モナド
10.2 その他のモナド
10.3 State モナド
10.4 ST モナド
10.5 可変配列
10.6 不可変配列
10.7 練習問題
10.8 練習問題の解答
10.9 章末ノート

第11章 構文解析
11.1 モナドとしての構文解析器
11.2 基本構文解析器
11.3 選択と反復
11.4 文法と式
11.5 式の表示
11.6 練習問題
11.7 練習問題の解答
11.8 章末ノート

第12章 単純等式運算器
12.1 基本となる検討
12.2 式
12.3 法則
12.4 運算
12.5 書き換え
12.6 照合
12.7 置換
12.8 運算器のテスト
12.9 練習問題
12.10 練習問題の解答
12.11 章末ノート

索引
著者・訳者紹介