Haskell勉強会

関数型プログラミングの学習日記

プログラミングHaskell 第2版

「プログラミングHaskell 第2版」というHaskellの本を買いました。

 

プログラミングHaskell 第2版(紙書籍+電子書籍)www.lambdanote.com

 

プログラミングHaskell 第2版

プログラミングHaskell 第2版

 

 

目次

第I部 基礎概念

 

第1章 導入

 1.1 関数
 1.2 関数プログラミング
 1.3 Haskell の特徴
 1.4 歴史的背景
 1.5 Haskell の妙味
 1.6 参考文献
 1.7 練習問題

 

第2章 はじめの一歩

 2.1 GHC
 2.2 インストールして利用開始
 2.3 プレリュード
 2.4 関数適用
 2.5 Haskell プログラム
 2.6 参考文献
 2.7 練習問題

 

第3章 型と型クラス

 3.1 基礎概念
 3.2 基本型
 3.3 リスト型
 3.4 タプル型
 3.5 関数型
 3.6 カリー化された関数
 3.7 多相型
 3.8 多重定義型
 3.9 基本クラス
 3.10 参考文献
 3.11 練習問題

 

第4章 関数定義

 4.1 古きから新しきへ
 4.2 条件式
 4.3 ガード付きの等式
 4.4 パターンマッチ
 4.5 ラムダ式
 4.6 セクション
 4.7 参考文献
 4.8 練習問題

 

第5章 リスト内包表記

 5.1 基礎概念
 5.2 ガード
 5.3 関数zip
 5.4 文字列の内包表記
 5.5 シーザー暗号
 5.6 参考文献
 5.7 練習問題

 

第6章 再帰関数

 6.1 基礎概念
 6.2 リストに対する再帰
 6.3 複数の引数
 6.4 多重再帰
 6.5 相互再帰
 6.6 再帰の秘訣
 6.7 参考文献
 6.8 練習問題

 

第7章 高階関数

 7.1 基礎概念
 7.2 リスト処理
 7.3 畳込関数foldr
 7.4 畳込関数foldl
 7.5 関数合成演算子
 7.6 文字列の二進数変換器
 7.7 投票アルゴリズム
 7.8 参考文献
 7.9 練習問題

 

第8章 型と型クラスの定義

 8.1 type による型宣言
 8.2 dataによる型宣言
 8.3 newtypeによる型宣言
 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 総当たり法
 9.7 性能テスト
 9.8 生成と評価の方法を変える
 9.9 代数的な性質をいかす
 9.10 参考文献
 9.11 練習問題

 

第II部 高度な話題

 

第10章 対話プログラム

 10.1 課題
 10.2 解決策
 10.3 基本アクション
 10.4 順序付け
 10.5 アクションの部品
 10.6 ハングマン
 10.7 ニム
 10.8 ライフ
 10.9 参考文献
 10.10 練習問題

 

第11章 負けない三目並べ

 11.1 導入
 11.2 基本的な宣言
 11.3 格子に関する便利な関数
 11.4 格子を表示する
 11.5 手を決める
 11.6 番号を読み込む
 11.7 人間 vs 人間
 11.8 ゲームの木
 11.9 枝を刈る
 11.10 ミニマックス法
 11.11 人間 vs コンピューター
 11.12 参考文献
 11.13 練習問題

 

第12章 モナドなど

 12.1 関手
 12.2 アプリカティブ
 12.3 モナド
 12.4 参考文献
 12.5 練習問題

 

第13章 モナドパーサー

 13.1 パーサーとは何か?
 13.2 関数としてのパーサー
 13.3 基礎的な定義
 13.4 パーサーの連接
 13.5 選択
 13.6 派生関数
 13.7 空白の扱い
 13.8 数式
 13.9 計算器
 13.10 参考文献
 13.11 練習問題

 

第14章 Foldable とTraversable

 14.1 モノイド
 14.2 Foldable
 14.3 Traversable
 14.4 参考文献
 14.5 練習問題

 

第15章 遅延評価

 15.1 導入
 15.2 評価戦略
 15.3 停止性
 15.4 簡約の回数
 15.5 無限のデータ構造
 15.6 部品プログラミング
 15.7 正格適用
 15.8 参考文献
 15.9 練習問題

 

第16章 プログラムの論証

 16.1 等式変形
 16.2 Haskell の等式推論
 16.3 簡単な例題
 16.4 自然数に対する数学的帰納法
 16.5 リストに対する構造的帰納法
 16.6 連結を除去する
 16.7 コンパイラーの正しさ
 16.8 参考文献
 16.9 練習問題

 

第17章 コンパイラーの算出

 17.1 導入
 17.2 文法と意味
 17.3 スタックの追加
 17.4 継続の追加
 17.5 脱高階関数
 17.6 算出の短縮
 17.7 参考文献
 17.8 練習問題

 

付録A 解答の一部

付録B 標準的なモジュール

参考文献

索引

 

出版社情報

プログラミングHaskell 第2版(紙書籍+電子書籍) – 技術書出版と販売のラムダノート

 

翻訳者による補足情報

kazu-yamamoto.hatenablog.jp

 

著者紹介

Graham Hutton(原著者)

Nottingham 大学コンピューターサイエンス学部教授。

Haskell を何千人もの学生に教えてきた講師として数々の受賞歴を持つ。

“Journal of Functional Programming” の編集委員Haskell Symposium およびICFP(International Conference on Functional Programming)の議長、ACM(Association for Computing Machinery)プログラミング言語分科会の副議長を務め、現在はACM Distinguished Scientist。

 

twitter.com

 

山本和彦(訳者)

株式会社IIJ イノベーションインスティテュートに所属するプログラマー

Haskell コミュニティーでは、主にネットワークプロトコル関連のライブラリを開発保守している。

 

twitter.com

 

感想

はてなブックマークでも話題になっていました。

 

www.lambdanote.com

 

golden-lucky.hatenablog.com

 

パッと見で分かりやすそうな説明でした。

じっくり読んでみて、関数型プログラミングについて理解を深めてみたいと思います!