Предикаты functor и arg могут использоваться в ситуации, когда возможные структуры уже известны. Это связано с тем, что структура может иметь так много аргументов, что просто неудобно каждый раз перечислять их все. Рассмотрим пример, в котором структуры используются для описания книг. Пусть результирующая структура имеет 14 компонентов.
'является_книгой'('книга'(_,_,...,_)).
'название'('книга'(Т,_,_,...,_),Т).
'автор'('книга'(_,А,_,...,_),А).
Эту информацию с использованием предикатов functor и arg можно записать следующим образом:
'является_книгой'(Х):- functor(Х,'книга',14).
'название'(Х,Т):-'является_книгой'(Х),arg(1,Х,Т).
'автор'(Х,А):- 'является_книгой'(Х),arg(2,Х,Т).
|