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