このディレクトリの索引
#  
#  length/2をsucc/2を使って定義してみる。
#  

length(L,0) :-
        \+(var(L)),
        L = [],!.
length(L,Len) :-
        \+(var(L)),
        \+(var(Len)),
        L = [_|R],
        length(R,Len_1),
        succ(Len_1,Len),!.
length(L,Len) :-
        \+(var(L)),
        var(Len),
        L = [_|R],
        length(R,Len_1),
        succ(Len_1,Len).
length(L,Len) :-
        var(L),
        \+(var(Len)),!,
        length([],0,L,Len),!.
length(L,Len) :-
        var(L),
        var(Len),
        length([],0,L,Len).

length(L,Len,L,Len).
length(L_1,Len_1,L,Len) :-
        succ(Len_1,Len_2),
        length([_|L_1],Len_2,L,Len).