このディレクトリの索引
% ならびのcut 文字列はsub_atom/5でcutし易いがならびは案外面倒

cut(L,[],[]) :- !.
cut(L,[L2|R],[Y|R1])
  :-
    list(L2),
    cut(L,L2,Y),
    cut(L,R,R1),!.
cut(L,[S-(%24)|R],[Y|R1])
  :-
    length(L,Len),
    cut(L,[S-Len|R],[Y|R1]),!.
cut(L,[(^)-E|R],[Y|R1])
  :-
    cut(L,[1-E|R],[Y|R1]),!.
cut(L,[S-E|R],Y)
  :-
    list(L),
    findall(N,for(S,N,E),L2),
    append(L2,R,L3),
    cut(L,L3,Y),!.
cut(L,[S|R],[Y|R1])
  :-
    list(L),
    list_nth(S,L,Y),
    cut(L,R,R1),!.
cut(_対象文字列,_位置情報ならび,_副文字列)
  :-
    atomic(_対象文字列),
    cut(_対象文字列,_位置情報ならび,'',_副文字列),!.
cut(_対象文字列,_位置情報ならび,_区切り文字,_副文字列)
  :-
    atomic(_対象文字列),
    decompcons(_対象文字列,L),
    cut_2(L,_位置情報ならび,_部分ならび),
    concat(_部分ならび,_区切り文字,_副文字列).
cut_2(_,[],[]) :- !.
cut_2(L,[S-E|R],[B|R1])
  :-
    cut(L,[S-E],U),
    concat_atom(U,B),
    cut_2(L,R,R1),!.
cut_2(L,[P|R],[B|R1])
  :-
    cut(L,[P],U),
    concat_atom(U,B),
    cut_2(L,R,R1),!.