Lisp
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Lisplogo.png/330px-Lisplogo.png
たくさんの言語が、マクロと呼ばれる機能を持っている。でもLispのマクロは特別だ。 そして、信じられないかもしれないけれど、それが強力なのはLispのあのたくさんの括弧と 深い関係がある。Lispは別に他と違いを出すために括弧だらけになったんじゃない。 「ほげ」プログラマにしたら、Lispの括弧は変てこりんにしか見えないだろうけど、 あれにはちゃんと理由があるんだ。そしてそれが、Lispと他の言語との根本的な違いの証拠なんだ。 LispのプログラムコードはLispのデータオブジェクトから出来ている。 それは、ソースコードは文字列で出来ていて、文字列は言語でサポートされている、 というようなつまらない意味じゃない。Lispのコードは、ひとたびパーザによって読まれたら、 あなたが解析することができるデータ構造になるんだ。 コンパイラの動作を理解していれば、Lispの構文は奇妙だと言っても Lispには構文が無いと言ってもたいした違いは無いということがわかるだろう。 他の言語ならコンパイラが構文解析して内部に作られる構文木を、 Lispでは直接プログラムとして書き下すわけだ。 しかも、この構文木はプログラムからアクセスできるから、 構文木自身を操作するプログラムを書くことができる。 Lispではそのようなプログラムをマクロと呼ぶ。いわば、プログラムを生成するプログラムだ。https://practical-scheme.net/trans/beating-the-averages-j.html