Home フォーラム AZ-Prologサポート掲示板 sub_atomの戻り値について 返信先: sub_atomの戻り値について

#58559
稲葉
ゲスト

sub_atom/5 のソースは インストールDIR/system/pl/iso_pred.pl で公開していますが、
定義に一部誤りがありました。今回のリリースには間に合いませんでしたので、次回リリースでは
そのほかのISO述語の見直しを含め修正します。

とりあえずは次の定義をお使いいただければ他処理系同等となりますが、述語名が衝突しますので
new_sub_atom/5 とでも書き直してお使いください。
%%%%%%%%%%%

sub_atom(Atom,Start,GetLen,RightLen,Ans):-
(atom(Atom) -> name(Atom,List) ; error(9) ),
(var(Start) -> true; Start >=0 ),
(var(GetLen) -> true; GetLen >=0 ),
(var(RightLen) -> true; RightLen >=0 ),
sub_atom_aux(List,0,Start,RightList,_),
sub_atom_aux(RightList,0,GetLen,RightList2,AnsList),
length(RightList2,RightLen),
atom_codes(Ans,AnsList).

sub_atom_aux(List,E,E,List,[]).
sub_atom_aux([A|List],N,E,LList,[A|R]):-
NN is N+1,sub_atom_aux(List,NN,E,LList,R).

上部へスクロール