На языке Пролог получаю ошибку о неизвестной процедуре
Написал код на языке Prolog, сохранил в файл my_program.pl и обратился к нему из корректной директории [my_program]
.
Получил предупреждение:
Warning: f:/program_training/функциональное и логическое программирование/interpreter/my_program.pl:9: Warning: Singleton variables: [T1]
Попробовал сделать запрос к предикату: ?- предшествует(apple, banana).
и получил ошибку:
ERROR: Unknown procedure: предшествует/2 (DWIM could not correct goal) ^ Exception: (4) setup_call_cleanup('$toplevel':notrace(call_repl_loop_hook(begin, 0)), '$toplevel':'$query_loop'(0), '$toplevel':notrace(call_repl_loop_hook(end, 0))) ?
Вот код:
% Определяем предикат "предшествует/2"
предшествует(A, B) :-
name(A, CodesA), % Преобразуем атом A в список кодов символов
name(B, CodesB), % Преобразуем атом B в список кодов символов
lexicographic_order(CodesA, CodesB).
% Вспомогательный предикат для проверки лексикографического порядка
lexicographic_order([], _). % Пустой список предшествует любому непустому списку
lexicographic_order([H1|T1], [H2|_]) :- % Если первый элемент первого списка меньше первого элемента второго
H1 < H2. % То A предшествует B
lexicographic_order([H1|T1], [H2|T2]) :- % Если равны, продолжаем сравнение
H1 = H2, % Сравниваем оставшиеся символы
lexicographic_order(T1, T2).
Вроде, и T1 используется (хотя предупреждение говорило о неиспользуемой переменной), и девятая строка, соответственно, с Т1 корректна. Не знаю, в чем проблема и почему цель некорректна (предполагаю, что виной все та же самая Т1).
Буду благодарен за идеи, что не так