Допустим, я хочу добавить правило в базу знаний.
Я знаю имя нового правила, список аргументов и тело.В качестве примера:
rule name = test_rule
argument list = [X, Y]
body = (write(X), nl, write(Y))
Построенное правило должно выглядеть следующим образом:
test_rule(X, Y):-
write(X),
nl,
write(Y).
Этого я могу достичь, используя комбинацию функторов, аргументов и утверждений.Давайте теперь скажем, что каждое построенное правило должно иметь переменную с именем Z в качестве аргумента.
Предыдущее правило теперь должно быть:
(игнорировать тот факт, что Z не используется, это не проблема)
test_rule(Z, X, Y):-
write(X),
nl,
write(Y).
Наивно я думал, что простым решением может быть создание нового списка аргументов, добавляя [Z] и [X, Y], но я не могу этого сделать, потому что
append([Z], Arg_List, Result)
дает мне однократную ошибку на Z. Это имеет смысл, поэтому я думаю, что более конкретный ответ - как я могу сохранить переменный символ в списке?
Имеет ли пролог эквивалент оператора кавычки Лиспа?
Есть ли лучший способ сделать это?(да, наверное)