我正在编写一个 Prolog 查询的部分求值器。我尝试使用 expand_goal/2
来扩展查询,但这种情况下它只是将 Input
与 Output
统一起来:
:- initialization(main).
main :-
Input=is_between(1,A,3),expand_goal(Input,Output),writeln(Output).
is_between(A,B,C) :-
B>A,B<C.
我尝试使用
term_expansion/2
,但这会导致程序失败::- initialization(main).
main :-
Input=is_between(1,A,3),term_expansion(Input,Output),writeln(Output).
is_between(A,B,C) :-
B>A,B<C.
SWI-Prolog是否有内置谓词可以在运行时执行查询的宏展开,就像我在这里尝试的一样?
goal_expansion/2
? - false