Erlang chunk a list into fixed batches

Erlang
-module(chunk_list).
-export([chunk/2]).

chunk(List, N) when is_integer(N), N > 0 ->
    chunk(List, N, []).

chunk([], _N, Acc) ->
    lists:reverse(Acc);
chunk(List, N, Acc) ->
    case take(List, N, []) of
        {Chunk, []} -> lists:reverse([Chunk | Acc]);
        {Chunk, Rest} -> chunk(Rest, N, [Chunk | Acc])
    end.

take(Rest, 0, Acc) -> {lists:reverse(Acc), Rest};
take([], _N, Acc) -> {lists:reverse(Acc), []};
take([H | T], N, Acc) -> take(T, N - 1, [H | Acc]).