The predicate is also built in Prolog:
length(List,Nr).
?- my_length([a,b,[c,d],e],R).
R = 4
?- my_length([[],[]],R).
R = 2
?- my_length([[[]]],R).
R = 1
my_length([],0).
my_length([_|T],R):- my_length(T,R1),R is R1 + 1.