Переменные в прологе:
Все переменные и аргументы являются локальными по объему для предиката, в котором они объявлены (он же впервые используется). Разумеется, за исключением того, что переменные могут передаваться в качестве аргументов (по существу, «по ссылке») другому предикату.
Переменные пролога являются только «переменными», пока не будут связаны (объединены) с чем-то другим. В этот момент они перестают быть переменными и становятся едиными с тем, с чем они были объединены. Отсюда и использование термина «объединение»: объединяться - значит стать единым целым.
Откат, конечно, отменяет любое объединение, которое могло произойти, возвращая вещи к status quo ante как бы.
Специальная переменная _
является «анонимной переменной». Каждое использование, даже в пределах одного и того же предложения предиката, является независимым. Например, учитывая факты
letter(a).
letter(b).
letter(c).
digit(1).
digit(2).
digit(3).
предикат:
foo :- letter(A),number(A).
терпит неудачу, в то время как
foo :- letter(_),number(_).
удастся (9 раз, с возвратом).