このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354393458/425
#  要素に重複のないリスト(リストがない場合は配列)がある。 
#  このリストの部分リストを先頭要素と末尾要素を指定することによって、 
#  切り出し、この部分リストだけを昇順に整列する。 
#  元のリストを破壊することなしに、切り出されたリストの前部のリストを前に、
#  同じくならびの残り部分を後に結合した新たなならびを作るプログラムを示せ。 

'要素に重複のないならび(ならびがない場合は配列)がある。
このならびの部分ならびを先頭要素と末尾要素を指定することによって、
切り出し、この部分ならびだけを昇順に整列する。
元のならびを破壊することなしに、切り出されたならびの前部のならびを前に、
同じくならびの残り部分を後に結合した新たなならびを作る'(_ならび,_切り出し先頭要素,_切り出し末尾要素,_新たなならび) :-
        'このならびの部分ならびを先頭要素と末尾要素を指定することによって、切り出し、この部分ならびだけを昇順に整列する。'(_ならび,_切り出し先頭要素,_切り出し末尾要素,_前ならび,_切り出され整列したならび,_後ならび),
        元のならびを破壊することなしに、切り出されたならびの前部のならびを前に、同じくならびの残り部分を後に結合した新たなならびを作る'(_前ならび,_切り出され整列したならび,_後ならび,_新たなならび).

'このならびの部分ならびを先頭要素と末尾要素を指定することによって、切り出し、この部分ならびだけを昇順に整列する。'(_ならび,_切り出し先頭要素,_切り出し末尾要素,_前ならび,_切り出され整列したならび,_後ならび) :-
        append(_前ならび,[_切り出し先頭要素|_残りならびの一],_ならび),
        append(L0,[_切り出し末尾要素|_後ならび],_残りならびの一),
        sort([_部分ならびの先頭要素,_部分ならびの末尾要素|L0],_切り出され整列したならび).

'元のならびを破壊することなしに、切り出されたならびの前部のならびを前に、同じくならびの残り部分を後に結合した新たなならびを作る'(_前ならび,_切り出され整列したならび,_後ならび,_新たなならび) :-
        append(_前ならび,_切り出され整列したならび,L),
        append(L,_後ならび,_新たなならび).