2010/06/29

syntax-rules: ext-let

CL とか Clojure の destructuring-bind があればそれで済みそうですが、Gauche にはどうやらなさげ?

syntax-rules だとこんな感じでしょうか。。

これだと、(ext-let (a b)(1)(print a)) などでも動きます。(var ...) と (val ...) が同じ長さでない場合エラーにしたいって時はどうしたら良いのでしょうか。

追記

なんとなく希望に近い動きしてるように見えますが・・・。うーん・・・頭痛くなりますね。補助マクロとして切り出せば少しはマシに見えるのかもしれませんね。


追記2

こんな感じ?ヘルパー。


プログラミングGauche

0 件のコメント:

コメントを投稿