Мне нужно написать простую экспертную систему на Прологе для планирования занятий. В этой части кода я хочу, чтобы этот пользователь добавил в систему инструктора. Для этого я читаю два входных значения, но получаю эту ошибку.
addinstructor() :-
read(id),
read(courseid),
assert(instructor(id, courseid)),
write("added").
Запрос:
?- addinstructor().
5
cse102.
Затем я получаю ожидаемую оператором ошибку. Как мне исправить это, чтобы мой код работал?
addinstructor
не нужны ни в определении, ни в запросе, который его вызывает. Я бы порекомендовал вам удалить их. Переменные пролога ДОЛЖНЫ начинаться с заглавной буквы;id
иcourseid
- это атомы, а не переменные, и это проблема для вашего кода. Кроме того,assert/1
является нестандартным, используйтеasserta/1
илиassertz/1
, которые дают вам контроль над порядком фактов в базе данных. - person Daniel Lyons   schedule 14.12.2018