Глава 6
6. 1
найтитерм( Терм) :-
% Пусть текущий входной поток - это файл f
read( Терм), !,
% Текущий терм из f сопоставим с Терм'ом?
write( Терм);
% Если да - вывести его на терминал
найтитерм( Терм).
% В противном случае - обработать
6. 2
найтитермы( Терм) :-
read( ТекущийТерм),
обработать( ТекущийТерм, Терм).
обработать( end_of_file, _ ) :- !.
обработать( ТекущийТерм, Терм) :-
( not( ТекущийТерм = Терм), !;
% Термы несопоставимы
write( ТекущийТерм), nl),
% В противном случае вывести текущий терм
найтивсетермы( Терм).
% Обработать оставшуюся часть файла
6. 4
начинается( Атом, Символ) :-
name( Символ, [ Код]),
name( Атом, [Код | _ ]).
6. 5
plural( Существительное, Существительные) :-
name( Существительное, СписокКодов),
name( s, КодS),
конк( СписокКодов, КодS, НовыйСписокКодов),
name( Существительные, НовыйСписокКодов).