Chunk an Elixir enumerable into fixed batches

Elixir
defmodule Batches do
  def chunks(enumerable, size) when is_integer(size) and size > 0 do
    enumerable
    |> Stream.chunk_every(size)
    |> Enum.to_list()
  end

  def each_chunk(enumerable, size, fun) when is_function(fun, 1) do
    enumerable
    |> Stream.chunk_every(size)
    |> Enum.each(fun)
  end
end