#lambda の引数指定でキーワード引数が0個のときの :allow-other-keys がうまく動いていないようです。
#gosh> ((^ (:key :allow-other-keys kw) kw))
*** ERROR: unbound variable: kw
Stack Trace:
_______________________________________
0 kw
[unknown location]
1 (eval expr env)
at "/usr/local/share/gauche-0.97/0.9.9/lib/gauche/interactive.scm":267
gosh> ((^ (:allow-other-keys kw) kw))
*** ERROR: unbound variable: kw
Stack Trace:
_______________________________________
0 kw
[unknown location]
1 (eval expr env)
at "/usr/local/share/gauche-0.97/0.9.9/lib/gauche/interactive.scm":267
#ああ、そもそも「:keyがない:allow-other-keys」というのを考慮してないですね。Common Lispだとこれはエラーだな…どうしようかな
#:keyを使わないなら:restでいいわけだからエラー、とするか、単に:restと同じ扱いにするか。書き間違いを検出するなら前者の方がいいかな。
#うおっと、:keyのない:allow-other-keys、自分で2箇所ばかり書いてたぞい
#メソッドのformals。同じgeneric functionに属するメソッドでキーワード引数を取るやつもあるけれど、俺は無視するぜ、という意思表示。rest引数をbindしてなかったので普通に動作してた。
#むしろ:keyなしでも許す方がfixとしては簡単だな。
#キーワード引数が1個以上の場合はrestが偶数長かどうかはチェックされるので、キーワード引数が0個の場合も同様にチェックされることを期待しました。
#なるほどそういう使い方はありですね。
#