[Prev] [Next] [Contents][フレーム表示] [フレーム解除

プログラミングGauche 応援する

Authors
yusei
Rui
nobsun
eji
shibata
shiro
ora
cut-sea
えんどうやすゆき
プログラミングGauche

Copyright (c) 2006-2007 Shiro Kawai, Kahua project.

http://www.oreilly.co.jp/books/9784873113487/

プログラミングGauche
Kahuaプロジェクト 著
川合 史朗 監修
2008年03月14日 発売予定
524ページ
定価3,360円
ISBN978-4-87311-348-7

Mac OS X 10.5.x (Leopard)でKahuaが動かない問題

Kahua-1.0.7.2はMac OS X 10.5.x (Leopard)でテストに失敗します。 Mac OS X 10.5.xではKahua-1.0.7.3以上を使用してください

http://www.kahua.org/show/info/Download

Windows用Gaucheインストーラ

http://sourceforge.net/project/showfiles.php?group_id=25227

上記からGauchebox-0.8.13.exeをダウンロードしてインストールしてください。 GaucheとMeadow(Windows用のEmacsエディタ)と本書のサンプルコードがインストールされます。

※ このインストーラは既存のMeadowの環境を上書きします。すでにMeadowがインストールされている場合はGauche-mingw-0.8.13.exeをインストールしてください。

サンプルコードのダウンロード

http://www.kahua.org/cgi-bin/viewvc.cgi/ProgrammingGauche/trunk/

※ 次のURLで全体を圧縮してダウンロードできます。 http://www.kahua.org/cgi-bin/viewvc.cgi/ProgrammingGauche/trunk.tar.gz?view=tar

正誤表

初版 第3刷

ページ
22 (setq scheme-program-args "-i") (setq scheme-program-args '("-i"))
122 (define (add-item! item) ... (define (add-item! player item) ...

初版 第2刷

ページ
22 (setq scheme-program-args "-i") (setq scheme-program-args '("-i"))
64 Churchの学生でだったので Churchの学生だったので
122 (define (add-item! item) ... (define (add-item! player item) ...
211 本書ではXMLの処理命令の詳細について触れませんが、RSS 2.0には例えば以下の処理命令が必要になります。<?xml version="1.0" encoding="UTF-8"?> ここではRSSのエンコーディングを"UTF-8"に設定しています。SXMLで上記の処理命令を得るには以下を記述します。 本書ではXMLの処理命令の詳細について触れませんが、「15.3 SXML」の冒頭で示したSXMLの例には以下の処理命令が含まれています。
211 *PI*要素の最初に含まれるのは大文字または小文字の'xmlや'XMLです。これはXML仕様で予約されています。 ここで*PI*要素の最初に含まれているのは小文字のxmlです。
211 ここでは文字列として"version=\"1.0\" encoding=\"UTF-8\""を記述しています。 ここでは文字列として"version=\"1.0\" encoding=\"UTF-8\""を記述しています。この記述はエンコーディングをUTF-8に設定します。この処理命令を解釈すると以下のXML宣言が得られます(脚注: XML宣言は処理命令ではありませんが、SXMLではXML宣言を得る方法がないので、この例ではやむを得ず処理命令を使ってXML宣言を出力しています。)。<?xml version="1.0" encoding="UTF-8"?>
213 (define blog-rss '(*TOP* (*PI* XML "version... (define blog-rss '(*TOP* (*PI* xml "version...
213 <?XML version... <?xml version...
214 <?XML version... <?xml version...
216 ベクタの各要の値を取得するには ベクタの各要の値を取得するには
243 (define <inherited-list> (<list>) ()) (define-class <inherited-list> (<list>) ())
262 testを評価し、結果が真ならexprを順に評価するのでした。 <条件式>を評価し、結果が真なら<式>を順に評価するのでした。
273 名前が衝突しないを作り出す 名前が衝突しない変数を作り出す
287 breader/ccを使って、 breaker/ccを使って、
290 [(syntax-rules () (syntax-rules ()
290 (_ break next lambda-expr arg-list ...) [(_ break next lambda-expr arg-list ...)
309 *load-path*追加する *load-path*追加する
311 以下に分割されたモジュールfoo.Aとfoo.B、foo.Cがあります(図20-1)。 図20-1のとおりに分割されたモジュールfoo.Aとfoo.B、foo.Cがあります。
355 Gaucheには大域変数の代わりに使える Gauche大域変数の代わりに使える
376 make-monthを使うと、 (削除)
379 (iota (days-of-month (current-date))1)) (iota (days-of-month (current-date)) 1))
417 それら得ることができます それら得ることができます
463 $ make uninstall $ sudo make uninstall
476 /home/bizenn/... /home/johndoe/...
491 reader-content ... 420 (削除)
492 split-atモジュール ... 85 split-at ... 85

初版 第1刷

ページ
xvi 20.10 RDBMを使ったスケジュールデータベース 20.10 RDBMSを使ったスケジュールデータベース
7 「そのなのは無い」 そんなのは無い」
18 真値であることを明示するために#fを返すことが 真値であることを明示するために#tを返すことが
22 (setq scheme-program-args "-i") (setq scheme-program-args '("-i"))
33 Gauche scheme interpreter, version 0.8.12 Gauche scheme interpreter, version 0.8.13
60 (引用部分の右マージンが極端に少ない) (右マージンを1文字分増やす)
64 Churchの学生だったので Churchの学生だったので
69 tree-walkのworkerが満たすべき条件はなんでしょう tree-walkのwalkerが満たすべき条件はなんでしょう
76 ())))) '()))))
79 その唯一の引数(argsのcdr)を返す その唯一の引数(argsのcar)を返す
80 (lambda (a b) (> a b) a b) (lambda (a b) (if (> a b) a b))
82 引数の並び順番を気にしなくてよい 引数の並び順を気にしなくてよい
82 キーワード引数を受け取りる手続きを作成してみましょう キーワード引数を受け取る手続きを作成してみましょう
89 再起呼出し 再帰呼び出し
117 drink portion''' drink portion
121 (set! p 3) (set! (car p) 3)
122 (define (add-item! item) ... (define (add-item! player item) ...
184 char-set-specの先頭にキャレットが置かれると char-set-specの先頭にカレットが置かれると
188 "b" ((m 'after)の戻り値) "d"
203 gosh> (define (make-accum n) (lambda (x) (set! n (+ x n)) n) gosh> (define (make-accum n) (lambda (x) (set! n (+ x n)) n))
204 gosh> (accum n) gosh> (accum 5)
209 gosh> (html:tr (map html:tr (list "日" "月" "火")) gosh> (html:tr (map html:td (list "日" "月" "火"))
209 (#0="<" tr () #1=">" (((#0# tr () #1# ("日") #2="</" tr #3="\n>") (#0# tr () #1# ("月") #2# tr #3#) (#0# tr () #1# ("火") #2# tr #3#))) #2# tr #3#) (#0="<" tr () #1=">" (((#0# td () #1# ("日") #2="</" td #3="\n>") (#0# td () #1# ("月") #2# td #3#) (#0# td () #1# ("火") #2# td #3#))) #2# tr #3#)
211 本書ではXMLの処理命令の詳細について触れませんが、RSS 2.0には例えば以下の処理命令が必要になります。<?xml version="1.0" encoding="UTF-8"?> ここではRSSのエンコーディングを"UTF-8"に設定しています。SXMLで上記の処理命令を得るには以下を記述します。 本書ではXMLの処理命令の詳細について触れませんが、「15.3 SXML」の冒頭で示したSXMLの例には以下の処理命令が含まれています。
211 *PI*要素の最初に含まれるのは大文字または小文字の'xmlや'XMLです。これはXML仕様で予約されています。 ここで*PI*要素の最初に含まれているのは小文字のxmlです。
211 ここでは文字列として"version=\"1.0\" encoding=\"UTF-8\""を記述しています。 ここでは文字列として"version=\"1.0\" encoding=\"UTF-8\""を記述しています。この記述はエンコーディングをUTF-8に設定します。この処理命令を解釈すると以下のXML宣言が得られます(脚注: XML宣言は処理命令ではありませんが、SXMLではXML宣言を得る方法がないので、この例ではやむを得ず処理命令を使ってXML宣言を出力しています。)。<?xml version="1.0" encoding="UTF-8"?>
213 (define blog-rss '(*TOP* (*PI* XML "version... (define blog-rss '(*TOP* (*PI* xml "version...
213 <?XML version... <?xml version...
214 <?XML version... <?xml version...
216 ベクタの各要の値を取得するには ベクタの各要の値を取得するには
224 (print #`",|key| : ,|value|"))が太字になっていない (print #`",|key| : ,|value|"))を太字にする
224 (vector key value)))が太字になっていない (vector key value)))を太字にする
236 (#<class <string>> #<class <sequence>> #<class <collection>> #<class <top>> (#<class <string>> #<class <sequence>> #<class <collection>> #<class <top>>)
243 (define <inherited-list> (<list>) ()) (define-class <inherited-list> (<list>) ())
250 (上から2行目が太字になっていない) (上から2行目を太字にする)
251 戻り値にreturn-valuesというローカル変数に束縛します 戻り値にreturn-valueというローカル変数束縛します
262 testを評価し、結果が真ならexprを順に評価するのでした。 <条件式>を評価し、結果が真なら<式>を順に評価するのでした。
273 aifに代表ざれる aifに代表れる
273 名前が衝突しないを作り出す 名前が衝突しない変数を作り出す
285 call/ccは1引数の手続きで、その手続きもまた1引数の手続きという仕様になっています call/ccの引数は1引数をとる手続きで、その手続きの引数もまた1引数をとる手続きという仕様になっています
287 breader/ccを使って、 breaker/ccを使って、
290 [(syntax-rules () (syntax-rules ()
290 (_ break next lambda-expr arg-list ...) [(_ break next lambda-expr arg-list ...)
295 (define-continuation (three yield) ... (print 'tree) (define-continuation (three yield) ... (print 'three)
295 gosh> (three) ... tree (合計4箇所) gosh> (three) ... three
296 gosh> (three) ... tree (合計3箇所) gosh> (three) ... three
309 *load-path*追加する *load-path*追加する
311 以下に分割されたモジュールfoo.Aとfoo.B、foo.Cがあります(図20-1)。 図20-1のとおりに分割されたモジュールfoo.Aとfoo.B、foo.Cがあります。
342 (2行目が1文字分インデントされている) (2行目を1文字分左移動)
355 Gaucheには大域変数の代わりに使える Gauche大域変数の代わりに使える
358 (:pathの行、:rw-modeの行のインデントが上の行の<fsdbm>と揃っていない (:pathの行、:rw-modeの行のインデントを、上の行の<fsdbm>と揃える)
358 (begin0の行以下3行のインデントが上のguardの行と揃ってしまっている (beginの行以下3行を1文字分右移動)
359 (:pathの行、:rw-modeの行のインデントが上の行の<gsdbm>と揃っていない (:pathの行、:rw-modeの行のインデントを、上の行の<gsdbm>と揃える)
360 (begin0の行以下3行のインデントが、p.359のguardの行と揃ってしまっている (beginの行以下3行を1文字分右移動)
362 20.10 RDBMを使ったスケジュールデータベース 20.10 RDBMSを使ったスケジュールデータベース
363,365,367,369 (ページ上部の節題がRDBMになっている) (RDBMSとする)
365 (relation-accessorの説明がない) (22.10.8の実例のあとのパラグラフの次に、p.366のschedule-getのコードの下の「結果セットから特定の列を...」の行以下5行を挿入)
365 結果セットに対しては、gauche.collectionモジュールをuseしておくと、 結果セットに対しては、gauche.sequenceモジュールをuseしておくと、
366 (p.365でrelation-accessorの説明をすべき) (schedule-getのコードの下の「結果セットから特定の列を...」の行以下5行を削除しp.365に移動)
376 make-monthを使うと、任意の<date>型の値を得てその月の1日を得るfirst-day-of-month手続きは次のとおりに書けます。 任意の<date>型の値を得てその月の1日を得るには、「ある日付を与えてその月の最初の日を求める」で定義したfirst-day-of-month手続きが使えます
376 make-monthを使うと、 (削除)
377 その日の曜日を曜日を得る その日の曜日を得る
379 (iota (days-of-month (current-date)))) (iota (days-of-month (current-date)) 1))
379 ((#f 0 1 2 3 4 5) (6 7 8 9 10 11 12) (13 14 15 16 17 18 19) (20 21 22 23 24 25 26) (27 28 29 30 #f #f #f)) ((#f 1 2 3 4 5 6) (7 8 9 10 11 12 13) (14 15 16 17 18 19 20) (21 22 23 24 25 26 27) (28 29 30 31 #f #f #f))
386 www.cgiモジュールのhttp-header手続きです。 www.cgiモジュールのcgi-header手続きです。
402 make-parametre make-parameter
403 cgi-get-parameter手続きに:convertオプションを渡して入力された文字コードを自動判定して変換しています。 cgi-get-parameter手続きに:convertオプションを渡して入力された文字コードを自動判定して変換しています。第3部「13章 文字と文字列の処理」で見たとおり、ces-convert手続きに"*JP"オプションを指定すると、入力文字列が日本語であるとみなし、文字コードを自動判定して変換してくれました。ここで指定した"*JP"の意味はces-convert手続きのオプションと同様です。
403 with-dbで囲まれた範囲内で呼び出させるcmd-change-plan手続きや with-dbで囲まれた範囲内で呼び出さるcmd-change-plan手続きや
404 第3部第3部「13章 文字と文字列の処理」で見たとおり、ces-convert手続きに"*JP"オプションを指定すると、入力文字列が日本語であるとみなし、文字コードを自動判定して変換してくれます。 (p.403に移動したので削除)
408 #`"text/html; char-set=utf-8" "text/html; char-set=utf-8"
417 それら得ることができます それら得ることができます
431 render-contextの中のリンクを生成している render-contentの中のリンクを生成している
451 (calendar-body/の定義がp.457と違っている) (p.457のcalendar-body/と同じにする)
460 (;; UTF-8 (default)から;; Shift Jisまでのコメントが太字になっている) (コメント部分はすべて平体にする)
463 $ make uninstall $ sudo make uninstall
476 /home/bizenn/... /home/johndoe/...

初版 第1刷 索引

ページ
481 :if-dose-not-exist :if-does-not-exist
481 :persistemt :persistent
483 a a/
483 abbr abbr/
483 acronym acronym/
483 address address/
483 applet applet/
483 area area/
483 b b/
483 base base/
483 bdo bdo/
483 big big/
483 blockquote blockquote/
484 body body/
484 br br/
484 button button/
484 caption caption/
484 cite cite/
484 calendar-body calendar-body/
484 calendar-head calendar-head/
485 code code/
485 colgroup colgroup/
485 dd dd/
486 del del/
486 delete-slices-of-month date-slices-of-month
486 dfn dfn/
486 div div/
486 dl dl/
486 dt dt/
486 em em/
486 Emacs / gauche-program-name ... 465 Emacs / scheme-program-name ... 465
486 embed embed/
486 fieldset fieldset/
487 font font/
487 form form/
487 frame frame/
487 frameset frameset/
487 gosh-program-name ... 465 (これを削除し、p.492を scheme-program-name ... 22,465とする)
487 GNU_LIBPATHREAD_VERSION GNU_LIBPTHREAD_VERSION
487 h1 h1/
487 h2 h2/
487 h3 h3/
487 h4 h4/
487 h5 h5/
487 h6 h6/
488 head head/
488 hr hr/
488 html html/
488 http-header ... 386 (これを削除し、p.484 cgi-get-parameterの次に cgi-header ... 386 を挿入)
488 i i/
488 img img/
488 input input/
488 ins ins/
488 kbd kbd/
489 legend legend/
489 (let-valuesがlet-optionalsの次にない) (let-valuesをlet-optionalsの次に移動)
489 li li/
489 link link/
489 meta meta/
490 noembed noembed/
490 Norving, Peter Norvig, Peter
490 noscript noscript/
490 object object/
490 ol ol/
490 optgroup optgroup/
490 option option/
490 p p/
490 param param/
491 pre pre/
491 q q/
491 qequal? ... 263 (これを削除し、p.486を equal? ... 93,95,109,114,222,263 とする)
491 rander-content ... 427,429,433,436 / rander-context ... 431 / reader-content ... 420 render-content ... 420,427,431,433,436
491 rander-selector render-selector
491 rmatch-after rxmatch-after
491 rmatch-before rxmatch-before
491 rmatch-substring rxmatch-substring
492 samp samp/
492 script script/
492 select select/
492 set-cdr! ... 121 / set-char! ... 121 set-car! ... 121 / set-cdr! ... 121
492 small small/
492 smuscheme ... 465 (これを削除し、p.485 cmuscheme ... 22, 465とする)
492 span span/
492 splist-atモジュール split-at
493 stread-take stream-take
493 string-? ... 183 (これを削除し、string=? ... 96,183,221 とする)
493 strong strong/
493 style style/
493 sub sub/
493 sup sup/
493 table table/
493 tbody tbody/
493 td td/
493 textarea textarea/
493 tfoot tfoot/
493 th th/
493 thead thead/
493 title title/
493 tr tr/
493 tt tt/
494 tree-map-max! tree-map-max
494 tree-map-min! tree-map-min
494 (tree-map-pop-max!とtree-map-pop-min!がない) (tree-map-minの次にtree-map-pop-max! ... 225 / tree-map-pop-min! ... 225を挿入)
494 ul ul/
494 Unicodeコードポイント ... 19,34 / Unicodeポイント ... 171,173,174 Unicodeコードポイント ... 19,34,171,173,174
494 var var/
495 www.cgi-testモジュール www.cgi.testモジュール
495 延滞リスト ... 225 (これを削除し、p.498のダブルクォートの次に 遅延リスト ... 225 を挿入)
500 モジュール / splist-at ... 85 (splist-at ... 85を削除)
501 リスト / 延滞リスト リスト / 遅延リスト

間違いの指摘は下記URLにお願いします

[0]「つづら」への参加方法

プログラミングGaucheの正誤表管理はLife Hacking System「つづら」で行います。

間違いの指摘は、まず「つづら」のアカウントを取得してください。

[1]アカウント取得→[2]ログイン→[3]書き込み

上記手順で参加おねがいします。

[1] アカウント取得

まず「つづら」のアカウントを取得します。

http://tudura.kahua.org/

上記URLをアクセスして、 トップページ右上の[参加したい方]というリンクをクリックしてください。

アカウント取得画面で参加したいメールアドレスを入力して登録メールを自分宛に送信してください。

参加登録メールが届いたら、そこに書かれたURLをアクセスしてニックネーム、 新たなパスワードを入力してアカウントを登録してください。

[2] ログイン

[1]で登録したメールアドレスとパスワードでログインしてください。

http://tudura.kahua.org/

上記URLでメールアドレスパスワードを入力してログインしてください。

[3] ログインしていない状態での書き込み

もしログインしていない状態で書き込むと、 ログイン画面が表示されます。 登録したメールアドレスとパスワードを入力してログインしてください。


目次


このサイトについて|ヘルプ|Q&A|個人情報保護|プライバシーポリシー|利用規約|コメント・トラックバック規約|削除規程|広告掲載
Copyright (c) 2005-2007 Time Intermedia Corporation