В то время как предикаты functor , arg и =.. используются для формирования произвольных структур и доступа к их аргументам, предикат name используется для работы с произвольными атомами. Предикат name сопоставляет атому список литер (их ASCII кодов), из которых состоит этот атом. Данный предикат можно использовать как для определения литер, составляющих указанный атом, так и для определения атома, содержащего заданные литеры. Целевое утверждение name(A, L) означает, что литеры, образующие атом А , являются элементами списка L . Если аргументу А уже присвоено значение, то Пролог создает список литер и пытается сопоставить его с L . В противном случае Пролог использует список L для создания атома, который станет значением А . Приведем примеры использования предиката name :
?- name(apple,X).
X = [97,112,112,108,100]
?- name(X,[97,l12,112,108,100]).
X = apple
?- name(apple,"apple").
да
?- name(apple,"pear").
нет
В разд. 9.5 предикат name используется для доступа к внутренней структуре слов английского языка, представляемых атомами Пролога.
|