2008年9月18日木曜日

【CL入門】7 マクロ

虚心坦懐、写経に集中、、、深掘りしない、深掘りしない。

  • aclでは、

    CL-USER(130): (macroexpand '(incf x))
    (SETQ X (+ X 1))

  • aclでは、special-form-pは存在しなくて、special-operator-p。
  • マクロは関数である、ということにフォーカスした説明だな。マクロ理解における5W1HのなかのWhatと、Howの半分を集中して説明する感じ。これはこれでわかりやすい。が、マクロのWho、When、Where、Whyをまったく知らない人には、すわりがわるいかも。
  • 最近「マクロ」をみると「マグロ」にみえる。上の文では、「マグロは関数である、ということにフォーカスした説明だな。マグロ理解における...」と頭の中で自動変換される。なので、常に鮪が頭に浮かぶ。そしてそれがマグロとした場合にどういう意味をもつのかというマグロ意味論を自動的に考えてしまう。鮪、邪魔だ! アホらしい。頭がおかしくなってるのかな。。。いや、おかしくなってるよね。
  • そうか、自分が書くかぎりでは、macroと書けばいいんだ。

  • う、aclでは、'`(if ,condition (progn ,@body))は展開されない。

    CL-USER(193): '`(if ,condition (progn ,@body))
    `(IF ,CONDITION (PROGN ,@BODY))

    macroexpandしてみる。

    CL-USER(195): (macroexpand '`(if ,condition (progn ,@body)))
    (EXCL::BQ-LIST `IF CONDITION (EXCL::BQ-CONS `PROGN BODY))

    ふむ。

次回はリスト処理。こつこつ。

0 件のコメント: