Составители:
Рубрика:
137
слож_мн(Pt, Qt,Rt).
/*(r)
слож_мн([х(Рс, Рр)|Pt],
[x(Qc.Pp)|Qt], Rt) :-
Re is Pc+Qc,
Rc =:= 0,
слож_мн(Pt, Qt, Rt).
Заметим, что в двух последних утверждениях проверка на равенство
осуществляется следующим образом: степени первых термов складываемых
утверждений обозначает одна и та же переменная
Pp
.
Списки как термы. В начале лекции мы упомянули о том, что список
представляется с помощью терма. Такой терм имеет функтор '.', два
аргумента и определяется рекурсивно. Первый аргумент является головой
списка, а второй — термом, обозначающим хвост списка. Пустой список
обозначается
[]
. Тогда список
[а, b]
эквивалентен терму
.(а,.(b, []))
.
Таким образом, из списков, как и из термов, можно создавать
вложенные структуры. Поэтому выражение
[[a, b], [c, d], [a], a]
есть правильно записанный список, и на запрос:
?- [Н|Т]=[[а, b], с].
Пролог дает ответ:
Н=[а, b] Т=[с]
В основу главы 14 положен материал учебного курсу [7].
слож_мн(Pt, Qt,Rt).
/*(r)
слож_мн([х(Рс, Рр)|Pt],
[x(Qc.Pp)|Qt], Rt) :-
Re is Pc+Qc,
Rc =:= 0,
слож_мн(Pt, Qt, Rt).
Заметим, что в двух последних утверждениях проверка на равенство
осуществляется следующим образом: степени первых термов складываемых
утверждений обозначает одна и та же переменная Pp.
Списки как термы. В начале лекции мы упомянули о том, что список
представляется с помощью терма. Такой терм имеет функтор '.', два
аргумента и определяется рекурсивно. Первый аргумент является головой
списка, а второй — термом, обозначающим хвост списка. Пустой список
обозначается []. Тогда список [а, b] эквивалентен терму .(а,.(b, [])).
Таким образом, из списков, как и из термов, можно создавать
вложенные структуры. Поэтому выражение
[[a, b], [c, d], [a], a]
есть правильно записанный список, и на запрос:
?- [Н|Т]=[[а, b], с].
Пролог дает ответ:
Н=[а, b] Т=[с]
В основу главы 14 положен материал учебного курсу [7].
137
Страницы
- « первая
- ‹ предыдущая
- …
- 136
- 137
- 138
- 139
- 140
- …
- следующая ›
- последняя »
