จากธัชพล

split_list(L,1) -> [L];
split_list(L,N) ->
    {Head,Tail}=lists:split(length(L) div N,L),
    [Head|split_list(Tail,N-1)].

โค้ดเดิม

split_first(0,L,O) ->
    {lists:reverse(O),L};
split_first(_,[],O) ->
    split_first(0,[],O);
split_first(N,[X|XS],O) ->
    split_first(N-1,XS,[X|O]).
split_first(N,L) ->
    split_first(N,L,[]).

split_list_size(_,_,0,Out) ->
    Out;
split_list_size(L,_,1,Out) ->
    [L|Out];
split_list_size(L,S,N,Out) ->
    {H,T} = split_first(S,L),
    split_list_size(T,S,N-1,[H|Out]).
split_list_size(L,S,N) ->
    split_list_size(L,S,N,[]).

split_list(L,N) ->
    Len = length(L),
    S = Len div N,
    split_list_size(L,S,N).