6
我正在爲Prolog查詢編寫一個部分評估器。我試圖擴大使用expand_goal/2
查詢,但它只是在這種情況下,Output
統一了Input
:在SWI-Prolog中實現部分評估
:- 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是否有內置的謂詞,可以在運行時執行查詢的宏擴展,正如我在此嘗試的那樣?