An experimental implementation of a subset of lisp in Elixir.
This was mainly a fun project based off of the blog post, Lisp In Your Own Language, by Dan Prince.
Some things that are supported:
iex(2)> Elisper.eval([:+, 1, 1])
2
iex(3)> Elisper.eval([:+, [:+, 2, 2], [:+, 2, 3]])
9
iex(5)> Elisper.eval([:do, [:print, "hello"], [:print, "world"]])
print function hello
print function world
:ok
iex(7)> Elisper.eval([:if, [:=, 1, 1], [:+, 1, 1], [:+, 2, 2]])
2
iex(9)> Elisper.eval(
...(9)> [:do,
...(9)> [:def, :multi,
...(9)> [:fn, [:x, :y],
...(9)> [:*, :x, :y]
...(9)> ]
...(9)> ],
...(9)> [:multi, 3, 4]
...(9)> ]
...(9)> )
12