Artificial intelligent assistant

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]} ASTElixr Elixir Elixir

homoiconic Elixir Elixir "homoiconic"



* <





****

*



****

*



Elixir

**AST**


iex(1)> 1 + 2 + 3
6
iex(2)> sum_prog = quote do: 1 + 2 + 3
{:+, [context: Elixir, import: Kernel],
[{:+, [context: Elixir, import: Kernel], [1, 2]}, 3]}


**AST**


iex(3)> Code.eval_quoted(sum_prog)
{6, []}
iex(4)> Code.eval_quoted(sum_prog) |> elem(0)
6


**AST**


iex(5)> Macro.to_string(sum_prog)
"1 + 2 + 3"


ASTElixirElixir

**beam** ElixirASTbeamErlangAST

* Elixir Erlang beam -- Erlang

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy ea9002f5501ec9ce4bbb0fff34e09fc0