このディレクトリの索引
#  
#  平坦化を二つ述語定義する
#  
% ****** 平坦化 / 2 *******

平坦化([],[]) :- !.
平坦化([A|R],L) :-
        list(A),
        平坦化(A,L1),
        平坦化(R,L2),
        append(L1,L2,L).
平坦化([A|R],[A|R1]) :-
        \+(list(A)),
        平坦化(R,R1).


% ******* 差分リストによる平坦化 / 2 ***************************

差分リストによる平坦化([_項|_残りリスト],_差分リスト頭部 - _差分リスト尾部) :-
        差分リストによる平坦化(_項,_差分リスト頭部 - _不完全な差分リスト),
        差分リストによる平坦化(_残りリスト,_不完全な差分リスト - _差分リスト尾部).
差分リストによる平坦化([],_差分リスト頭部 - _差分リスト尾部) :-
        _差分リスト頭部 = _差分リスト尾部 .
差分リストによる平坦化(_項,[_項|_差分リスト尾部] - _差分リスト尾部) :-
        \+(リスト(_項)),!.