1
它的工作SWI-Prolog的4之间的差异正在定条款文法,</p> <pre><code>letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}. </code></pre> <p>而在SWI-Prolog的7以下SWI-Prolog的7及以上
:- set_prolog_flag(double_quotes, codes).
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}.
在SWI搜索-Prolog网站,我发现:
Mode--------------double_quotes-----------back_quotes
Version 7 default-----string------------------codes
--traditional----------codes--------------symbol_char
那么,为什么
letter(X) --> [C], {`a`=<C, C=<`z`, name(X,[C])}.
不起作用?
SWI 7摧毁与早期版本兼容。你可以使用'--traditional'来获得基本的ISO合规性。另外,我建议'chars'而不是'codes'在所有版本和其他Prolog系统中都输出更好的输出。 – mat
用'char_code(X,C)'更好地替换'name(X,[C])' - 这在每个地方都更好 – false