はじめてのLisp関数型プログラミング ――ラムダ計算からリファクタリングまで一気にわかる
この本の概要
Lisp・関数型プログラミングのメリットとは何か――副作用のないプログラミングがまず挙げられます。これでバグが圧倒的に少なくなります。さらにはコードの再利用がしやすいこと,並列処理が得意であるということも。それだけではありません。動的な型付けも特徴ですし,ラムダ計算もクロージャも,さらにはオブジェクト指向までできます。数十年の時を越えて現代にも通用する普遍的なアイデアがLispにはあります。本書はさまざまなLispプログラム(ハノイの塔,エイトクイーン,オンライン書店など)を解説し,さらにリファクタリングまでいっきに学びます。本書で関数型プログラミングのエッセンスを得ることができます。
こんな方におすすめ
- プログラマ(オブジェクト指向プログラマ,昔からのLispプログラマ)など
目次
はじめに
Lispプログラミング環境の作り方
第1章 関数型プログラミングとは何か――そして,それがなぜ難しいのか?
1.1 関数型プログラミングとは
- 1.1.1 純粋関数と参照透過性
- 1.1.2 副作用
- 1.1.3 関数型プログラミングの概観
1.2 関数型プログラミングの歴史
- 1.2.1 関数型プログラミング黎明期(1930~1960年代)ラムダ計算の誕生からLispへ
- 1.2.2 関数型プログラミング揺籃期(1970年代)Lisp v.s. MLの戦争
- 1.2.3 関数型プログラミング発展期(1980年代)AIによる黄金時代
- 1.2.4 関数型プログラミング雌伏期(1990年代)Lispの雌伏とHaskellの誕生
- 1.2.5 関数型プログラミング再生期(2000年代)F#やScalaらによる新たな時代に
- 1.2.6 関数型プログラミング言語第2次成長期(2010年代)IoT時代の関数型へ
1.3 関数型プログラミングは何がうれしいのか
- 1.3.1 再利用がしやすい
- 1.3.2 並列処理に向いている
- 1.3.3 バグが少ない
- 1.3.4 テストが行いやすい
- 1.3.5 コードの最適化/形式手法の適用/コードの自動生成に向いている
- 1.3.6 動的プログラミングができる――抽象的なプログラミングができる
- 1.3.7 その他のうれしいところ
1.4 関数型プログラミングはなぜ難しいのか
- 1.4.1 変数が使えない→破壊的代入文を伴う変数――副作用のないプログラム
- 1.4.2 代入文が使えない→破壊的代入文――副作用のないプログラム
- 1.4.3 配列が使えない→ミュータブルなデータ構造――副作用のないプログラム
- 1.4.4 再帰プログラミングがしにくい――副作用のないプログラム
- 1.4.5 連続的な関数適用がしにくい ――副作用のないプログラム
- 1.4.6 高階関数が難しい――関数型プログラミングの便利で難しい機能
- 1.4.7 評価戦略が面倒――関数型プログラミングの便利で難しい機能
- 1.4.8 他の機能が難しそう――関数型プログラミングの便利な機能
- 1.4.9 関数型の設計方法がわからない
- 1.4.10 パラダイムシフトがたいへん
- 1.4.11 関数型プログラミングは難しくない
1.5 関数型プログラミングを使いこなすには
- 1.5.1 副作用のないプログラムのために
- 1.5.2 関数型プログラミングの便利な機能のために
- 1.5.3 不純関数型プログラミングのススメ
- 1.5.4 非関数型プログラミング言語での関数型プログラミングのススメ
1.6 まとめ
他