   def show(result, indent \\ 0)
 
   def show(:ok, indent) do
-    IO.write(String.duplicate("  ", indent))
-    IO.puts("No errors detected.")
+    pad = String.duplicate("  ", indent)
+
+    put_err(:info, pad <> "No error detected.")
   end
 
   def show({:ok, _result}, indent) do

  This module defines types for positive results or errors returned by
  functions in this project.
  """

  @type t :: :ok | error()
  @type t(type) :: {:ok, type} | error()

  end

  def show({:error, message}, indent) when is_binary(message) do
    pad = String.duplicate("  ", indent)

    put_err(:error, pad <> message)
  end

  def show({:error, {posix, file, 0}}, indent) when is_atom(posix) do
    message = posix |> :file.format_error() |> IO.iodata_to_binary()

    show({:error, {message, file, 0}}, indent)
  end

  def show({:error, {message, file, 0}}, indent) do
    pad = String.duplicate("  ", indent)

    put_err(:error, pad <> "#{file}: #{message}")
  end

  def show({:error, {message, file, line}}, indent) do
    pad = String.duplicate("  ", indent)

    put_err(:error, pad <> "#{file}:#{line}: #{message}")
  end

  def show({:error, {from, errors}}, indent) do
    pad = String.duplicate("  ", indent)

    put_err(:error, pad <> "\x1b[1;31m#{from} (#{length(errors)}):")
    Enum.each(errors, &show(&1, indent + 1))
  end
end
