Piszę częściową ocenę dla zapytań Prolog. Starałem się rozszerzyć zapytanie korzystając expand_goal/2
, ale to po prostu jednoczy Input
z Output
w tym przypadku:Implementacja częściowej oceny w 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.
Próbowałem też za pomocą term_expansion/2
, ale to powoduje, że program nie:
:- initialization(main).
main :-
Input=is_between(1,A,3),term_expansion(Input,Output),writeln(Output).
is_between(A,B,C) :-
B>A,B<C.
Czy SWI-Prolog ma wbudowany predykat, który może wykonywać makro-ekspansję zapytań w czasie wykonywania, tak jak próbowałem to zrobić tutaj?