第1章 | |||
---|---|---|---|
1. | 画面表示だけで副作用?どんな影響をプログラムに与えるのか? | … | 5 |
2. | 人によって違う関数型プログラミングの定義 | … | 7 |
3. | 定数項の事前計算 | … | 14 |
4. | 純粋じゃない関数型プログラミングはダメ? | … | 22 |
第2章 | |||
5. | Lispのコーディングスタイル | … | 30 |
6. | 動的型付けの実装 | … | 31 |
7. | carとcdrの語源 | … | 33 |
8. | M式とS式 | … | 33 |
9. | EV-LISPとEVQ-LISP | … | 34 |
10. | メタ巡回的インタプリタ | … | 34 |
11. | 左結合のリスト | … | 41 |
12. | Lisp-1とLisp-2 | … | 43 |
13. | 匿名関数は便利なのか? | … | 47 |
14. | (lambda (x) x)と(function (lambda (x) x)), #'(lambda (x) x)、どう書く? | … | 48 |
15. | 純Lisp | … | 52 |
16. | 総称関数(包括関数) generic function | … | 54 |
17. | 動的関数定義は遅い? | … | 59 |
18. | クロージャとクォート式 | … | 60 |
第3章 | |||
19. | 関数の値は何個?―多値を返す関数 | … | 66 |
20. | 複数の定義域と値域を持つ関数―多ソート代数 | … | 66 |
21. | ラムダ計算のラムダはなぜラムダ(λ)なのか | … | 69 |
22. | SUC(0)=1, SUC(1)=2となることの確認 | … | 70 |
23. | チューリング完全 | … | 71 |
24. | チャーチ・ロッサー性 | … | 71 |
25. | 再帰関数の意味論―不動点 | … | 72 |
26. | プログラムの意味論 | … | 73 |
27. | Javaのプライベート宣言は副作用のないプログラムの夢を見るか | … | 82 |
28. | JavaやC#の文字列はイミュータブルで、Cはミュータブルで | … | 83 |
29. | 文字列をリスト型でイミュータブルにする | … | 85 |
30. | 原始再帰関数 | … | 94 |
31. | Lispの偉大さは数とリストが同じように扱えること | … | 96 |
32. | 末尾再帰と繰り返しの相互変換 | … | 108 |
33. | 再帰が停止するには? | … | 112 |
34. | 再帰プログラミングはどこで使われるか | … | 113 |
35. | 高階関数って高級で難しそうだけど? | … | 119 |
36. | 外側評価でいいと思うのだけれど? | … | 125 |
37. | クラスベースのオブジェクト指向は不平等? | … | 130 |
第4章 | |||
38. | クラスベースと総称関数ベースのオブジェクト指向 | … | 137 |
39. | 継承とコンポジション | … | 139 |
40. | 単一継承と多重継承 | … | 140 |
41. | オブジェクト指向は遅くないの? | … | 144 |
42. | プログラミング言語を何で作っているのか | … | 148 |
43. | Cより速いCommon Lisp処理系 | … | 149 |
44. | 関数型プログラミングは大規模ソフトウェア開発で役に立つのか | … | 151 |
45. | 高階関数による依存性の注入 | … | 152 |
第5章 | |||
46. | ハノイの塔で円盤を移動し終えると…… | … | 166 |
47. | Common Lispの構造体―Common Lispの便利なデータ構造 | … | 177 |
48. | tarai関数とtak関数 | … | 187 |
49. | リスト版tarai関数 | … | 188 |
第6章 | |||
50. | コードメトリクスにはどんなものがあり、どれだけ測定するの? | … | 232 |
おわりに | |||
51. | 関数型プログラミングはソフトウェア開発を幸せにできるか | … | 241 |
Copyright © 2016 All Rights Reserved by GOMI Hiroshi.