本書の表紙には、次のように書かれている:すべての手続き型プログラマとオブジェクタのための Lisp によるやさしい関数型プログラミング入門書
実は買った本ではない。図書館で借りた本だ。 難しい。
本書のお詫びと訂正 (train.gomi.info)や、左記 WEB ページからリンクされている本書の誤りの指摘の他に、私が気づいた誤植がある。
p.104 上から1行目 「再帰プリグラミング」とあるが、 正しくは「再帰プログラミング」であろう。
p.160 サンプルプログラムのコメントに lambda比較関数とあるが、このバージョンでは、 lambda 比較関数は引数ではないので、コメントとしては不適切。
p.165 のサンプルプログラムは、hanoi3 が定義されていないのでこのままでは不完全。 hanoi3 を hanoi にすればよい。別解は、 http://train.gomi.info/lisp/samples.txt にあるように、 3本ハノイの塔を解く関数を hanoi と hanoi3 に分離する。
p.168 のサンプルプログラムは SBCL ではこのままでは動かない。下から 3 行目の funcall を apply にすれば正しい結果となる。 したがって、同じページの本文の上から 5 行目
というところは、次の通り修正すべきだろう。(< (car list) p) を (funcall fun (car list) p) のように引数の関数 fun を funcall で
(< (car list) p) を (apply fun (car list) p) のように引数の関数 fun を apply で
以下の点は誤植ではないが、同じ表現が繰り返されていて冗長な個所がある。
p.202 本文2行目
図 5.54 のプログラムを見て、頭痛がしてきたかもしれません。関数型プログラマだけでなく、 他のプログラマも頭が痛くなるようなプログラムです。不要なグローバル変数があり、 そのグローバル変数があるときは引数になっていて、また同じグローバル変数が各所に出てきます。 まさに突っ込みどころ満載のプログラムです。それではこれを副作用のないプログラムにするのは無理でも、 なるべくグローバル変数を使わない、なるべく副作用が少ないプログラムにリファクタリングしていきましょう。
(以下、プログラムと使用例が掲載されている)
p.203 本文1行目
図 5.54 のプログラムは関数型プログラマだけでなく、 他のプログラマも頭が痛くなるようなプログラムです。不要なグローバル変数があり、 そのグローバル変数があるときは引数になっていて、また同じグローバル変数が各所に出てきます。 まさに突っ込みどころ満載のプログラムです。それではこれを副作用のないプログラムにするのは無理でも、 なるべくグローバル変数を使わない、なるべく副作用が少ないプログラムにリファクタリングしていきましょう。
書 名 | はじめての Lisp 関数型プログラミング |
著 者 | 五味 弘 |
発行日 | 年 月 日 |
発行元 | 技術評論社 |
定 価 | 円(税別) |
サイズ | |
ISBN | |
NDC |
まりんきょ学問所 > 関数型言語 > LISP > 五味 弘:はじめての Lisp 関数型プログラミング