Глава 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( Существительные, НовыйСписокКодов).