メタプログラミング
そのため一般に必要でないメタプログラミングは避けられるべきとされる。
たとえば、文字列を整形して出力するformat関数
を用いた例を紹介する。LispのS式がLispフォームになるためには、「S式の最初の要素は(関数、マクロ、特殊フォーム)のいずれかではならない。」しかし、
を定義すると、以下のように書ける:
このことは、Lispのマクロが、上のかぎ括弧「」で括った言語仕様を変更し、独自の文法を作り上げたとも考えられる。しかし、この文法は、通常のLispにおいて期待されるような構成をしていない「記述どおりでない動作を行うプログラム」の一例であり、コードの可読性を損なう恐れのある不必要なメタプログラミングである。
メタプログラミングの他の例としてはC++における「テンプレートメタプログラミング」などが挙げられる。