前回はrubyなところを主に説明してきたので、いよいよ今回はLispな所であり、個人的に最もエキサイティングだと感じているメタプログラミングについて記述する。 メタプログラミング プログラムを書くプログラムを書く事をメタプログラミングと呼ぶ。Cのプリプロセッサや、yacc等のコード生成系もメタプログラムの範囲に含める場合があるようだが、Lispが最も有名であり、徹底されている。LispはプログラムがLispのS式で表現されているため、Lispの全能力使ってメタプログラミングが行える。それ故に、Lispは他の言語とは次元の違う強力さを持っている。プログラム言語がデータ構造として表現できる事(homoiconic)と、構文解析とコード生成の間にマクロの層があることがこの強力さの源になっている。 一方、elixirはというと、ruby風味のシンタックスであるにも関わらず、Lisp並のメタプログラ