Current section
Files
Jump to
Current section
Files
lib/print.ex
# ----------------print------------
defmodule Print do
def print(x) do
# IO.inspect(x)
print1(x)
IO.puts("")
end
def print1(x) when is_number(x) do
IO.write(x)
end
def print1(x) when is_atom(x) do
cond do
x == :t -> IO.write("T")
x == nil -> IO.write("F")
true -> IO.write(x)
end
end
def print1(x) when is_list(x) do
print_list(x)
end
def print1(x) when is_tuple(x) do
if elem(x, 0) == :func do
IO.write("function")
else
:io.write(x)
end
end
def print1(x) when is_binary(x) do
IO.write("\"")
IO.write(x)
IO.write("\"")
end
defp print_list([]) do
IO.write("nil")
end
defp print_list([x | xs]) do
IO.write("(")
print1(x)
if xs != [] and xs != nil do
IO.write(" ")
end
print_list1(xs)
end
defp print_list1(x) when is_atom(x) do
if x != nil do
IO.write(". ")
IO.write(x)
IO.write(")")
else
IO.write(")")
end
end
defp print_list1(x) when is_number(x) do
IO.write(". ")
IO.write(x)
IO.write(")")
end
defp print_list1([]) do
IO.write(")")
end
defp print_list1([x | xs]) do
print1(x)
if xs != [] and xs != nil do
IO.write(" ")
end
print_list1(xs)
end
end