[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03984] Re: 行番号つきラインコピー (と質問)



やまもとです。

>| いや〜、lispは亀井さんとか逸見さんのソースだけ見ながら
>| 勉強した人間なので、ちょっと根本的に、、、
>
>マクロは 2 回評価される関数みたいなものと思っていれば
>間違いないでしょう(ただし 1 回目の評価のときには引数の
>評価はされない)。
>(中略)
>複雑なマクロ定義だと、list やら append やら cons やら 
>quote やらをごちゃごちゃ書くのがめんどくせ〜、というわ
>けでテンプレートを使うことができます。詳しい説明は面倒
>なのでしませんが(^^; 上の例をテンプレートを使って書く
>とこのようになります。
>
>  (defmacro M (a b c)
>    `(progn
>       (m-setup)
>       ,a ,b ,c
>       (m-cleanup)))
>
>  (defmacro M2 (&rest args)
>    `(progn
>       (m-setup)
>       ,@args
>       (m-cleanup)))

丁寧な説明、本当にありがとうございます。
#分かりやすい説明ですので、へなちょこリファレンスに取り込ん
#で頂けると嬉しいですが、、、

なるほど、evalmacs.lに書かれているのはそういうことなのですね。
テンプレートを使えば、どうやってリストを作るのかをあまり気に
する必要が無いと。この説明読むまでは '`, で混乱しまくっ
てました。

これで、自分用の制御構造を書けるようになって便利かも、、、

----
    YAMAMOTO Taizo / 山本 泰三
              mail : ymtz@xxxxxxxxxxxxxxx
                     yamamoto@xxxxxxxxx
              www  : http://www1.odn.ne.jp/ymtz/

Index Home