正誤表


提案は 正誤表.案 へお願いします。


第1刷


訳者序文

p.ix[2刷修正済み]

「川合史郎」

「川合史朗」(shiroさん、すみません)


第4章

p.41 4.3節(NANRIさん報告ありがとうございます)[2刷修正済み]

小数点数の「せんぶんのいち」と同じ

小数点数の「いちまんぶんのいち」と同じ 


第10章

p.121 表10.2の3行目第1列 (亀田さん報告ありがとうございます)[2刷修正済み]

"foobar"

"foo\bar" (バックスラッシュが1つ足りない)

p.122 最後の段落の1行目[2刷修正済み]

文字の両端

文字列の端


第16章

p.190 脚注9[2刷修正済み]

実効メソッドの構築は時間のかかる処理に思えるけど、この処理を効率的にすべく試みたCommon Lispの処理系はあまり多くない。主な戦略は、実効メソッドをキャッシュして将来の同じ型の引数の呼び出しが直接利用できるようにするというものだ。

効果的な方法の構築には時間がかかるように思えるが、これを効率的にする高速なCommon Lisp処理系の開発に多大な労力が割かれてきた。主な戦略は、実効メソッドをキャッシュして将来の同じ型の引数の呼び出しが直接利用できるようにするというものだ。

p.192 2段落めの最後から2行目[2刷修正済み]

特殊関数

総称関数


第19章

p.226 2段落めの4〜5行目にかけて[2刷修正済み]

フロー

欠陥

p.234 中ほど[2刷修正済み]

コンディションを通知するもう1つの関数WARNはコンディションシステム上に作られたエラーとは違ったプロトコルの例になっている。ERRORのようにWARNもSIGNALを使ってコンディションを通知する。しかし、SIGNALが戻ってきても、WARNはデバッガを起動せず、ただコンディションを*ERROR-OUTPUT*に出力してNILを返し、WARNの呼び出し元に処理を返す。同時に、WARNはSIGNALの呼び出しのまわりでMUFFLE-WARNINGという再起動を確立し、これをWARNのコンディションハンドラが使うことでWARNは何も出力せずに戻る。再起動関数MUFFLE-WARNINGは、対応する再起動を探して起動するが、対応する再起動が見つからなかった場合はCONTROL-ERRORを通知する。WARNで通知されたコンディションを処理する方法はほかにもいくつかあり、まるでエラーであるかのように処理すればコンディションハンドラで警告をエラーに「昇格」させることもできる。

コンディション通知関数にはWARNという関数もある。この関数によって、コンディションシステムの上に違う種類の手続きを構築することができる。WARNはERRORと同じく、SIGNALを呼んでコンディションを通知する。しかしWARNはSIGNALが戻ってきてもデバッガを起動しない。コンディションを*ERROR-OUTPUT*に印字してNILを戻し、呼び出し元が処理を続けられるようにする。WARNはSIGNALを呼ぶ際に、MUFFLE-WARNINGという名前の再起動も確立する。これをコンディションハンドラから呼び出せば、WARNは何も印字せずにNILを返す。再起動関数MUFFLE-WARNINGは、MUFFLE-WARNINGという名前の再起動を探して呼び出す。対応する再起動が存在しない場合はCONTROL-ERRORを通知する。もちろんWARNで通知されたコンディションを処理する方法はほかにもいくつかあり、まるでエラーであるかのように処理すれば、コンディションハンドラで警告をエラーに「昇格」させることもできる。


第20章

p.250 4行目(←正誤表.案)[2刷修正済み]

またはコンパイルされたフォームと等価なもの

またはフォームのコンパイルされたものと等価なもの

p.250 下から15行目(←正誤表.案を受けて再修正)[2刷修正済み]

トップレベルフォームは、実行されるコードへのコンパイルがFASLのロード時に行われる。

トップレベルフォームをコンパイルしてできたコードは、FASLのロード時に実行される。

p.250 下から10行目[2刷修正済み]

MACROLETやSYMBOL-MACROLETも

MACROLETやSYMBOL-MACROLETに直接現れるフォームも

p.250 下から8行目[2刷修正済み]

MACROLETやSYMBOL-MACROLETにコンパイルされたコードに残っている仕事は何もない

コンパイルされたコードにはMACROLETやSYMBOL-MACROLETの痕跡は何も残らない

p.250 下から3行目[2刷修正済み]

ほとんどのフォームがコンパイルされるのは、トップレベルフォームおよび非トップレベルフォームとしてコンパイルされるのと同じタイミングだ。 しかしEVAL-WHENのセマンティクスでは、トップレベルフォームとしてコンパイルされるか非トップレベルフォームとしてコンパイルされるか、もしくは単純に評価されるかに加えて、situationに列挙された状況との組み合わせによってコンパイルされるタイミングが決まる。

ほとんどのフォームはトップレベルフォームでも非トップレベルフォームでも同じものにコンパイされるが、EVAL-WHENのセマンティクスはトップレベルフォームとしてコンパイルされるか非トップレベルフォームとしてコンパイルされるか、もしくは単純に評価されるかに加えて、situationに列挙された状況との組み合わせによって決まる。


第22章

p.270 本文下から9行目(←正誤表.案)[2刷修正済み]

反復したい値が集合として異なっている場合があるので少し複雑だ。

反復したいであろう値にはさまざまなものがあるので少し複雑だ。

p.272 最後の段落 2行目(←正誤表.案)[2刷修正済み]

forやonの

forとonによる


第23章

p.285 最後の行[2刷修正済み]

2番目のx引数

2番目の引数

p.287 7行目(←正誤表.案)[2刷修正済み]

基本的な方針は、与えられたメッセージに含まれる特徴を抽出して分別し、個々の特徴についてそれを含むメッセージがスパムである確率を計算して、その全確率を組み合わせてメッセージの合計スコアを出すというものだ。

基本的な方針は、与えられたメッセージに含まれる特徴を抽出し、個々の特徴についてそれを含むメッセージがスパムである確率を計算して、その全確率を組み合わせてメッセージの合計スコアを出すことで分類するというものだ。

p.287 13行目(←正誤表.案)[2刷修正済み]

その特徴を持つスパムのメッセージと、その特徴を持つすべてのメッセージとの比

その特徴を持つすべてのメッセージと、その特徴を持つスパムのメッセージとの割合

p.287 下から5行目(←正誤表.案)[2刷修正済み]

スパムかハムかの全体確率とは独立している。

スパムかハムかの全体確率とは関係ない。

p.288 第3段落1行目(←正誤表.案)[2刷修正済み]

何らかの形で … 得点データを因子に持つ

… データ点の個数を何らかの形で因子とする

p.288 第3段落2行目(←正誤表.案)[2刷修正済み]

データを事前知識や仮定として用いる

データを事前知識ないし仮定に組み込む

p.289 第2段落2行目(←正誤表.案)[2刷修正済み]

分類されたメッセージ

分類しようとしているメッセージ

p.289 第3段落9行目(←正誤表.案)[2刷修正済み]

小さい確率が少なすぎるからだ

確率の小さい特徴が多すぎるからだ


第24章

p.299 脚注2(←正誤表.案)[2刷修正済み]

したがって移植性を意図したファイルフォーマットでは、特定のマシンや言語におけるメモリ内の実際のデータ表現にマップさせ得る全データ型について、正準表現(canonical representation)を規定しなければならない。

したがって移植性を意図したファイルフォーマットでは、特定のマシンや言語におけるメモリ内の実際のデータ表現にマップさせ得る正準表現(canonical representation)を、利用する全データ型について規定しなければならない。

p.304 末尾(←正誤表.案)[2刷修正済み]

クラスと、そのクラスおよび

クラスと、そのクラスのインスタンスおよび

p.308 本文13行目(←正誤表.案)[2刷修正済み]

read-valueに特定化された

read-valueに特定化した

p.308 本文17行目(←正誤表.案)[2刷修正済み]

それからid3-tagという型の名前に特定化したread-valueメソッドをdefine-binary-classに生成させ、最初の引数に適切なスロットの型を渡してread-valueを呼び出せば、そのメソッドが実装されるようになる。

それからid3-tagという型の名前に特定化したread-valueメソッドをdefine-binary-classに生成させることができる。このメソッドは、最初の引数に適切なスロットの型がくるread-valueの呼び出しとして実装される。

p.311 本文13行目[2刷修正済み]

どの型をread-valueに渡xすか決めるために

どの型をread-valueに渡すか決めるために

p.311 本文17行目(←正誤表.案)[2刷修正済み]

そして、直接インスタンス化することはないが、read-valueでデータを読むにはどのクラスを生成するかを判別する「抽象」クラスを定義する、別のマクロdefine-tagged-binary-classを書く。

そして、直接はインスタンス化しない「抽象」クラスを定義する別なマクロdefine-tagged-binary-classを書く。その抽象クラスが、生成するクラスの種類を決定するのにどれだけのデータを読めばいいかを知っているread-valueメソッドにより特定化されるようにする。

p.311 下から12行目(←正誤表.案)[2刷修正済み]

read-valueメソッドとwrite-valueメソッドを変更し、サブクラスの生成されるメソッドが継承元のスロットを読み書きするのに、スーパークラスのメソッドを使えるようにする必要がある。

read-valueメソッドとwrite-valueメソッドを変更し、サブクラスの一部として生成されたメソッドが、継承したスロットの読み書きに、スーパークラスを定義するときに生成されるメソッドを使えるようにする必要がある。

p.311 下から8行目(←正誤表.案)[2刷修正済み]

あるオブジェクトはスーパークラスのフィールドを埋めるメソッドにインスタンス化し、他のオブジェクトはサブクラスのメソッドがインスタンス化してスロットを埋めるというようなことができない。

スーパークラスの読み込みに責任のあるメソッドに1つのオブジェクトをインスタンス化させながら、一方でサブクラスのメソッドが別のオブジェクトをインスタンス化してスロットを埋めるようなことができない。

p.312 本文6行目(←正誤表.案)[2刷修正済み]

PROGNにより、クラス優先順位リストで最も特定的でないクラスから特定的なものへと順番に特定化されたメソッドが実行されるように結合される。最も特定的でないクラスに特定化されたメソッドが最初に実行され、そのクラスで定義されたスロットに対して読み書きを行い、それから次に特定的でないサブクラスに特定化されたメソッドが実行されるという具合だ。特定的なクラスに対する...

PROGNメソッド結合により、クラス優先順位リストで最も特定的でないクラスに特定化されたメソッドが最初に実行され、そのクラスで定義されたスロットに対して読み書きが行われ、それから次に特定的でないサブクラスに特定化されたメソッドが実行される、という具合に適用可能なすべてのメソッドが結合される。特定のクラスに対する...

p.312 本文最終行(←正誤表.案)[2刷修正済み]

でメソッドを定義するだけだ。

をメソッドの定義に使うだけだ。

p.314 本文6行目(←正誤表.案)[2刷修正済み]

そしてマクロによって生成される式に ... define-binary-classによって生成される式

そしてマクロによって生成される展開形に ... define-binary-classによって生成される展開形

p.315 24.11から3行目(←正誤表.案。「特定化された」の訳抜けが本質的なミス)[2刷修正済み]

まず、構造が開始される値をどうやって読むかを判別できるメソッド

まず、構造の先頭の値をどうやって読むか知っている特定化されたメソッド

p.315 24.11から11行目(←正誤表.案)[2刷修正済み]

フォームが返すクラスの名前は、... スロットの名前で初期化引数を

フォームが返す名前のクラスは、... スロット名に対応した初期化引数を

p.315 24.11から13行目(←正誤表.案)[2刷修正済み]

タグ付きクラスをサブクラスに持つクラス

タグ付きクラスのサブクラスであるクラス


第25章

p.321(小松さん報告ありがとうございます)[2刷修正済み]

ISP (International Organization for Standardlization)

ISO

p.325[2刷修正済み]

それらの数値をxどうやって

それらの数値をどうやって


第26章

p.355 脚注9(←正誤表.案)[2刷修正済み]

自分で空白を追加せずにHTMLをインデントすることができる。

コードを適切にインデントしてもHTMLに空白が追加されない。

p.366 3行目(←正誤表.案)[2刷修正済み]

PROGNの中で展開されるようにしている。

PROGNに展開しなければならない。

p.366 最後の段落の2行目(←正誤表.案

それぞれをparam-bindingで生成するコードの断片を集める必要がある。

それぞれに対しparam-bindingで生成するコードの断片を集める必要がある。

p.366 末尾(←正誤表.案)[2刷修正済み]

DESTRUCTURING-BIND使うことでparam-bindingを分解

DESTRUCTURING-BINDを使うことでparamsを分解


第27章

p.373 1行目(←正誤表.案)[2刷修正済み]

interned-stringの名前に特定化された

interned-stringという名前に特定化された

p.373 末尾(←正誤表.案。行→列のミスが本質的な修正対象)[2刷修正済み]

この関数が、各行について正規化したデフォルトの属性リストを組み立てる。行の値としては、…

この関数が、各列について、正規化された値からなる属性リストを組み立てる。列の値としては、…

p.374 末尾(←正誤表.案)[2刷修正済み]

情報でMP3データベースをロード

情報をMP3データベースにロード

p.375 13行目ほど(←正誤表.案)[2刷修正済み]

その列の名前でソート

その名前の列でソート

p.376 中ほどの本文4行目(←正誤表.案)[2刷修正済み]

MAPに渡す関数の引数

MAPの引数として渡す関数

p.376 中ほどの本文5行目(←正誤表.案)[2刷修正済み]

ある列を持つ行だけ

ある列だけを持つ行

p.378 最後の段落1行目(←正誤表.案)[2刷修正済み]

inは、特定の列が指定した値の集合になっているような行にマッチさせる関数を返す。

inは、特定の列が指定した値の集合に含まれているような行にマッチさせる関数を返す。


第28章

p.383 中ほど(←正誤表.案)[2刷修正済み]

ストリームに現在演奏中の曲目をどのメタデータに埋め込むかといったメカニズムも含めたレスポンスの書式だ。

現在演奏中の曲目に関するメタデータをストリームに埋め込むメカニズムも含めたレスポンスの書式だ。

p.383 最下行(←正誤表.案)[2刷修正済み]

nバイトごとに分割されたメタデータのチャンクを埋め込むというものだ。

メタデータのチャンクをnバイトごとに埋め込むというものだ。


第29章

p.399 本文8行目[2刷修正済み]

インデックスが範囲に入る

インデックス0が範囲に入る

p.406 本文最後の行[2刷修正済み]

この関数は:song列を特別に処理し

この関数は:songの行を特別に処理し


第30章

p.399 最後のコード片[2刷修正済み]

output

:output (冒頭のコロン抜け)


第31章

p.431 本文2段落目の4行目[2刷修正済み]

遭遇したときも、

遭遇したら、

p.432 本文1段落目全体[2刷修正済み]

総称関数 ... 完了だ。

すべての仕事は、総称関数op->codeの引数opを ... 特定化したメソッドによってなされる。

p.435 本文2段落目の6行目[2刷修正済み]

他の文字列と同様に出力される。

他の文字列と同様に出力される。これによりemit-htmlに渡されFOO内で:formatが使えるようになる。

p.436 本文2段落目の3行目[2刷修正済み]

特殊オペレータの名前を表すhtml-special-operatorエントリの属性リストへの追加も、このマクロが責任を持つ。

特殊オペレータ名の属性リストにhtml-special-operatorのエントリを追加することも、このマクロが責任を持つ。

p.436 本文3段落目の3行目[2刷修正済み]

この場合は1つのファイル内でdefine-html-special-operatorを使って定義しただけの特殊オペレータを使いたい場合に必要になる。

これが必要になるのは、1つのファイル内でdefine-html-special-operatorを使ってから、いま定義した特殊オペレータを同じファイル内で使いたい場合である。

p.440 本文下から4行目[2刷修正済み]

1つのフォームかHTMLのマクロのいずれかを生成する必要がある。

HTMLのマクロのいずれかのフォームを生成する必要がある。


第32章

p.451 中ほど[2刷修正済み]

局所的なコードの最適化で必要以上の仕事が何も得られないコードバミング*7に陥ってしまう。

あとはコードバミング*7することになる。

p.451 脚注7[2刷修正済み]

余計なことは一切しないコードのこと。

無駄をそぎ落とす局所的な最適化作業。


Last modified : 2015/05/20 22:26:23 PDT