它适用于SWI-Prolog 4
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}.
在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])}.
不起作用?
答案 0 :(得分:0)
为了简化上下文,让我们测试一个等价的表达式(一个目标连词)
?- C=0'd, `a` =< C, C =< `z`.
C = 100.
似乎它在工作......
?- [user].
letter(X) --> [C], {`a`=<C, C=<`z`, name(X,[C])}.
|: ^Dtrue.
?- phrase(letter(X), `d`).
X = d.