Elixirには同図像性(homoiconicity)があるのか
Lispはコードをquote
するとデータ(リスト)が得られ、そのデータはコードと表現が同じです。
[1]> (+ 1 2 3)
6
[2]> (quote (+ 1 2 3))
(+ 1 2 3)
Elixirは少し様子が違います。
iex(1)> 1 + 2 + 3
6
iex(2)> quote do: 1 + 2 + 3
{:+, [context: Elixir, import: Kernel],
[{:+, [context: Elixir, import: Kernel], [1, 2]}, 3]}
出て来たASTは確かにElixrで扱えるデータ(タプル)ではあります。
しかしプログラマが書くコードとは形が大分異なる物です。これをコードとして実行する事は出来ません。
この点が私の「同図像性」という言葉のイメージと違っていたので質問しました。
Elixirには同図像性があるのでしょうか。
あるとすれば、Elixirのどの性質が同図像性を持つと言い得る条件を満たしているのでしょうか。