:- object(object). :- public(length/2). length(List, Length) :- integer(Length) -> Length >= 0, make_list(Length, List) ; length(List, 0, Length). make_list(0, []) :- !. make_list(N, [_| Tail]):- M is N-1, make_list(M, Tail). length([], Length, Length). length([_| Tail], Acc, Length) :- Acc2 is Acc + 1, length(Tail, Acc2, Length). :- end_object.