Чтение ввода с использованием Пролога
Извините, если это очевидно, но я недавно изучал пролог и пытаюсь прочитать данные для использования в рекомендательной системе.
gifter :- write('how much money? '), read(money), nl,
assert(will_spend(money)),
write('Is the giftee classy? '), read(classy), nl.
В предыдущем коде должно быть указано количество денег, которое пользователь желает потратить, а затем задать вопрос о личности одаренного, однако задается только первый вопрос. Кажется, чтобы перейти к новой строке, но не утверждать предикат:
? - will_spend (30). [ПРЕДУПРЕЖДЕНИЕ: неопределенный предикат: will_spend/1']
Почему это, что я делаю не так? Заранее спасибо за помощь.
1 ответ
Решение
gifter :- write('how much money? '), read(Money), nl,
assert(will_spend(Money)),
write('Is the giftee classy? '), read(Classy), nl,
assert(classy :- Classy = 'yes').
Затем,
?- gifter.
how much money? 127.
Is the giftee classy? yes.
true.
?- classy.
true.
?- will_spend(X).
X = 127.
Помни что read
хочет точку и новую строку; также переменные должны быть заглавными.