2007年12月02日
twitterのとあるクラスタで生駒ブームが来たのをきっかけに、生駒で読書会を開催しました。
http://www.lingr.com/room/gbgOsk9L9CX/archives/2007/12/02
※第2回(3/2)のご案内はこちら
生駒でやるという事自体が壮大なネタであるにもかかわらず、予想を大幅に上回る6名が参加。
- @ujihisaさん
- @yharaさん
- 宮坂さん
- @yuki_neko_nyanさん (@y12n)
- @makさん
- @naoya_t
わざわざ県外から来られたギークの方々も。
LiveCoding#5の余韻が残る翌日の日曜日に設定した結果、2次会で@cuzic邸に泊まったujiとyhにとっては事実上の3次会で、ちょっとお疲れのようでした。昨日東京からLiveCodingに参加していたdankogaiさんは今朝早く帰ってしまったそうで残念です。
読書会・勉強会にはいくつか参加したことがありますが、主催は今回が初めてです。
会場(公民館)の予約、お菓子(うなぎパイほか)や飲み物の買い出し、名札代わりに使う画用紙とマジック(LiveCodingに出た人は昨日の名札でOK)など。あと延長ケーブル。
Kanasan.JSとは違い、ネット環境もプロジェクタもありません。アドエスでダイヤルアップした64kbpsだけが頼りなのでustream中継もなしです。
きょうのお題
> R. Kent Dybvigの「Three Implementation Models for Scheme (1987)」(3imp.pdf) に出てくるコードを写経してGaucheで動かしてみよう!
当初3章からのつもりでしたが、yharaさんの薦めで2章の最後、p.40のコードから写すことにしました。
- record, record-case, recurの定義が必要。yharaさんの定義ファイルを回す。
- → define-syntaxの書き方講座(by @y12n)
- "env.scm"がない、とか言われる → extendは名前を変えないとダメ。
- (use gauche.test) でテストを書こう(by @y12n)
- lambdaのbodyに式を1つしか書けないので、set!のテストが難しい(けど頑張った)
- 以下のテストコード(by @naoya_t)を配布して、みんなのテストが通ったところで次へ。
^(use gauche.test)
^(test-start "Chapter 2")
^(test-section "page 40")
^(test* "symbol?" 2 (exec 'b '(((a b c) . (1 2 3)))))
^(test* "quote" 'hello (meta '(quote hello)))
^(test* "lambda" 3 (meta '((lambda (x) x) 3)))
^(test* "if" 5 (meta '(if #t 5 0)))
^(test* "set!" 7 (meta '((lambda (t) ((lambda (x) t) (set! t 7))) 0)))
^(test* "call/cc" 11 (meta '(((call/cc (lambda (c) c)) (lambda (x) x)) 11)))
^(test* "pair:else?" 13 (meta '((lambda (f x) (f x)) (lambda (x) x) 13)))
^(test* "else?" 17 (meta 17))
^(test-end)
↓↓↓↓↓
^% gosh p41.scm
^Testing Chapter 2 ...
^
^test symbol?, expects 2 ==> ok
^test quote, expects hello ==> ok
^test lambda, expects 3 ==> ok
^test if, expects 5 ==> ok
^test set!, expects 7 ==> ok
^test call/cc, expects 11 ==> ok
^test pair:else?, expects 13 ==> ok
^test else?, expects 17 ==> ok
^passed.
伝説のtwittererのご指摘どおり、正しく動けば素数が並ぶようにテストを書いてみました。
- なぜか猫の写真(by @ujihisa)も回される。
&ref(http://ntzone.info/misc/ujineko.jpg,400,300)
続いて3章p.56のコードの写経。
compileしてフレームが生成されるところまでは皆さん確認できたようですが、テストまでは出来ず時間切れとなり残念でした。
しかし、この読書会で6人のScheme実装者を世に送り出すことができました。(yharaさんは既にBiwaSchemeを作られていますが)
今回は、壮大なネタにお付き合い頂きありがとうございました。>総勢6名の豪華な参加者の皆様
第2回があるかどうかは未定ですが・・・(要望があればいつでもやります→開催決定!3/2@生駒市東地区公民館(図書会館内))


