Нужна помощь Преобразование в правило Пролога - PullRequest
0 голосов
/ 21 февраля 2019

Всем нравится работа, если это весело и она платит

we=>likes(X, Job):-fun(Job), pay_well(Job).

Не уверен, правильно ли это и имеет ли значение, что я помещаю Job в качестве переменной?

1 Ответ

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

Просто предоставьте определения для двух других предикатов, и у вас есть рабочая программа.Что-то вроде этого:

likes_job(_Person, Job) :-
    is_fun(Job),
    pays_well(Job).

is_fun('scuba diving instructor').
is_fun('tour guide').

pays_well('software developer').
pays_well('scuba diving instructor').

Несколько примеров:

?- likes_job('Peter', Job).
Job = 'scuba diving instructor' ;
false.

?- likes_job('Peter', 'software developer').
false.

?- likes_job('Peter', 'tour guide').
false.

?- likes_job('John', 'scuba diving instructor').
true.

?- likes_job(X, 'scuba diving instructor').
true.

Вместо того, чтобы определять два предиката, вы можете просто объявить их как «динамические», и они теперь пусто (вместо отсутствует):

likes_job(_Person, Job) :-
    is_fun(Job),
    pays_well(Job).

:- dynamic is_fun/1.
:- dynamic pays_well/1.

$ swipl -q
?- [likesjob].
true.

?- likes_job(A, B).
false.

?- assertz(is_fun(x)).
true.

?- assertz(pays_well(x)).
true.

?- likes_job(A, B).
B = x.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...