Я только начинаю использовать Пролог, и уже столкнулся с проблемой, казалось бы, простого примера.Вот мой файл .pl:
hacker(P) :- mountaindew(P), doesntsleep(P).
hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).
Затем, после загрузки программы в swipl, я проверяю ее с помощью этой строки в приглашении
writesgoodcode(jeff).
Я думал, что будет отображаться true, но я получаю эту ошибку:
?- hacker(jeff).
ERROR: hacker/1: Undefined procedure: mountaindew/1
Exception: (7) hacker(jeff) ?
Эта программа работает нормально, но это не решает мои проблемы:
hacker(P) :- writesgoodcode(P).
writesgoodcode(jeff).
$ swipl -s dumb.pl
% dumb.pl compiled 0.00 sec, 1,112 bytes
?- hacker(jeff).
true.
Может кто-нибудь объяснить, почему моя оригинальная программа не работает?Насколько я понимаю, Пролог должен «пропустить» первое утверждение, поскольку в нем недостаточно информации, и проверить следующую строку.У достаточно информации для этой второй строки, и поэтому он должен иметь значение true.Любая помощь или точка в правильном направлении было бы здорово.Спасибо.