Чтение ввода с использованием Пролога

Извините, если это очевидно, но я недавно изучал пролог и пытаюсь прочитать данные для использования в рекомендательной системе.

 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 хочет точку и новую строку; также переменные должны быть заглавными.

Другие вопросы по тегам