2

これが明らかである場合は申し訳ありませんが、私は最近プロローグを学習しており、レコメンダー システムで使用するデータを読み込もうとしています。

 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']

これはなぜですか、私は何を間違っていますか?助けてくれてありがとう。

4

1 に答える 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ピリオドと改行が必要であることを思い出してください。また、変数は大文字にする必要があります。

于 2015-10-21T03:49:57.107 に答える