我开始学习如何使用DCG。我想知道花括号{...}用于什么?什么时候(什么时候不需要)?例如:

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

为回答此问题而提供:Avoid linear cost of append/3 in Prolog

最佳答案

在DCG规则中,{}用于封装Prolog目标,否则将被解释为非终端目标。

关于prolog - DCG中的大括号{},我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18298228/

10-09 00:25