(foo)>プログラミング言語schemeには二種類のマクロがある。潔癖なマクロしか書けないsyntax-rulesと、そうでないものも書けるsyntax-caseだ。伝統的に多くの処理系がdefine-macroを提供してきた。そこで、自分なりにsyntax-caseでdefine-macroを定義しようと試みた結果がこうなった。r)))))))))))))どうにもごちゃごちゃしている。自分でもツッコミどころがいろいろとあるのは承知している。r6rsでは廃止されたinteraction-environmentを使っているし、そもそもevalを使わなければならないのか疑問である。その挙動もdefine-macroらしくない点があると指摘をもらった。以下のようなケースでエラーになる。define-macro"をキーワードとして検索したところ、やはりsyntax-caseでdefine-macroを定義しようとしたものが簡単に見つかった。v))))))))))http://c2.com/cgi/wiki?DefineSyntaxdatum->syntaxの第一引数が、第二引数をsyntaxオブジェクトに変換するにあたって適用する文脈のようなものであるというのはおぼろげにわかっていたのだけれど、はっきり理解はしていないので、題材としてとても興味深い。ところが、これで先程と同じ例を試すと別のエラーになった。debugger.ふとした思いつきで下のような形に変形してみた。v))))))))))))でもやっぱりどうしてなのかよくわからない。仕様を読もうと思いつつも積ん読状態のままになっているので、わからなくても一度は目を通すべきかもしれない。»はてなブログをはじめよう!SaitoAtsushiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。