Я - новый пользователь для пролога. По моим сведениям, Pure Prolog ограничивается предложениями Хорна. Вот очень простая программа пролога -Order of Goals in Pure Prolog
% student(Snr , FirstName , LastName , Semester).
student( 1000 , 'Anna' , 'Arm' , 'ti2' ) .
student( 1001 , 'Rita' , 'Reich' , 'ti2' ) .
student( 1002 , 'Peter' , 'Reich' , 'ti2' ) .
student( 1003 , 'Peter' , 'Petersen' , 'ti7' ) .
% course(Semester , Course ) .
course('ti2' , 'Mathe2' ) .
course('ti2' , 'Physics2') .
course('ti7' , 'pdv2' ) .
musttake(M,V,N,S,C) :- student(M,V,N,S), course(S,C).
musttakereverse(M,V,N,S,C) :- course(S,C), student(M,V,N,S).
Мой университет слайд говорит, что даже если мы поменяем порядок целей в правиле, в чистом Прологе, порядок результатов не должен быть изменен. В приведенном выше коде есть 2 правила, которые я выполнил. musttake
и musttakereverse
, в которых я просто изменил порядок целей. Таким образом, согласно слайдам, порядок результатов не должен изменяться при запуске. Но, когда я запускаю код, они дают результаты в разных порядках. (По моему мнению, вышеуказанная программа находится в pure prolog
).
Итак, я хотел бы знать, если это правда, что
Изменение заказов в цели не меняет порядок результата в чистом коде Пролога.
Спасибо!
Вы уверены, что они не сказали, что «изменение порядка целей не повлияет на набор результатов», а не «порядок результатов»? – Enigmativity
Точная фраза - «Крайний пример: обмен целями может привести к бесконечным циклическим вызовам в некоторых рекурсивных правилах. Однако порядок результатов не отличается». –