谓词不在 SWI-Prolog 中调用
Predicate not calling in SWI-Prolog
solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution)
答案已送达。
SWI-Prolog 7.x 将 double_quotes
标志的默认值从 codes
更改为 string
。这显然是导致您描述的问题的原因。如果您在包含您发布的代码的源文件顶部添加以下指令:
:- set_prolog_flag(double_quotes, codes).
你应该得到:
?- solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution).
Solution = [4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 4] ;
Solution = [4, 4, 2, 1, 4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 3, 4, 2|...] ;
Solution = [1, 1, 3, 2, 2, 4, 4, 4, 4|...] ;
solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution)
答案已送达。
SWI-Prolog 7.x 将 double_quotes
标志的默认值从 codes
更改为 string
。这显然是导致您描述的问题的原因。如果您在包含您发布的代码的源文件顶部添加以下指令:
:- set_prolog_flag(double_quotes, codes).
你应该得到:
?- solve([("ab","abab"), ("b","a"), ("aba","b"), ("aa","a")], Solution).
Solution = [4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 4] ;
Solution = [4, 4, 2, 1, 4, 4, 2, 1] ;
Solution = [1, 1, 3, 2, 2, 4, 3, 4, 2|...] ;
Solution = [1, 1, 3, 2, 2, 4, 4, 4, 4|...] ;