我开始学习如何使用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
答案 0 :(得分:2)
在DCG规则中,{}用于封装Prolog目标,否则这些将被解释为非终端。