Книга: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ
X=..L
X=..L
Предикаты functor и arg дают один из способов создания произвольных структур и доступа к их аргументам. Предикат «=..» предоставляет альтернативный способ, полезный в том случае, когда необходимо одновременно получить все аргументы структуры или создать структуру по заданному списку ее аргументов. Целевое утверждение X=..L означает, что L есть список, состоящий из функтора структуры X, за которым следуют аргументы X. Такое целевое утверждение может быть использовано двумя способами, так же как и целевое утверждение functor. Если X уже имеет значение, то Пролог создает соответствующий список и пытается сопоставить его с L. Напротив, если X неконкретизировано, то список будет использован для формирования соответствующей структуры, которая станет значением X. В этом случае голова списка должна быть атомом (этот атом станет функтором X). Ниже приведено несколько примеров целевых утверждений, содержащих =..:
?- имя(а,b,с) =.. X.
X = [имя,а,b,с]
?- присоединить([А|В],С, [A|D]) =..L.
A = _2, В = _3, С = _4, D = _5, L = [присоединить,[_2|_3],_4,[_2|_5]]
?- [a,b,c,d] =..L.
L = ['.',a,[b,c,d]].
?- (a+b) =.. L.
L = [+,a,b].
?- (a+b) =..
[+,A,B] A = а, В = b
?- [a,b,c,d] =..
[A|B] A = '.', В = [a,[b,c,d]]
?- X =.. [a,b,c,d]
X = a(b,c,d).
?- X =.. [присоединить,[a,b,],[c],[a,b,c]].
X = присоединить([а,b],[с],[а,b,с])
Примеры использования предиката =.. приведены в разд. 7.12.
- 4.6.2 Variables View
- Функция strlen( )
- Часть I: опыт работы
- 3.6. Омонимы
- Секрет 2. Все дело в моменте!
- З.2.3. Сброс пароля администратора Windows 7 средствами самой системы
- Раздел 4. Кадры решают все! (От кого зависит безупречное исполнение Закона).
- Идеология навигации
- Исходный сюжет: улучшение водоснабжения в Иордании – для людей, силами людей, через партнерство
- Иерархия целей
- 2.5.6 команда return (выдать, вернуться)
- Как спасти человечество, а затем починить сливной бачок?