リスト遊び -- Emacs で学ぶ Lisp の世界 -- 山本和彦 初版(2000年6月1日)の誤植 更新:2000年6月21日 *** p23 Emacs Lisp プログラミングの秘訣 誤:「ます落書き帳」 ^^ 正:「まず落書き帳」 *** p38 Coffeep 誤:「=> (sherry wine port))」 ^ 正:「=> (sherry wine port)」 *** p48 上 誤:「and は 1 つ以上の式を取り」 ^ 正:「and は 0 つ以上の式を取り」 誤:「or は 1 つ以上の式を取り」 ^ 正:「or は 0 つ以上の式を取り」 ちなみに、 (and) => t (or) => nil となる。 p40 で出てくる +、-、* も引数は 0 個以上。 (+) => 0 (-) => 0 (*) => 1 (和田英一さん) *** p55 上から 9? 行目 誤:「で計算できること意味しています。」 ^ 正:「で計算できることを意味しています。」 (和田 Hiroyuki さん) *** p60 上から 8 行目 誤:「ここで memq がリストを第2引数にリストを取ることを思い出せば、」 ^^^^^^^^ 正:「ここで memq が第2引数にリストを取ることを思い出せば、」 *** p64 p55 のプログラムと定義域が異なる 誤: static int fibonacci(int n) { if (n == 0) return 0; else if (n == 1) return 1; else return (fibonacci(n - 1) + fibonacci(n - 2)); } 正: static int fibonacci(int n) { if (n == 1) return 1; else if (n == 2) return 1; else return (fibonacci(n - 1) + fibonacci(n - 2)); } *** p70 memq* の定義 誤: (defun memq* (x set) (cond ((null set) nil) ((consp (car set)) (or (memq* x (car set)) (memq* x (cdr set)))) ((eq x (car set) t)) ^^^^^ (t (memq* x (cdr set))))) 正: (defun memq* (x set) (cond ((null set) nil) ((consp (car set)) (or (memq* x (car set)) (memq* x (cdr set)))) ((eq x (car set)) t) (t (memq* x (cdr set))))) *** p86 let の書式 誤: (let ((変数1 値1)(変数2 値2) 変数3 変数4 ...)) ^ 式1 式2 ... ) 正: (let ((変数1 値1)(変数2 値2) 変数3 変数4 ...) 式1 式2 ... ) (和田 Hiroyuki さん) *** 以上