b(X) :- a(b(X)).
c(X) :- a(c(X)).
d(X) :- a(d(X)).
etc.
Я хочу выразить это в компактной форме:
F :- a(F).
Однако это синтаксическая ошибка. Каков правильный способ сделать это?
b(X) :- a(b(X)).
c(X) :- a(c(X)).
d(X) :- a(d(X)).
etc.
Я хочу выразить это в компактной форме:
F :- a(F).
Однако это синтаксическая ошибка. Каков правильный способ сделать это?
В простом ASP это невозможно. Существует HEX, где можно использовать переменные для предикатов, однако это не заставит вашу программу (или вашу идею) работать напрямую.
Чтобы решить проблемы на практике, вы всегда можете добавить вокруг него еще один уровень предикатов (это то, что HEX делает внутри):
true(F) :- true(a(F)).