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

  • このトピックは空です。
2件の返信スレッドを表示中
  • 投稿者
    投稿
    • #58531
      makoto
      ゲスト

      数値の前にゼロをpaddingする処理を実装しようとしています。

      sub_atom('003',_,2,0,B)
      の結果として
      B = '03'
      が返却されることを期待していますが,実際には
      B = 3
      が返却されます。

      ‘003’の後ろ2桁をアトムとして取り出すにはどうすれば良いでしょうか?

    • #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).

    • #58598
      tajima
      ゲスト

      4月7日ご提供のVersion9.62において対応しましたので、再ダウンロードのうえお使いください。

2件の返信スレッドを表示中
  • フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。
上部へスクロール