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