Возврат правильного списка - Prolog
Формулировка задачи:
есть код
этот кусок обрабатывает ввод с клавиатуры типов пролога, сохранение в список, и проверку, чтоб в списке не было нестандастных типов.
потом правильный список должен вернуться обратно в программу, но возвращается тот список, которым я вводил первым. ВОПРОС, не подскажите, как сделать так, чтоб возвращался последний введенный мной список?
по сути проблема в том, что после того, как я наконец то введу правильный список, программа рекурсивно откатиться к самому первому, и проблема только в том, как правильно вставить предикат отсечения.
Решение задачи: «Возврат правильного списка»
textual
Листинг программы
список_типов([H|T]):-
readln(H),!,
список_типов(T).
список_типов([]).
не_стандартный_тип(H):-
H<>"symbol",
H<>"char",
H<>"string",
H<>"real",
H<>"integer",write("проверили типы"),nl.
%главный предикат обработки
правильный_список_типов(Список):-
список_типов(Список),write("после списка типов"),nl,
проверка_списка(Список),write(Список).
%рекурсивно проверяю, чтоб в списке не было ни одного не стандартного типа
проверка_списка([H|T]):-
not(не_стандартный_тип(H)),write("в проверка"),nl,
проверка_списка(T),write("после проверка типа"),nl.
проверка_списка([]):-write("конец списка"),nl.
проверка_списка(Список):-
bound(Список),
write("Найден нестандартный тип, повторите ввод аргументов!\n"),
правильный_список_типов(_),write("неправильный тип"),nl.