同図像性

同図像性（どうずぞうせい、）は、一部のプログラミング言語が持つ特性である 。 ある言語のコードをその言語で操作できる場合、その言語は同図像性があるという。 「プログラムコードをデータとして扱う」と呼ばれることもある。 
同図像性はデータモデルを表現するための言語とプログラム言語が深く関連しているか、同一であることを意味する。 同図像性はメタプログラミングを容易にする。 
同図像性を持つ代表的なプログラミング言語はLispである。Lispの構造は階層化されたリストの形式をとるS式によって与えられる。その結果、プログラムは実行中にある関数にアクセスでき、プログラムによってその場でその関数を変更できる。 
実装された言語.
多くの Lisp (Common Lisp、Scheme、Clojure等)、 Racket、S-expressionsに加えて次のものがある。 
Lispの例.
LispはS式をデータとコードの外部表現として使用する。 S式は、プリミティブのLisp関数codice_1で読み取ることができる。 codice_1はLispデータを返す：リスト、 シンボル 、数値、文字列。 プリミティブのLisp関数codice_3は、Lispデータとして表されたLispコードを使用し、副作用を計算して結果を返す。 結果は、Lispデータから外部S式を作成するプリミティブ関数codice_4によって出力される。 
 Lispコード。 この例では、リスト、記号、数字を使用する。 
 Lisp関数codice_5を使用して上記の式を作成し、変数codice_6を結果に格納する。 
(setf expression (list '* (list 'sin 1.1) (list 'cos 2.03)) ) 
-> (* (SIN 1.1) (COS 2.03)) ; Lisp returns and prints the result
(third expression) ; the third element of the expression
-> (COS 2.03)
 codice_7をcodice_8に変更する。 
 式を評価する。 
-> 0.7988834
 式を文字列に出力する。 
-> "(* (SIN 1.1) (SIN 2.03))"
 文字列から式を読み取る。 
-> (* (SIN 1.1) (SIN 2.03)) ; returns a list of lists, numbers and symbols