プログラミングGauche って、マクロの章すごく少ないですよね・・・。syntax-rules の練習問題というか例題というか、そういうのをたくさん見たい。ソース読め?
追記
コメント欄より。cond-set!の2番目の節はおそらくやりたいことと違うのではないかと推察します。修正してみました。
init2だけが複数扱いになり、var2が繰り返されます。
(cond-set! a b c d e f g)
は
(if a (begin (set! b c) (set! d e) (set! d f) (set! d g)))
になります。(2番目以降、set!されてるのはすべてd)
cond-set!の2番目の節はおそらくやりたいことと違うのではないかと推察します。
返信削除init2だけが複数扱いになり、var2が繰り返されます。
(cond-set! a b c d e f g)
は
(if a (begin (set! b c) (set! d e) (set! d f) (set! d g)))
になります。(2番目以降、set!されてるのはすべてd)
マクロはちゃんと書こうとするとそれだけで大変になりそうだったので、『プログラミングGauche』では深入りを避けました。Schemeマクロのとってもディープな話はOleg Kiselyovさんのページ http://okmij.org/ftp/Scheme/macros.html をどうぞ。(注: 同ページにあるマクロはsyntax-rulesを限界まで酷使するんですが、Gaucheの実装は弱っちいので破綻します; 具体的にはマクロを定義するマクロでうまくいかないところが出ます)
試してみたところ、仰る通りの結果でした。修正してみます!
返信削除>マクロはちゃんと書こうとするとそれだけで大変になりそうだったので、『プログラミングGauche』では深入りを避けました。
そうだったんですか。確かにマクロまで詳細に書かれていたら、本の厚みがすごいことになりそうですね。。
Oleg Kiselyovさんって、The Reasoned SchemerとかSXMLの方ですよね?教えて頂いたページを読んでみます!ありがとうございます!