マクロ
AWK - odz buffer より PostScript の /hogehoge {...} def
はマクロかどうかという話に参加したくなったけど、そもそもマクロって何なのかがよくわかっていない。C の #define だとか m4 だとか Lisp のだとか Emacs の キーボードマクロだとか色々なものが全部マクロと呼ばれていて困る。
ということで、マクロ (コンピュータ用語) - Wikipedia 読んだ。
PostScript の /hogehoge { ... } def
は、「複数の命令をひとまとめにしたもの」と言う意味ではマクロっぽいけど、「プログラムが解釈される前に文字列や S 式を置き換える」という意味のマクロとは、前処理っぽくないところが違うかなと思いました。あと、後から書き換えられたりできるところはマクロっぽくないかもしれない。
/Hello {(Hello, world!\n)print} def Hello % 標準出力に Hello, world! /Hello load 0 (Good morning!\n) put Hello % 標準出力に Good mornig!
Adobe が何と呼んでいるか、と言う点では Adobe のリファレンス (PDF) を macro で検索しても omacron のような文字の名前しか引っかからなかった。
def
の意味の方ですけど、def
がやっているのは辞書にキーとオブジェクトを登録するという操作で、/hogehoge のような名前オブジェクトだけでなく数値や配列もキーにできたりするので、マクロ定義や関数定義と同一視できるのかよく分からなくなる(配列や数値をキーにすると、マクロや関数風に呼び出せるわけではないが)。