Пролог - различия между красным и зеленым
Я начал изучать пролог, и хотел сделать все прорези более понятными. Я читал, что «зеленое вырезание не меняет декларативное значение программы, в то время как красное сокращение не меняет». Но смысл программы не является чисто декларативным (просто из-за того, что пролог фактически возвращает все параметры).
Вот пример:
p(1).
p(2) :- !.
p(3).
было сказано, что это зеленый срез. Но если я запускаю это:
p(X), X =:= 3.
Я получу «истинно» без разреза, и «ложно» с разрезом. Итак, что я скучаю?
Заранее спасибо.