タグ

bodyとrestに関するkiyo_hikoのブックマーク (2)

  • 『Macro - KCS Wiki』へのコメント

    kiyo_hiko ,@の展開で例えば→「(defmacro mac (&body body) `(pprint (macroexpand-1 ',@body)))」に何故なるか理解してなかった。&restと&bodyはリストを作る。だから,bodyでマクロの式のリストをいれると((expr))になる→,@でリスト内に展開する cl macro parameter rest body

    『Macro - KCS Wiki』へのコメント
    kiyo_hiko
    kiyo_hiko 2013/07/21
    例えば、「(mac (memq! 1 (1 2 3 4 5)))」的な形式しか評価しない場合パラメーターは単発のリストだからこうも書ける→「(defmacro mac (body) `(pprint (macroexpand-1 ',body)))」繰返す→先のメモで@が要るのはbodyが外側にリストを作るから
  • Macro - KCS Wiki

    kiyo_hiko
    kiyo_hiko 2013/07/21
    ,@の展開で例えば→「(defmacro mac (&body body) `(pprint (macroexpand-1 ',@body)))」に何故なるか理解してなかった。&restと&bodyはリストを作る。だから,bodyでマクロの式のリストをいれると((expr))になる→,@でリスト内に展開する
  • 1