プログラミング Gauche - 7 章さらにつづき

P.83 キーワード引数


(define (person . args)
(let-keywords args ((name "Anonymous")
(age "unknown"))
(print name " is " age " year(s) old.")))

ERROR: unbound variable: age
Stack Trace:
_______________________________________
0 (age "unknown")
At line 178 of "(stdin)"
1 (name "Anonymous")
At line 177 of "(stdin)"

と、エラーになってしまう。let-keywords* を使うと問題なく動くけれど、なぜエラーになるのかが解らない。エラーから察すると、print の時点で name と age が束縛されていないようだけれど、そんなことってあるのでしょうか。
テキストの typo かと思ったのですが、Kahua のページからコピペしても動きません。
同じような問題に遭遇している人がいるかと思い、gauche let-keywords でググって見たところ

キーワード引数のチェックを行うパッチを作成しました。大きなパッチなので、概要 を説明します: http://t-code.org/gauche-0.8.9_let-keywords.diff

もしやと思いバージョンをチェックしてみました。

$ gosh -V
Gauche scheme interpreter, version 0.8.8 [utf-8,pthreads]

これが原因みたいです。今日に限ってデスクトップの Gutsy マシンで勉強していたのがまずかったようです。いつも喫茶店に持ち込んでいるノートは Hardy ベータで、gosh のバージョンは 0.8.12 でした。Ubuntu Gutsy で本書を勉強する方はバージョンに留意する必要があるかもしれません。