   end
 
   def each(enumerable, fun) do
-    reduce(enumerable, nil, fn(entry, _) ->
+    reduce(enumerable, nil, fn entry, _ ->
       fun.(entry)
       nil
     end)
+
     :ok
   end
 


  def split(enumerable, count) when count >= 0 do
    {_, list1, list2} =
      reduce(enumerable, {count, [], []},
        fn(entry, {counter, acc1, acc2}) ->
          if counter > 0 do
            {counter - 1, [entry | acc1], acc2}
          else
            {counter, acc1, [entry | acc2]}
          end
      end)

    {:lists.reverse(list1), :lists.reverse(list2)}
  end

  def split(enumerable, count) when count < 0 do
    split_reverse_list(reverse(enumerable), - count, [])
  end

  @doc """


  defp into_protocol(enumerable, collectable) do
    {initial, fun} = Collectable.into(collectable)

    into(enumerable, initial, fun, fn entry, acc ->
      fun.(acc, {:cont, entry})
    end)
