Списки. Не могу проверить, пуст ли список - Prolog
Формулировка задачи:
Здравствуйте. Пишу лабу по прологу. Задание такое вывести список Пьес. Я написал код но в нем есть запинка. Я не могу проверить пуст ли список и закончить рекурсивные вызовы в этой строке get_by_ganre(_,[],_):-write("ПУСТО"). Почему то выдается ошибка что 3 параметр предиката не может быть связан. Помогите исправить пожалуйста.
Вот код :
Предикат Connect для соединения списков
Предикат WriteList для вывода списка
алгоритм предиката get_by_ganre:
Перебрать каждый элемент списка который возвращает предикат fillMainList. И в случае если в базе данных имеется книга с названием элемента этого списка то добавить этот элемент в новый список в противном случае не добавлять .
Решение задачи: «Списки. Не могу проверить, пуст ли список»
textual
Листинг программы
domains list=string* predicates book(string,string) clauses book("pessa","name1"). book("verse","name2"). book("pessa","name3"). book("verse ","name4"). goal findall(X,book("pessa",X),L),write(L).
Объяснение кода листинга программы
domains
— это часть кода, которая определяет типы данных, используемых в программе. В данном случае, список представлен как строка, содержащая элементы типа строка.predicates
— это часть кода, которая определяет функции или отношения между переменными. В данном случае, определено два отношения:book(string,string)
, которое представляет собой отношениеявляется книгой
, где первый аргумент — название книги, а второй — имя автора.clauses
— это часть кода, которая содержит правила или утверждения, которые программа должна проверить. В данном случае, утверждены четыре правила, каждое из которых утверждает, что определенная книга является книгой определенного автора.goal
— это часть кода, которая определяет цель, которую должна достичь программа. В данном случае, программа должна найти все элементы, которые удовлетворяют отношениюbook(
pessa,X)
, и сохранить их в спискеL
. Затем, программа должна вывести этот список.- В данном коде нет прямой проверки на пустоту списка. Однако, если список
L
будет пустым, то программа не выведет никаких элементов и остановится после выполнения цели.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д