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