Gauche > Archives > 2013/06/28

2013/06/28 09:30:55 UTCyhara
#
つまり、渡されたASTをトラバースするような類のマクロを書くとき、引数内にMacroは含まれないことが保証されるが、Special Formは含まれている可能性がある、という違いがありますね。(そういうマクロを書くことがあるか分かりませんが…)
2013/06/28 10:24:27 UTCshiro
#
おおまかにはそういう理解で良いですが、現実の実装では若干グレーゾーンがあります。「マクロで書けるけれど効率のため組み込みにしている」というケースがあるので。そういうspecial formは、ユーザ側で仕様どおりのマクロを書いて勝手に展開してしまってもプログラムの動作に影響はありません。
#
Gauche自身には「式に含まれる全てのマクロを展開しつくす」という関数は備わっていないので、「引数にマクロが含まれないことが保証される」ようなマクロの仕組みを作るなら、自分で式をトラバースして見つけたマクロを展開するルーチンを書くことになります。だとしたら、Gaucheでspecial formになっているものでも仕様上マクロで書けるものを展開してしまって、最小限のspecial formだけ残す、などということは自由にできます。
2013/06/28 19:49:43 UTCkaki
#
Twitterの @chaton_gauche が息してませんね.API1.1になった辺りからでしょうか.
2013/06/28 20:47:23 UTCshiro
#
http://chaton.practical-scheme.net/chaton/a/2013/06/12#entry-51b8127f-8fbff
#
確かに、twitterで気がついてchatonを見にくるってパターンが定着してたから早く直したくはある。