【问题标题】:curly brackets { } in DCGDCG中的大括号{}
【发布时间】:2024-01-03 04:29:01
【问题描述】:

我开始学习如何使用 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

【问题讨论】:

标签: prolog dcg


【解决方案1】:

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

【讨论】: