Предикат arg всегда должен использоваться с конкретизированными первым и вторым аргументами. Он применяется для доступа к конкретному аргументу структуры. Первый аргумент предиката arg определяет, какой аргумент структуры необходим. Второй аргумент определяет структуру, к аргументу которой необходим доступ. Пролог находит соответствующий аргумент и затем пытается сопоставить его с третьим аргументом предиката arg. Таким образом, цель arg(N,T,A) согласуется с БЗ, если N-й аргумент Т есть А. Давайте рассмотрим несколько целевых утверждений arg.
?- arg(2,'сын'('Джон','мать'('Джейн')),Х).
Х='мать'('Джейн').
?- arg(1,a+(b+c),Х). ?- arg(2,[a,b,c],Х).
Х=a Х=[b,c].
?- arg(1,a+(b+c),b).
no
|