On Lisp

個数:1
紙書籍版価格
¥4,180
  • 電子書籍

On Lisp

  • ISBN:9784274066375

ファイル: /

内容説明

LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説
Lispは近年、強力で実用的なプログラミング言語として見直されている。本書の原書であるOn Lispは、Lispの強力さの源であるマクロのプログラミングを徹底的に解説する名著である。
本書は、野田開氏が著者Paul Graham氏の許諾を得て訳し、インターネットで公開していた日本語訳をもとに、さらなる推敲を加えて書籍として出版するもの。

目次

前書き

第1章 拡張可能なプログラミング言語
1.1 進化によるデザイン
1.2 ボトムアッププログラミング
1.3 拡張可能なソフトウェア
1.4 Lispの拡張
1.5 なぜ(またはいつ)Lispか

第2章 関数
2.1 データとしての関数
2.2 関数の定義
2.3 関数を引数にする
2.4 属性としての関数
2.5 スコープ
2.6 クロージャ
2.7 ローカル関数
2.8 末尾再帰
2.9 コンパイル
2.10 リストから作られる関数

第3章 関数プログラミング
3.1 関数型のデザイン
3.2 命令型プログラミングの裏返し
3.3 関数型インタフェース
3.4 インタラクティブプログラミング

第4章 ユーティリティ関数
4.1 ユーティリティの誕生
4.2 抽象化への投資
4.3 リストに対する操作
4.4 検索
4.5 マッピング
4.6 入出力
4.7 シンボルと文字列
4.8 密度

第5章 返り値としての関数
5.1 Common Lispは進化する
5.2 直交性
5.3 関数の値のメモ化
5.4 関数を合成する
5.5 Cdr部での再帰
5.6 部分ツリーでの再帰
5.7 いつ関数を作るべきか

第6章 表現としての関数
6.1 ネットワーク
6.2 ネットワークのコンパイル
6.3 展望

第7章 マクロ
7.1 マクロはどのように動作するか
7.2 バッククォート
7.3 単純なマクロの定義
7.4 マクロ展開の確認
7.5 パラメータリストの分配
7.6 マクロのモデル
7.7 プログラムとしてのマクロ
7.8 マクロのスタイル
7.9 マクロへの依存
7.10 関数からマクロへ
7.11 シンボルマクロ

第8章 いつマクロを使うべきか
8.1 他の手段では不可能なとき
8.2 マクロと関数どちらがよい?
8.3 マクロの応用例

第9章 変数捕捉
9.1 マクロ引数の捕捉
9.2 自由なシンボルの捕捉
9.3 捕捉はいつ起きるのか
9.4 適切な名前によって捕捉を避ける
9.5 事前評価によって捕捉を避ける
9.6 Gensymによって捕捉を避ける
9.7 パッケージによって捕捉を避ける
9.8 その他の名前空間における捕捉
9.9 変数捕捉にこだわる理由

第10章 マクロのその他の落し穴
10.1 評価の回数
10.2 評価の順番
10.3 マクロ展開関数の副作用
10.4 再帰

第11章 古典的なマクロ
11.1 コンテキストの生成
11.2 with-系マクロ
11.3 条件付き評価
11.4 反復
11.5 複数の値にわたる反復
11.6 マクロの必要性

第12章 汎変数
12.1 汎変数という概念
12.2 複数回の評価に関わる問題
12.3 新しいユーティリティ
12.4 さらに複雑なユーティリティ
12.5 インバージョンを定義する

第13章 コンパイル時の計算処理
13.1 新しいユーティリティ
13.2 例:Bezier曲線
13.3 応用

第14章 アナフォリックマクロ
14.1 アナフォリックな変種オペレータ
14.2 失敗
14.3 参照の透明性

第15章 関数を返すマクロ
15.1 関数の構築
15.2 Cdr部での再帰
15.3 部分ツリーでの再帰
15.4 遅延評価

第16章 マクロを定義するマクロ
16.1 省略
16.2 属性
16.3 アナフォリックマクロ

第17章 リードマクロ
17.1 マクロ文字
17.2 マクロ文字のディスパッチング
17.3 デリミタ
17.4 いつ何が起きるのか

第18章 分配
18.1 リストに対する分配
18.2 他の構造
18.3 参照
18.4 マッチング

第19章 クエリコンパイラ
19.1 データベース
19.2 パターンマッチングクエリ
19.3 クエリインタプリタ
19.4 束縛に関する制限
19.5 クエリコンパイラ

第20章 継続
20.1 Schemeの継続
20.2 継続渡しマクロ
20.3 Code-WalkersとCPS変換

第21章 マルチプロセス
21.1 プロセスの抽象化
21.2 実装
21.3 「早い」だけではないプロトタイプ

第22章 非決定性
22.1 概念
22.2 探索
22.3 Schemeでの実装
22.4 Common Lispでの実装
22.5 カット
22.6 真の非決定性

第23章 ATNを使ったパージング
23.1 背景
23.2 形式的な説明
23.3 非決定性
23.4 ATNコンパイラ
23.5 ATNの例

第24章 Prolog
24.1 概念
24.2 インタプリタ
24.3 規則
24.4 非決定性の必要性
24.5 新しい実装
24.6 Prologの機能の追加
24.7 例
24.8 コンパイルという言葉の意味

第25章 オブジェクト指向Lisp
25.1 Plus ca Change――姿かたちは変われども
25.2 素のLispによるオブジェクト
25.3 クラスとインスタンス
25.4 メソッド
25.5 補助メソッドとメソッド結合
25.6 CLOSとLisp
25.7 いつオブジェクトを使うのか

付録 パッケージ
後注
訳者後書き
索引

感想・レビュー

※以下の感想・レビューは、株式会社ブックウォーカーの提供する「読書メーター」によるものです。

baboocon

8
超速読で読了。webベンチャーを成功させた経験もあるLispハッカーによるLispの応用書。Lispは難しいと思いつつ、あの括弧の多い構文も見慣れてくると美しく思える不思議…。マクロにかなりの比重をおいて書かれているが、やはり難解なので何回も読まないとダメだな…。2017/02/17

lambda

3
誰も触れないけど、表紙も美しい2010/07/29

jiroukaja

1
前より早く読み終わった。最初に読んだときより気づく事が多かった気がする。もう1回くらい読むと思う。2014/04/07

river125

1
4年越し。何度も挫折を繰り返し、その合間にScheme、Gauche、Clojureを勉強して力をつけ、ようやく読み終えた。でも、すべて吸い尽くしたとはとても言えない。白状すると、掲載コードを追いかけるのは途中でやめてしまったので、読む目的は、マクロを書くテクニックを修得することから、マクロが実現する抽象性とその応用を知ることに変わった。■それでも十分、読む価値あり。ラストの、継続、非決定性、ATNパーサ、Prologコンパイラと続く流れは圧巻だった。継続や非決定性を、(HaskellやSchemeの……2013/10/26

jiroukaja

1
山の高さだけは分かった。再び読み直します。2012/01/11

外部のウェブサイトに移動します

よろしければ下記URLをクリックしてください。

https://bookmeter.com/books/42479
  • ご注意事項

最近チェックした商品