Главная
»
Информационные системы
»
Представление знаний в ИС
»
Язык Prolog. Синтаксис списков
Язык Prolog. Синтаксис списков
Списки – это последовательности символьных элементов, которые сами могут быть списками. Эти структуры данных очень полезны и популярны в символьном программировании и в ИИ. В прологе для записи списков используют символьный атом [] пустого списка и пары с точками – бинарные функциональные термы. Точка – имя функции. Например, списками являются: [] .(a,X) .(a,.b[]))
Рекурсивное определение:
· атом [] является списком и представляет пустой список,
· если L – список и Т – произвольный терм, то .(T,L) – список с головой Т и хвостом L.
Например, список, состоящий из элементов a,b и с есть терм вида .(a,.(b,.(c,[])))
Однако для списков существует несколько лучший синтаксис:
· символьный атом [] представляет пустой список,
· непустой список – это последовательность термов, разделённых запятыми и помещённых в квадратные скобки, причём термы любые, не обязательно атомы или списки.
Например, [a,b,c], [эта, маленькая(шапка),[для, кюре]]
Непустой список допускает две эквивалентные записи «с точками» и «в квадратных скобках». Например, [a]≡.(a,[]) [a,b,c]≡.(a,.(b,.(c,[])))
Представление деревьями - одно и то же для обоих обозначений (см. рис. 6.3). Обозначение [T|Q] представляет собой список с заголовком Т и хвостом Q. [A,B,C|Q] представляет собой список с заголовком А,В,С и хвостом Q. Эти обозначения, использованные для удовлетворения целей, годны для анализа списков:
? – [T|Q]=[a].
- - - > T=a, Q=[]
? – [A1,A2,_,A4|Q]=[прекрасная, маркиза, ваши, прекрасные, глаза]
- - - > А1= прекрасная, А2 = маркиза, А4 = прекрасные, Q=[глаза]
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.