 
   ## Helpers
 
-  @compile {:inline, enum_to_string: 1, reduce: 3}
-
-  defp enum_to_string(entry) when is_binary(entry), do: entry
-  defp enum_to_string(entry), do: String.Chars.to_string(entry)
+  @compile {:inline, entry_to_string: 1, reduce: 3}
+
+  defp entry_to_string(entry) when is_binary(entry), do: entry
+  defp entry_to_string(entry), do: String.Chars.to_string(entry)
 
   defp enumerable_and_count(enumerable, count) when is_list(enumerable) do
     {enumerable, length(enumerable) - abs(count)}


  def map_join(enumerable, joiner, mapper) when is_binary(joiner) and is_function(mapper, 1) do
    reduced = reduce(enumerable, :first, fn
      entry, :first -> enum_to_string(mapper.(entry))
      entry, acc    -> [acc, joiner | enum_to_string(mapper.(entry))]
    end)

    if reduced == :first do


  def join(enumerable, joiner) when is_binary(joiner) do
    reduced = reduce(enumerable, :first, fn
      entry, :first -> entry_to_string(entry)
      entry, acc -> [acc, joiner | entry_to_string(entry)]
    end)
    if reduced == :first do
      ""
