Working code:
split_list_into_lens(Len, Lst, Lsts) :-
must_be(positive_integer, Len),
split_list_into_lens_(Lst, Len, Lsts).
split_list_into_lens_([], _, []).
split_list_into_lens_([H|T], Len, [LstSplit|Lsts]) :-
( length(LstSplit, Len),
append(LstSplit, LstRemainder, [H|T]) -> true
; LstSplit = [H|T],
length(LstSplit, LenSplitFinal),
LenSplitFinal < Len,
LstRemainder = [] ),
split_list_into_lens_(LstRemainder, Len, Lsts).
?- split_list_into_lens(3, [a, b, c, d, e, f, g, h, i], Lsts).
Lsts = [[a,b,c],[d,e,f],[g,h,i]].
% Presumably desirable:
?- split_list_into_lens(3, [a, b, c, d, e, f, g, h, i, j, k], Lsts).
Lsts = [[a,b,c],[d,e,f],[g,h,i],[j,k]].