 
   defp each_diagonal(diag, limit, paths, next_paths) do
     {path, rest} = proceed_path(diag, limit, paths)
+
     with {:cont, path} <- follow_snake(path) do
       each_diagonal(diag + 2, limit, rest, [path | next_paths])
     end

      "deep"

  """
  @spec to_string(:unicode.charlist) :: String.t
  def to_string(list) when is_list(list) do
    try do
      :unicode.characters_to_binary(list)


  """
  @spec first([elem]) :: nil | elem when elem: var
  def first([]), do: nil
  def first([head | _]), do: head

  @doc """
