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