mirror of
https://github.com/kanaka/mal.git
synced 2024-09-21 02:27:10 +03:00
Update Elixir syntax & version to work with v1.5.x
This commit is contained in:
parent
ef7fc8cad5
commit
e68e138f27
@ -75,7 +75,7 @@ defmodule Mal.Core do
|
||||
def readline(prompt) do
|
||||
IO.write(:stdio, prompt)
|
||||
IO.read(:stdio, :line)
|
||||
|> String.strip(?\n)
|
||||
|> String.trim("\n")
|
||||
end
|
||||
|
||||
defp convert_vector({type, ast, meta}) when type == :map do
|
||||
@ -223,9 +223,9 @@ defmodule Mal.Core do
|
||||
end
|
||||
|
||||
defp seq([nil]), do: nil
|
||||
defp seq([{:list, [], meta}]), do: nil
|
||||
defp seq([{:list, [], _meta}]), do: nil
|
||||
defp seq([{:list, ast, meta}]), do: {:list, ast, meta}
|
||||
defp seq([{:vector, [], meta}]), do: nil
|
||||
defp seq([{:vector, [], _meta}]), do: nil
|
||||
defp seq([{:vector, ast, meta}]), do: {:list, ast, meta}
|
||||
defp seq([""]), do: nil
|
||||
defp seq([s]), do: {:list, String.split(s, "", trim: true), nil}
|
||||
|
@ -1,12 +1,12 @@
|
||||
defmodule Mix.Tasks.Step0Repl do
|
||||
def run(_), do: loop
|
||||
def run(_), do: loop()
|
||||
|
||||
defp loop do
|
||||
Mal.Core.readline("user> ")
|
||||
|> read_eval_print
|
||||
|> IO.puts
|
||||
|
||||
loop
|
||||
loop()
|
||||
end
|
||||
|
||||
defp read(input) do
|
||||
|
@ -1,12 +1,12 @@
|
||||
defmodule Mix.Tasks.Step1ReadPrint do
|
||||
def run(_), do: loop
|
||||
def run(_), do: loop()
|
||||
|
||||
defp loop do
|
||||
Mal.Core.readline("user> ")
|
||||
|> read_eval_print
|
||||
|> IO.puts
|
||||
|
||||
loop
|
||||
loop()
|
||||
end
|
||||
|
||||
defp read(input) do
|
||||
|
@ -6,7 +6,7 @@ defmodule Mix.Tasks.Step2Eval do
|
||||
"/" => &div/2
|
||||
}
|
||||
|
||||
def run(_), do: loop
|
||||
def run(_), do: loop()
|
||||
|
||||
defp loop do
|
||||
IO.write(:stdio, "user> ")
|
||||
@ -14,7 +14,7 @@ defmodule Mix.Tasks.Step2Eval do
|
||||
|> read_eval_print
|
||||
|> IO.puts
|
||||
|
||||
loop
|
||||
loop()
|
||||
end
|
||||
|
||||
defp eval_ast({:list, ast, meta}, env) when is_list(ast) do
|
||||
@ -46,7 +46,7 @@ defmodule Mix.Tasks.Step2Eval do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -50,7 +50,7 @@ defmodule Mix.Tasks.Step3Env do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -58,7 +58,7 @@ defmodule Mix.Tasks.Step3Env do
|
||||
end
|
||||
defp eval_bindings(_bindings, _env), do: throw({:error, "Unbalanced let* bindings"})
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -59,7 +59,7 @@ defmodule Mix.Tasks.Step4IfFnDo do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -67,7 +67,7 @@ defmodule Mix.Tasks.Step4IfFnDo do
|
||||
end
|
||||
defp eval_bindings(_bindings, _env), do: throw({:error, "Unbalanced let* bindings"})
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -59,7 +59,7 @@ defmodule Mix.Tasks.Step5Tco do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -67,7 +67,7 @@ defmodule Mix.Tasks.Step5Tco do
|
||||
end
|
||||
defp eval_bindings(_bindings, _env), do: throw({:error, "Unbalanced let* bindings"})
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -82,7 +82,7 @@ defmodule Mix.Tasks.Step6File do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -90,7 +90,7 @@ defmodule Mix.Tasks.Step6File do
|
||||
end
|
||||
defp eval_bindings(_bindings, _env), do: throw({:error, "Unbalanced let* bindings"})
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -82,7 +82,7 @@ defmodule Mix.Tasks.Step7Quote do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -114,7 +114,7 @@ defmodule Mix.Tasks.Step7Quote do
|
||||
end
|
||||
defp quasiquote(ast, _env), do: list([{:symbol, "quote"}, ast])
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, ast, meta}, env), do: eval_list(ast, env, meta)
|
||||
defp eval(ast, env), do: eval_ast(ast, env)
|
||||
|
||||
|
@ -105,7 +105,7 @@ defmodule Mix.Tasks.Step8Macros do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -159,7 +159,7 @@ defmodule Mix.Tasks.Step8Macros do
|
||||
end
|
||||
end
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, _list, _meta} = ast, env) do
|
||||
case macroexpand(ast, env) do
|
||||
{:list, list, meta} -> eval_list(list, env, meta)
|
||||
|
@ -105,7 +105,7 @@ defmodule Mix.Tasks.Step9Try do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -159,7 +159,7 @@ defmodule Mix.Tasks.Step9Try do
|
||||
end
|
||||
end
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, _list, _meta} = ast, env) do
|
||||
case macroexpand(ast, env) do
|
||||
{:list, list, meta} -> eval_list(list, env, meta)
|
||||
|
@ -124,7 +124,7 @@ defmodule Mix.Tasks.StepAMal do
|
||||
Mal.Reader.read_str(input)
|
||||
end
|
||||
|
||||
defp eval_bindings([], _env), do: _env
|
||||
defp eval_bindings([], env), do: env
|
||||
defp eval_bindings([{:symbol, key}, binding | tail], env) do
|
||||
evaluated = eval(binding, env)
|
||||
Mal.Env.set(env, key, evaluated)
|
||||
@ -178,7 +178,7 @@ defmodule Mix.Tasks.StepAMal do
|
||||
end
|
||||
end
|
||||
|
||||
defp eval({:list, [], _} = empty_ast, env), do: empty_ast
|
||||
defp eval({:list, [], _} = empty_ast, _env), do: empty_ast
|
||||
defp eval({:list, _list, _meta} = ast, env) do
|
||||
case macroexpand(ast, env) do
|
||||
{:list, list, meta} -> eval_list(list, env, meta)
|
||||
|
@ -4,12 +4,12 @@ defmodule Mal.Mixfile do
|
||||
def project do
|
||||
[app: :mal,
|
||||
version: "0.0.1",
|
||||
elixir: "~> 1.0",
|
||||
elixir: "~> 1.5",
|
||||
build_embedded: Mix.env == :prod,
|
||||
start_permanent: Mix.env == :prod,
|
||||
deps: deps,
|
||||
deps: deps(),
|
||||
default_task: "stepA_mal",
|
||||
escript: escript]
|
||||
escript: escript()]
|
||||
end
|
||||
|
||||
def escript do
|
||||
|
Loading…
Reference in New Issue
Block a user