使用Prolog读取输入

时间:2015-10-21 03:35:06

标签: prolog prolog-assert

很抱歉,如果这很明显,但我最近一直在学习prolog,并且正在尝试读取数据以用于推荐系统。

 gifter :- write('how much money?  '), read(money), nl,
          assert(will_spend(money)),
          write('Is the giftee classy?  '), read(classy), nl.

之前的代码读取用户希望花费的金额,然后询问Giftee的个性,但是,只询问第一个问题。它似乎到了新的行,但没有断言谓词:

  

? - will_spend(30)。   [警告:未定义的谓词:will_spend / 1']

为什么这样,我做错了什么?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分: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需要一个句号和一个换行符;变量也应该大写。