Создание новых правил - PullRequest
       5

Создание новых правил

0 голосов
/ 22 февраля 2019

Допустим, я хочу добавить правило в базу знаний.

Я знаю имя нового правила, список аргументов и тело.В качестве примера:

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. Это имеет смысл, поэтому я думаю, что более конкретный ответ - как я могу сохранить переменный символ в списке?

Имеет ли пролог эквивалент оператора кавычки Лиспа?

Есть ли лучший способ сделать это?(да, наверное)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...