2017-04-16 5 views
1

はSWIでの検索確定節文法、SWI-Prologの7の相違点と古い

:- set_prolog_flag(double_quotes, codes). 
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}. 

を働いています-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])}. 

は動作しません。

+2

SWI 7は、以前のバージョンとの互換性を破壊しました。基本的なISO準拠を得るために '--traditional'を使うことができます。また、すべてのバージョンや他のPrologシステムで* much *より良い出力のために 'codes'の代わりに' chars'を推奨します。 – mat

+2

'name(X、[C])'を 'char_code(X、C)'で置き換える方が良い。 – false

答えて

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. 
関連する問題