Мне интересно, почему предикат Prolog предлагает множество альтернатив (с помощью backtracking ?!), если истина уже была унифицирована для вывода.Prolog: истинный/ложный вывод предиката члена?
Например member(1, [1,2,3]).
обеспечивает следующий вывод:
true ;
false.
Почему member
возвращение ложным после того, как уже выяснилось, что атом 1
действительно является членом списка [1,2,3]
?
Еще более запутанной для меня является следующий вывод:
?- member(1, [1,2,3,1]).
true ;
true.
какая реализация Пролога вы используете? –
Я использую Swi-Prolog. – daniel451
Улучшение - ['memberd/2'] (http://stackoverflow.com/a/21971885/772868). – false