3

DCGの使い方を学び始めています。中括弧{...}は何に使われるのだろうと思っていましたか?それらが必要な場合 (およびそうでない場合) はいつですか? 例えば:

read_lines -->
  { read_line_to_codes(current_input, Codes) } ,
  (
    { Codes == end_of_file } -> []
  ;
    { atom_codes(Line, Codes) } ,
    [Line],
    read_lines
  ) .

この質問への回答として提供: Prolog で append/3 の線形コストを回避する

4

1 に答える 1

4

DCG ルールでは、{} は Prolog ゴールをカプセル化するために使用されます。それ以外の場合、それらは非終端として解釈されます。

于 2013-08-18T15:14:32.823 に答える