目次と正誤表

この手の本を買ってまず最初にすることは目次の確認。あと正誤表や配布コードの入手。どちらも出版社のサイトにhttp://www.seshop.com/product/detail/12043/にある。

まず、目次は以下のとおり。

推薦の言葉
まえがき
  なぜLisp なのか? なぜCommon Lisp なのか?
  各章の概要
  この本の使い方
  補助的教科書と参考書
  演習についての注意
  謝辞


第1部 Common Lisp 入門
第1章 Lisp 入門
 1.1 記号計算
 1.2 変数
 1.3 特殊形式
 1.4 リスト
 1.5 新しい関数の定義
 1.6 関数の使用
 1.7 高階関数
 1.8 その他のデータ型
 1.9 要約:Lisp 評価規則
 1.10 Lisp は何が違うのか?
 1.11 演習
 1.12 解答
第2章 簡単なLisp プログラム
 2.1 英語のサブセット用文法
 2.2 成功法による解法
 2.3 ルールベースによる解法
 2.4 進むべき2つの道
 2.5 プログラムの変更を伴わない文法の変更
 2.6 同じデータを使用した複数のプログラム開発
 2.7 演習
 2.8 解答
第3章 Lisp 概要
 3.1 Lisp スタイルガイド
 3.2 特殊形式
 3.3 リストを扱う関数
 3.4 等値性と内部表現
 3.5 シーケンスを扱う関数
 3.6 表を管理するための関数
 3.7 木構造を扱う関数
 3.8 数を扱う関数
 3.9 集合を扱う関数
 3.10 破壊的な関数
 3.11 データ型の概要
 3.12 入力/出力
 3.13 デバックツール
 3.14 バグ予防ツール
 3.15 評価
 3.16 クロージャ
 3.17 スペシャル変数
 3.18 多値
 3.19 パラメータに関する補足
 3.20 その他
 3.21 演習
 3.22 解答


第2部 初期のAIプログラム
第4章 GPS:一般問題解決機
 4.1 局面1:問題記述
 4.2 局面2:仕様記述
 4.3 局面3:実装
 4.4 局面4:テスト
 4.5 局面5:分析、もしくは「GPSの一般性について嘘をついていた」
 4.6 「ブロックの周りを走り回る」問題
 4.7 「シブリング目標を打ち消す」問題
 4.8 「調べることなく跳躍する」問題
 4.9 「再帰的な副目標」問題
 4.10 「中間情報の不足」問題
 4.11 GPSバージョン2:もう少し一般性のある一般問題解決機
 4.12 モンキーとバナナ(新しい領域の問題)
 4.13 迷路探索
 4.14 積み木の世界
 4.15 局面5(再び):バージョン2の分析
 4.16 「跳躍もしなければ調べもしない」問題
 4.17 「記述力不足」問題
 4.18 「完全な情報」問題
 4.19 「相互作用する目標」問題
 4.20 GPSの限界
 4.21 歴史と参考資料
 4.22 演習
 4.23 解答
第5章 ELIZA:機械との対話
 5.1 ELIZAの問題記述と仕様記述
 5.2 パターンマッチング
 5.3 セグメントパターンマッチング
 5.4 ELIZAのプログラム:ルールベーストランスレータ
 5.5 歴史と参考資料
 5.6 演習
 5.7 解答
第6章 ソフトウェアツールの構築
 6.1 対話的インタープリタツール
 6.2 パターンマッチングツール
 6.3 ルールベーストランスレータツール
 6.4 探索ツール一式
 6.5 探索問題としてのGPS
 6.6 歴史と参考資料
 6.7 演習
 6.8 解答
第7章 STUDENT:代数の文章題を解く
 7.1 英文を方程式に変換する
 7.2 代数方程式を解く
 7.3 例題
 7.4 歴史と参考資料
 7.5 演習
 7.6 解答
第8章 記号計算:簡単化プログラム
 8.1 中置記法を前置記法に変換する
 8.2 簡単化ルール
 8.3 結合性と可換性
 8.4 対数関数、三角関数微分
 8.5 ルールベースの限界
 8.6 積分
 8.7 歴史と参考資料
 8.8 演習


第3部 ツールと技法
第9章 効率性の問題
 9.1 キャッシュ技法:メモ化(Memoization)
 9.2 コンパイル技法
 9.3 遅延計算技法
 9.4 索引付け技法
 9.5 インスツルメンテーション:最適化すべきものを決定する
 9.6 効率に関するケーススタディ:SIMPLIFY プログラム
 9.7 歴史と参考資料
 9.8 演習
 9.9 解答
第10章 低レベルの効率性の問題
 10.1 宣言の使用
 10.2 総称関数の回避
 10.3 複雑な引数リストの回避
 10.4 不必要なcons の回避
 10.5 適切なデータ構造の使用
 10.6 演習
 10.7 解答
第11章 論理プログラミング
 11.1 アイディア1:一様なデータベース
 11.2 アイディア2:論理変数のユニフィケーション
 11.3 アイディア3:自動後戻り制御
 11.4 ゼブラ問題
 11.5 後戻りとユニフィケーションの相乗効果
 11.6 破壊的ユニフィケーション
 11.7 Prolog によるProlog
 11.8 PrologLisp の比較
 11.9 歴史と参考資料
 11.10 演習
 11.11 解答
第12章 論理プログラムのコンパイル
 12.1 Prologコンパイラ
 12.2 コンパイラのエラー修復
 12.3 コンパイラの改良
 12.4 ユニフィケーションのコンパイルの改良
 12.5 ユニフィケーションのさらなる改良
 12.6 コンパイラのユーザインタフェース
 12.7 コンパイラベンチマークテスト
 12.8 プリミティブの追加
 12.9 カット
 12.10 「実際の」Prolog
 12.11 歴史と参考資料
 12.12 演習
 12.13 解答
第13章 オブジェクト指向プログラミング
 13.1 オブジェクト指向プログラミング
 13.2 オブジェクト
 13.3 総称関数
 13.4 クラス
 13.5 委譲
 13.6 継承
 13.7 CLOS:Common Lisp Object System
 13.8 CLOS による実装例:探索ツール
 13.9 CLOS はオブジェクト指向システムか?
 13.10 オブジェクト指向プログラミングの利点
 13.11 歴史と参考資料
 13.12 演習
 第14章 知識表現と推論
 14.1 知識表現言語の分類
 14.2 述語論理とその問題
 14.3 論理型言語:Prolog
 14.4 Prolog の表現力に関する問題
 14.5 述語論理の表現力に関する問題
 14.6 完全性に関する問題
 14.7 効率に関する問題:索引付け
 14.8 索引付け問題の解決法
 14.9 安全性の問題の解決法
 14.10 表現力の問題の解決法
 14.11 歴史と参考資料
 14.12 演習
 14.13 解答

第4部 高度なAIプログラム
第15章 標準形による記号計算
 15.1 多項式のための標準形
 15.2 多項式微分
 15.3 中置形式と前置形式間の変換
 15.4 多項式簡単化プログラムのベンチマークテスト
 15.5 有理式のための標準形
 15.6 有理式の拡張
 15.7 歴史と参考資料
 15.8 演習
 15.9 解答
第16章 エキスパートシステム
 16.1 不確実性への対応
 16.2 導出された事実のキャッシュ
 16.3 質問
 16.4 変数の代わりをするコンテキスト
 16.5 後ろ向き連鎖再考
 16.6 専門家との対話
 16.7 クライアントとの対話
 16.8 医療診断エキスパートシステムMYCIN
 16.9 確信度に代わるもの
 16.10 歴史と参考資料
 16.11 演習
 16.12 解答
第17章 制約充足による線画のラベル付け
 17.1 線画ラベル付け問題
 17.2 制約と探索の組み合わせ
 17.3 線画のラベル付け
 17.4 線画のエラー検査
 17.5 歴史と参考資料
 17.6 演習
第18章 探索とオセロゲーム
 18.1 ゲームのルール
 18.2 表現に関する選択
 18.3 局面の評価
 18.4 先読み探索:ミニマックス探索
 18.5 賢い探索:アルファ・ベータ探索
 18.6 ゲームの分析
 18.7 競技版オセロ
 18.8 一連のゲームによる戦略の評価
 18.9 効率の良い探索
 18.10 プレサイクル(Precycle)
 18.11 キラー手
 18.12 選手権試合のプログラム:Iago とBill
 18.13 その他の技法
 18.14 歴史と参考資料
 18.15 演習
 18.16 解答
第19章 自然言語入門
 19.1 句構造文法によるパース
 19.2 文法の拡張とあいまいさの認識
 19.3 効率の良いパース
 19.4 未知の単語
 19.5 意味表現へ踏み込んだパース
 19.6 選好を使用するパース
 19.7 文脈自由な句構造規則の問題点
 19.8 歴史と参考資料
 19.9 演習
 19.10 解答
第20章 ユニフィケーション文法
 20.1 推論としてのパース
 20.2 確定節文法
 20.3 DCG形式の単純な文法
 20.4 限定作用素(Quantifier)を持つDCG 文法
 20.5 限定作用素の有効範囲に関するあいまいさの保持
 20.6 長距離依存性
 20.7 DCG 規則の拡張
 20.8 歴史と参考資料
 20.9 演習
 20.10 解答
第21章 英語の文法
 21.1 名詞句
 21.2 修飾語
 21.3 名詞修飾語
 21.4 限定詞
 21.5 動詞句
 21.6 副詞
 21.7 節
 21.8 文
 21.9 XP
 21.10 単語
 21.11 辞書(Lexicon)
 21.12 辞書の支援
 21.13 その他のプリミティブ
 21.14 例題
 21.15 歴史と参考資料
 21.16 演習

第5部 Lisp の続き
第22章 Scheme:Uncommon Lisp
 22.1 Scheme インタープリタ
 22.2 マクロによる構文の拡張
 22.3 真正な末尾再帰インタープリタ
 22.4 Throw、Catch、Call/cc
 22.5 Call/ccをサポートするインタープリタ
 22.6 歴史と参考資料
 22.7 演習
 22.8 解答
第23章 Lispコンパイル
 23.1 真正な末尾再帰Lisp コンパイラ
 23.2 Call/cc の導入
 23.3 抽象マシン
 23.4 のぞき穴最適化(Peephole Optimizer)
 23.5 異なる語彙規約を持つ言語
 23.6 歴史と参考資料
 23.7 演習
 23.8 解答
第24章 ANSI Common Lisp
 24.1 パッケージ
 24.2 状態とエラー処理
 24.3 プリティプリンティング
 24.4 シリーズ(Series)
 24.5 Loop マクロ
 24.6 シーケンス関数(Sequence Function)
 24.7 演習
 24.8 解答
第25章 トラブルシューティング
 25.1 何も起こらない
 25.2 変数を変更してもその効果がない
 25.3 関数を変更してもその効果がない
 25.4 値がひとりでに変わる
 25.5 組み込み関数が要素を発見できない
 25.6 多値が欠落する
 25.7 宣言が無視される
 25.8 Lisp 処理系に問題がある?
 25.9 必要な関数の見つけ方
 25.10 Loop 構文
 25.11 COND 構文
 25.12 CASE 構文
 25.13 LET 構文とLET* 構文
 25.14 マクロに関する問題
 25.15 Lisp のスタイルガイド
 25.16 ファイル、パッケージ、システムの処理
 25.17 可搬性の問題
 25.18 演習
 25.19 解答

付録 この本に載っているコードを取得する方法
 A.1 FTP:ファイル転送プロトコル
 A.2 利用可能なソフトウェア

参考文献
索引
訳者あとがき

第1部でCommon Lispが紹介され、第2部で人工無脳から記号計算までをカバーしてしまう。第4部では自然言語処理などに踏み込む。第3部と第5部はLISPの話題。第3部ではPrologを、第5部ではSchemeを実装してしまうのか。読むのが楽しみ。

一方、正誤表(http://www.shoeisha.co.jp/book/errata/12043/list)のほうは、カッコがひとつ多かった、ハイフンが入っちゃった、著者のウェブサイトを書くべきところがメールアドレスだった、という3点のみ。十分に枯れた本だから、原著のほうで十分にミスが取られていたということだろうけど、それにしても900ページにわたる書籍の初版第1刷にこれだけしかミスがないというのは驚異的。